Fügen Sie auf vielen Seiten in Adobe InDesign eine Variable ein, die beim Drucken von PDF ausgefüllt wird

Ich habe auf vielen Arbeitsblattseiten ein Feld "Name", das beim Drucken automatisch mit dem Namen eines bestimmten Schülers ausgefüllt werden soll. Ich weiß, dass ich in InDesign einfach eine Musterseite erstellen kann, die diese Arbeitsblattseiten verwenden, und dort den Namen des Schülers eintragen kann.

Ich hätte gerne ein PDF der Arbeitsblattseiten, wo ich einfach den Namen in den PDF-Viewer eingeben kann, anstatt dies über InDesign tun zu müssen. Ist das möglich?

Antworten (4)

Sie können es mit Skripten tun. Ich habe dieses Skript in InDesign CS5 auf einem Mac ausprobiert und getestet. Was Sie tun müssen, ist

  • Wählen Sie das Textfeld aus, in das der Name der Schüler eingefügt werden soll
  • Erweitern Sie dann unter dem Bedienfeld „Ebenen“ die Ebene, in der sie sich befindet, und ändern Sie den Namen des Textfelds, indem Sie langsam darauf doppelklicken, und geben Sie „NAME“ ein.
  • Kopieren Sie das folgende Skript und fügen Sie es in Notepad oder Textedit ein
  • Bearbeiten Sie die erste Zeile zu var students = ["First Student", "Second Student"];usw. (Hoffentlich dauert dies nicht länger, als wenn Sie das Skript nicht verwenden würden)
  • Speichern Sie als MakePdfForEachStudent.jsx und speichern Sie es in, /Applications/Adobe InDesign CS5.5/Scripts/Scripts Panel/Samples/Javascriptwenn Sie einen Mac verwenden (ich kann mich nicht erinnern, wo es sich unter Windows befindet).
  • Gehen Sie zu Fenster > Dienstprogramme > Skripts und wählen Sie MakePdfForEachStudent.jsx aus
  • Folgen Sie dem Prozess

Hoffe das hilft/funktioniert. Ich kann diese Antwort später verbessern.

// 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, herzlich willkommen bei GD.SE. Sie sind offiziell zum InDesign Script Guru ernannt worden. :) (Im Ernst, du bist sofort eine große Bereicherung für unsere Community, also hoffe ich, dass du uns oft besuchen wirst!)
Danke Alan, wird es sicher tun. Scripting mit der Creative Suite ist mein Spezialgebiet
Und natürlich haben Sie diese erstaunliche Scripter-Eigenschaft, gegenüber vorbeikommenden Fremden, streunenden Tieren und Vögeln, die aus ihren Nestern gefallen sind, super hilfsbereit zu sein. Es muss etwas im Code sein ... :)

Sie könnten einfach eine Kopfzeile mit dem Namen des Schülers hinzufügen. Das würde automatisch auf jeder Seite erscheinen. Ich kann mir keinen schnelleren Weg vorstellen, dies in Acrobat ohne weiteres zu tun, wenn Sie mit vielen Seiten zu tun haben.

Sie können im Voraus eine Kopfzeile Aktion ( ) mit allem außer dem Namen des Schülers einrichten Tools > Action Wizardund dann den Namen für jeden Drucklauf hinzufügen.

Tut mir leid, es hat eine Weile gedauert, bis ich geantwortet habe, aber das ist es, was wir gerade gemacht haben. Danke für den Tipp!

PDFs unterstützen ausfüllbare Formularfelder, daher ist dies in Acrobat ziemlich einfach. Wenn Sie jedoch InDesign verwenden möchten, müssen Sie normalerweise das Formular entwerfen und dann mit Acrobat die Platzhalterelemente durch tatsächliche Formularfelder ersetzen. Auf dieser Seite wird der Arbeitsablauf beschrieben.

Glücklicherweise verfügt Acrobat 9, wie auf derselben Seite erwähnt, über eine automatische Erkennungsfunktion für Formularfelder. Adobe hat eine Reihe von Richtlinien veröffentlicht , die befolgt werden müssen, um erkennbare Formularfelder zu erstellen. Außerdem finden Sie hier ein PDF mit Best Practices für die Formularfelderkennung .


Bearbeiten:

Wenn Sie einen Feldwert an mehreren Stellen wiederholen müssen, ermöglichen Ihnen sowohl LifeCycle als auch Acrobat das einfache Duplizieren oder Kopieren und Einfügen des Felds an verschiedenen Stellen/Seiten . Stellen Sie sicher, dass Sie die Bindung in LifeCycle auf „Global“ setzen, damit alle Felder den gleichen Wert anzeigen. In Acrobat müssen Sie nur sicherstellen, dass alle Felder denselben Namen haben.

Ich glaube nicht, dass ich das brauche. Wenn ich nur 1 Namensfeld hätte, würde dies funktionieren. Aber ich habe VIELE Namensfelder, die alle auf einmal ausgefüllt werden müssen.

Großartige Arbeit, lese majeste.

Wenn Sie viele Namensfelder haben und alle den gleichen Wert benötigen, hat der neueste Acrobat ein Viewer-Panel, das die erkannten Formularfelder auflistet und ihnen eine Nummer mit einem Punkt für jedes Feld gibt, das die gleiche Erkennung hat. Sie müssen sie alle zusammenbringen und sie einzeln in den gleichen Namen umbenennen, was wirklich nicht viel hilft. Wenn Sie jedoch alle Dokumente mit demselben Schüler in einer Reihe zusammenhalten können, können Sie ein Javascript verwenden, um die Feldnamen für eine Reihe von Seiten zu ändern, indem Sie den Feldnamen mit einer Zeichenfolge abgleichen, und dann die Feldeinrichtungsdaten (alle Programmierung des Feldes) in ein neues Feld umzubenennen, ihm den gleichen Namen wie dem Vornamensfeld zu geben, einschließlich der Stelle auf der Seite, und dann das alte Feld zu löschen, um es aus der Seitenverarbeitung zu entfernen. Sie müssen eine Variable einfügen, für die Seiten gelesen werden sollen, Ich würde vorschlagen, einen this.pagenumber + pagetoread-Ansatz zu wählen, damit Sie einfach verschiedene Seitensätze auswählen können. Wenn Sie die Anzahl der Schüler kennen, können Sie das Skript für die Seiten jedes Schülers ausführen. Ich bin kein Programmierer, also ist die Sprache nicht in meiner Toolbox, aber die Designstücke sind es. Ich bin Prozessdesigner. Grundsätzlich verwende ich die grundlegenden Teststrukturen, um Prozesse zu erstellen, andere übersetzen das in Programmierung. Gelegentlich schlage ich Beispiele für jedes Stück nach, nehme dann Änderungen vor und binde es zusammen, um funktionierende Skripte zu erhalten. Gemäß der API-Bibliothek können Sie auf die Felder zugreifen, sie erstellen, kopieren und löschen. Sie müssen nur die Datentypen zwischen den Datenstücken abgleichen, die das Feld definieren. Suchen Sie in den adobe.com-Foren nach der API und Beispielen der Stücke, mit denen Sie spielen möchten, und verwenden Sie dann Google, um Beispiele für den Rest zu finden. Wenn Sie sie richtig zusammensetzen, können Sie ein Popup-Feld erstellen, in das Sie jeden Namen eingeben, der dann nach Bedarf auf jedem Seitensatz ausgefüllt wird. Wenn es sich um dieselben Seiten handelt, können Sie auch damit spielen. Ich habe Skripte erstellt, die mithilfe von Popups eine Reihe von Daten in Felder füllen, dann ein separates Dokument mit dem Namen als Teil davon speichern und dann für den nächsten Namen zurücksetzen, bis ich ihm sage, dass er abbrechen soll. Dann unterbricht selbst das Speichern des Dokuments die Programmierung nicht, und ich habe jeden Satz in einem Ordner gespeichert. Ich kann sie mit einer einzigen in Acrobat integrierten Operation kombinieren oder so belassen. Ich habe Skripte erstellt, die mithilfe von Popups eine Reihe von Daten in Felder füllen, dann ein separates Dokument mit dem Namen als Teil davon speichern und dann für den nächsten Namen zurücksetzen, bis ich ihm sage, dass er abbrechen soll. Dann unterbricht selbst das Speichern des Dokuments die Programmierung nicht, und ich habe jeden Satz in einem Ordner gespeichert. Ich kann sie mit einer einzigen in Acrobat integrierten Operation kombinieren oder so belassen. Ich habe Skripte erstellt, die mithilfe von Popups eine Reihe von Daten in Felder füllen, dann ein separates Dokument mit dem Namen als Teil davon speichern und dann für den nächsten Namen zurücksetzen, bis ich ihm sage, dass er abbrechen soll. Dann unterbricht selbst das Speichern des Dokuments die Programmierung nicht, und ich habe jeden Satz in einem Ordner gespeichert. Ich kann sie mit einer einzigen in Acrobat integrierten Operation kombinieren oder so belassen.

Willkommen bei Grafikdesign SE. Können Sie Ihre Antwort bitte so bearbeiten , dass sie eine gewisse Struktur (z. B. Absätze) hat und weniger Gedankenfluss ist? So wie es aussieht, ist es sehr anstrengend zu lesen.