Wer im Besitz der kostenpflichtigen Vollversion von Adobe Acrobat Pro ist, kann mit dem Aktionsassistenten etliche Aufgaben automatisieren. Es gibt einige vorgefertigte Tools, aber man kann auch per Javascript eigene Lösungen für spezielle Aufgaben entwickeln, beispielsweise um Fußzeilen in PDFs einzusetzen.
Als Beispiel greife ich die Lösung aus dem Artikel „Adobe Reader: Dateinamen in PDF-Dokumenten auf jede Seite drucken“ aus, die ein Javascript vorstellt, über das sich nachträglich Text in ein PDF einbauen lässt, etwa für eine Fußzeile mit Datum, Dateinamen und/oder Seitenzahlen. Der Aktionsassistent von Adobe Acrobat Pro bietet von Haus aus bereits ein Tool für „Kopf- und Fußzeilen hinzufügen“. Man kann beliebigen Text sowie Seitenzahlen und Datum angeben. Weitere Infos, etwa Speicherpfad oder Dateiname sind nicht vorgesehen.
Das Fußzeilen-Script für den Adobe Reader hat den Nachteil, dass man jede Datei, die man bearbeiten will, öffnen und nach der Anpassung speichern muss. Der Adobe Reader bietet keine Möglichkeit, mehrere Dateien zu öffnen, zu bearbeiten und dann wieder zu speichern. Mit dem Aktionsassistenten von Adobe Acrobat Pro ist jedoch auch eine Batch-Verarbeitung möglich.
Eine alternative Lösung ohne Adobe Acrobat Pro ist im Artikel „Fußzeilen in PDFs per Batch-Verarbeitung erstellen“ zu finden. Wer Fußzeilen über den kostenlosen Acrobat Reader in einzelne PDF-Dateien einsetzen will, liest den Artikel „Adobe Reader: Dateinamen in PDF-Dokumenten auf jede Seite drucken“.
Aktion in Adobe Acrobat Pro erstellen
So erstellen Sie eine Aktion, die im Adobe Acrobat Pro per Javascript Fußzeilen in PDFs einbaut:
Schritt 1: Klicken Sie in Adobe Acrobat Pro auf „Tools“ und ganz unten unterhalb von „Anpassen“ auf „Aktionsassistent“. In der neuen Symbolleiste klicken Sie auf „Neue Aktion“.
Schritt 2: Unter „Zu verarbeitende Dateien“ im rechten Teil des Fensters wählen Sie unter „Standardoption“ den Eintrag „Ordner hinzufügen“. Wenn Sie die Aktion starten, können Sie dann einen Arbeitsordner wählen, in dem die Dateien liegen, die Sie mit Fußzeilen versorgen wollen. Oder Sie klicken auf das Ordnersymbol über „Standardoption“ und wählen einen Standardordner, aus dem Sie alle PDF-Dateien verarbeiten wollen.
Schritt 3: Im linken Teil des Fensters gehen Sie auf „Weitere Tools“ und klicken auf „JavaScript ausführen“. Über die Schaltfläche zwischen den beiden Bereichen des Fensters fügen Sie die Funktion als Aktionsschritt in die Liste ein. Klicken Sie auf „Einstellungen angeben“. Es öffnet sich ein Editor in Adobe Reader Pro, in den Sie das Script für Fußzeilen aus diesem Artikel einfügen. Es entspricht dem aus dem Artikel „Adobe Reader: Dateinamen in PDF-Dokumenten auf jede Seite drucken“, es fehlen nur die Anweisungen, über die das Menü erstellt wird. Das Script startet, wenn die Aktion ausgeführt wird. Die gewünschte Funktion steuern Sie über den Aufruf von „SetFooter(N)“. Setzen Sie Kommentarzeichen („//“) vor die Aufrufe, die Sie nicht verwenden wollen und entfernen Sie das Kommentarzeichen vor dem gewünschten Aufruf im Beispiel „SetFooter(1)“.
Wenn Sie unterschiedliche Funktionen für bestimmte Dokumente benötigen, erstellen Sie dafür jeweils eine neue Aktion und passen das Script je nach Wunsch an. Klicken Sie auf „OK“, um das Script zu speichern.
Unterhalb von „Einstellungen angeben“ entfernen Sie das Häkchen vor „Benutzeraufforderung“. Ist es gesetzt, fragt Adobe Acrobat Pro ansonsten bei jedem Dokument nach, ob es gespeichert werden soll.
Schritt 4: Gehen Sie im linken Bereich des Fensters auf „Speichern und exportieren“ und fügen Sie „Speichern“ als Aktionsschritt hinzu. Im rechten Teil des Fensters klicken Sie auf das Icon rechts neben „Speichern“ und wählen „In lokalem Ordner speichern“. Danach wählen Sie einen Ausgabeordner, in dem Sie die geänderten Dokumente ablegen wollen. Nach einem Klick auf „Einstellungen abgeben“ lassen sich Optionen für die Dateinamen angeben. Sie können beispielsweise Text zum Dateinamen hinzufügen.
Im Bereich über den Aktionen steht „Unbenannt“. Wenn Sie möchten, ändern Sie die Beschriftung nach einem Klick darauf in „Fußzeilen“.
Zum Abschluss klicken Sie auf „Speichern“ und vergeben einen aussagekräftigen Namen für die Aktion.
Bitte beachten Sie: Es gibt keine Option, die vor dem Überschreiben warnt, wenn eine Datei gleichen Namens sich bereits im Ausgabeordner befindet. Verwenden Sie als Ziel daher immer einen leeren Ordner.
Wenn Sie die Aktion starten möchten, rufen Sie unter „Tools“ den Aktionsassistenten auf und wählen die Aktion unter „Aktionsliste“. Mit einem Klick auf „Anfang“ starten Sie die Aktion.
/* Footnotes */
/* Dieses Script setzt Fußzeilen in PDF-Dokumente ein */
/* Starten Sie es als Aktion in Adobe Reader Pro */
console.println("Begin Job Code");
//Datum, Uhrzeit, Dateiname und Seitenzahl (Seite X/X)
SetFooter(1)
//Datum, Uhrzeit, Dateiname
//SetFooter(2)
//nur Seitenzahlen (Seite X/X)
//SetFooter(3)
//nur Dateiname ohne Erweiterung
//SetFooter(4)
//Dateiname nur erste Seite
//SetFooterFirstPage()
//Pfad in Windows-Pfad umwandeln
function PathToWinPath(pathArray)
{
var WinPath;
if (pathArray[1].length==1) {
//nur ein Zeichen? Also (hoffentlich) lokales Laufwerk
WinPath = pathArray[1]+":";
} else {
//für Netzwerklaufwerke \\Server\Freigabe
WinPath = "\\\\" + pathArray[1];
};
for (var i = 2; i < pathArray.length; i++)
{
WinPath = WinPath + "\\" + pathArray[i];
}
return WinPath;
}
//Pfad und Dateiname nur erste Seite setzen
function SetFooterFirstPage()
{
var pathArray = this.path.split("/");
var sFilePath=PathToWinPath(pathArray); //Pfad im Windows-Format
var p = 0; //0=erste Seite
var aRect = this.getPageBox("Crop",p); //Seitengröße
var TotWidth = aRect[2] - aRect[0]; //Breite der Seite
var fd=addTextField(this,sFilePath,p,TotWidth);
}
function SetFooter(ARG)
{
var pathArray = this.path.split("/");
//var FileNM = this.path //Dateiname mit Pfad plattformunabhängiges Format
//var FileNM = PathToWinPath(pathArray); //Pfad im Windows-Format
var FileNM =this.documentFileName //nur Dateiname
var FileNMNoExt = FileNM.substr(0,FileNM.lastIndexOf(".")); //nur Dateiname ohne Erweiterung (ohne .PDF)
var AcDate = new Date();
var AcDateFormat = "dd.mm.yyyy HH:MM"
//var AcDateFormat = "yyyy/mm/dd"
for (var p = 0; p < this.numPages; p++)
{
var aRect = this.getPageBox("Crop",p);
var TotWidth = aRect[2] - aRect[0]
//Datum, Uhrzeit, Dateiname und Seitenzahl (Seite X/X)
if (ARG==1)
{ var FieldValue="Datum: " + util.printd(AcDateFormat, AcDate) + " (" + FileNM +")";
FieldValue=FieldValue + "\nSeite: " + String(p+1)+ "/" + this.numPages; //Seitenzahlen
var fd=addTextField(this,FieldValue,p,TotWidth);
}
//Datum, Uhrzeit, Dateiname
if (ARG==2)
{ var FieldValue="Datum: " + util.printd(AcDateFormat, AcDate) + " (" + FileNM +")";
var fd=addTextField(this,FieldValue,p,TotWidth);
}
//nur Seitenzahlen (Seite X/X)
if (ARG==3)
{ var FieldValue="Seite: " + String(p+1)+ "/" + this.numPages; //Seitenzahlen
var fd=addTextField(this,FieldValue,p,TotWidth);
}
//nur Dateiname ohne Erweiterung
if (ARG==4)
{
var fd=addTextField(this,FileNMNoExt,p,TotWidth);
}
} //end for loop
}
//Textfeld in die Fußzeile einfügen
function addTextField(myDoc,myTextValue, myPageNum, myPageWidth)
{
var fd = myDoc.addField("xftDate"+myPageNum+1, "text", myPageNum, [30,15, myPageWidth-30,35]);
fd.multiline=true; //Zeilenumbruch erlauben, Seitenzahl zweite Zeile
fd.textSize=6; //Font-Größe
fd.readonly = true; //schreibgeschützt
fd.alignment="center"; //Ausrichtung zentriert
//fd.alignment="left"; //Ausrichtung links
//fd.alignment="right"; //Ausrichtung rechts
//fd.fillColor = color.yellow; //Hintergundfarbe für das Textfeld
//fd.textColor=color.red; // Textfarbe
fd.value=myTextValue;
return fd
//Anmerkungen zur Positionierung:
//addField: Parameters: cName, cFieldType, nPageNum, oCoords, Returns: object
//oCoords: upper-left x , upper-left y, lower-right x, lower-right y
//addField erstellt ein Text-Feld am unteren Seitenrand, bestimmt
//durch die angegebenen Koordinaten
//es hat einen Abstand von 30 Pixeln vom linken Seitenrand und 15 vom unteren Rand
//das Feld nimmt die gesamte Breite des Dokuments ein, mit einem Abstand von
//30 Pixeln links und rechts (myPageWidth-30).
//Es ist 20 Pixel hoch (35-15)
}
Schreibe einen Kommentar