Inserte una variable en muchas páginas en Adobe InDesign para completar al imprimir PDF

Tengo un campo "Nombre" en muchas páginas de la hoja de trabajo que quiero que se complete automáticamente con el nombre de un estudiante en particular al imprimir. Sé que en InDesign puedo simplemente crear una página maestra que usen esas hojas de trabajo y completar el nombre del estudiante allí.

Me gustaría tener un PDF de las páginas de la hoja de trabajo donde solo ingreso el nombre en el visor de PDF en lugar de tener que hacerlo a través de InDesign. es posible?

Respuestas (4)

Puedes hacerlo con secuencias de comandos. Probé y probé este script en InDesign CS5 en una Mac. Lo que debe hacer es

  • Seleccione en qué cuadro de texto desea que vaya el nombre de los estudiantes
  • Luego, debajo del panel 'capas', expanda la capa en la que se encuentra y cambie el nombre del cuadro de texto haciendo doble clic lento e ingrese "NOMBRE".
  • Copie y pegue el siguiente script en el bloc de notas o edición de texto
  • Edite la primera línea para var students = ["First Student", "Second Student"];etc. (Esperemos que esto no tome más tiempo que si no usara el script)
  • Guárdelo como MakePdfForEachStudent.jsx y guárdelo /Applications/Adobe InDesign CS5.5/Scripts/Scripts Panel/Samples/Javascriptsi está en Mac (no recuerdo dónde está en Windows)
  • Vaya a Ventana > Utilidades > Scripts y seleccione MakePdfForEachStudent.jsx
  • Sigue el proceso

Espero que esto ayude/funciona. Puedo mejorar esta respuesta más tarde.

// An InDesign CS5 javascript macro for exporting PDFs with different student names.

var students = ["Peter", "Lois", "Meg", "Chris", "Brian"];
var studentsNameTextLayer = "NAME";

// DON'T EDIT BELOW THIS LINE

// Display a "choose folder" dialog box.
if (app.documents.length != 0) {
    var myFolder = Folder.selectDialog ("Choose a Folder");
    if (myFolder != null) {
        myExportPages(myFolder);
    }
} else {
    alert("Please open a document and try again.");
}

function myExportPages(myFolder)
{
    var studentName, myFilePath, myFile;

    var myDocument      = app.activeDocument;
    var myDocumentName  = myDocument.name;
    var theDialog       = app.dialogs.add();
    var myPageName      = myDocument.pages.item(0).name;
    var textBoxName     = myDocument.pages.item(0).textFrames.item(whichTextBox);

    with (theDialog.dialogColumns.add().dialogRows.add()) {

        staticTexts.add({
            staticLabel: "Base name:"
        });

        var myBaseNameField = textEditboxes.add({
            editContents : myDocumentName, 
            minWidth : 160
        });
    }

    var myResult = myDialog.show({
        name : "ExportPages"
    });

    if (myResult == true) {
        var myBaseName = myBaseNameField.editContents;

        // Remove the dialog box from memory.
        theDialog.destroy();

        for (var loopCounter = 0; loopCounter < students.length; loopCounter++) {
            studentName = students[loopCounter];

            studentsNameTextLayer.contents = studentName;

            app.pdfExportPreferences.pageRange = myPageName;

            var matchColon  = new RegExp(":","gi");

            myPageName  = myPageName.replace(matchColon, "_");
            myFilePath  = myFolder + "/" + myBaseName + "_" + myPageName + "_" + studentName + ".pdf";
            myFile      = new File(myFilePath);

            myDocument.exportFile(ExportFormat.pdfType, myFile, false);
        }

    } else {
        theDialog.destroy();
    }
}
Adam, bienvenido a GD.SE. Se le nombra oficialmente gurú del script de InDesign. :) (En serio, eres inmediatamente un gran activo para nuestra comunidad, ¡así que espero que nos visites a menudo!)
Gracias Alan, seguro que sí. Scripting con Creative Suite es mi área de especialización
Y, claramente, tienes ese increíble rasgo de guionista de ser de gran ayuda para los extraños que pasan, los animales callejeros y los pájaros que se han caído de sus nidos. Debe ser algo en el código... :)

Simplemente puede agregar un encabezado con el nombre del estudiante. Eso aparecería automáticamente en cada página. No puedo pensar en una forma más rápida de hacer esto en Acrobat de inmediato, si está tratando con muchas páginas.

Puede configurar una Acción de encabezado ( Tools > Action Wizard) con anticipación con todo menos el nombre del estudiante, luego agregue el nombre para cada tirada de impresión.

Lo siento, tardé un poco en responder, pero esto es lo que acabamos de hacer ahora. ¡Gracias por el consejo!

Los archivos PDF admiten campos de formulario rellenables, por lo que esto es bastante fácil de hacer en Acrobat. Pero si desea usar InDesign, normalmente necesita diseñar el formulario y luego usar Acrobat para reemplazar los elementos de marcador de posición con campos de formulario reales. Esta página describe el flujo de trabajo.

Afortunadamente, como se menciona en la misma página, Acrobat 9 tiene una función de detección automática de campos de formulario. Adobe ha publicado un conjunto de pautas a seguir para crear campos de formulario reconocibles. Además, aquí hay un PDF de las mejores prácticas de reconocimiento de campos de formulario .


Editar:

Si necesita repetir el valor de un campo en varios lugares, tanto LifeCycle como Acrobat le permiten simplemente duplicar o copiar y pegar el campo en diferentes ubicaciones/páginas . Asegúrese de establecer el enlace en "Global" en LifeCycle para que todos los campos muestren el mismo valor. En Acrobat, solo necesita asegurarse de que todos los campos tengan el mismo nombre.

No creo que esto sea lo que necesito. Si solo tuviera 1 campo Nombre, esto funcionaría. Pero tengo MUCHOS campos de Nombre que deben completarse todos a la vez.

Gran trabajo Lesa majestad.

Si tiene muchos campos de nombre y todos necesitan el mismo valor, la versión más reciente de Acrobat tiene un panel de visualización que enumera los campos de formulario reconocidos y les dará un número con un punto para cada campo que tenga el mismo reconocimiento. Tienes que juntarlos a todos y cambiar el nombre de cada uno al mismo nombre uno a la vez, lo que realmente no ayuda mucho. Sin embargo, si puede mantener todos los documentos con el mismo estudiante juntos en una fila, puede usar un javascript para modificar los nombres de los campos para un número de páginas haciendo coincidir el nombre del campo con una cadena, luego copie los datos de configuración del campo (todos los programación del campo) a un campo nuevo, dándole el mismo nombre que el campo de nombre, incluida la ubicación en la página, y luego elimine el campo antiguo para eliminarlo del procesamiento de la página. Tendrá que incluir una variable para qué páginas leer, Sugeriría adoptar un enfoque this.pagenumber + pagestoread para que pueda seleccionar diferentes conjuntos de páginas. Si conoce el número de alumnos, puede ejecutar el script para el conjunto de páginas de cada alumno. No soy programador, por lo que el lenguaje no está en mi caja de herramientas, pero las piezas de diseño sí. Soy diseñador de procesos. Básicamente, uso las estructuras de prueba básicas para construir procesos, otros traducen eso a la programación. Ocasionalmente, busco ejemplos de cada pieza, luego hago cambios y los combino para obtener guiones que funcionen. Según la biblioteca API, puede acceder a los campos, crearlos, copiarlos y eliminarlos. Solo tiene que hacer coincidir los tipos de datos entre los datos que definen el campo. Consulte los foros de adobe.com para ver la API y los ejemplos de las piezas con las que desea jugar, luego use Google para encontrar ejemplos del resto. júntelos correctamente y podrá crear un cuadro emergente donde complete cada nombre, que luego se completa en cada conjunto de páginas según lo requiera. Si son todas el mismo conjunto de páginas, también puedes jugar con eso. Creé scripts que completan un conjunto de datos en campos usando ventanas emergentes, luego guardo un documento separado con el nombre como parte de él y luego lo restablezco para el siguiente nombre hasta que le digo que lo cancele. Luego, incluso guardar el documento no rompe la programación, y tengo cada conjunto guardado en una carpeta. Puedo combinarlos o dejarlos así con una sola operación integrada en acrobat. Creé scripts que completan un conjunto de datos en campos usando ventanas emergentes, luego guarda un documento separado con el nombre como parte de él y luego se reinicia para el siguiente nombre hasta que le digo que lo cancele. Luego, incluso guardar el documento no rompe la programación, y tengo cada conjunto guardado en una carpeta. Puedo combinarlos o dejarlos así con una sola operación integrada en acrobat. Creé scripts que completan un conjunto de datos en campos usando ventanas emergentes, luego guarda un documento separado con el nombre como parte de él y luego se reinicia para el siguiente nombre hasta que le digo que lo cancele. Luego, incluso guardar el documento no rompe la programación, y tengo cada conjunto guardado en una carpeta. Puedo combinarlos o dejarlos así con una sola operación integrada en acrobat.

Bienvenido a Diseño Gráfico SE. ¿Puede editar su respuesta para que tenga cierta estructura (p. ej., párrafos) y tenga menos flujo de pensamiento? Tal como está, es muy agotador de leer.