Adobe Acrobat Pro: Fußzeilen mit Javascript-Aktion erstellen

Wer im Besitz der kos­ten­pflich­ti­gen Voll­ver­si­on von Ado­be Acro­bat Pro ist, kann mit dem Akti­ons­as­sis­ten­ten etli­che Auf­ga­ben auto­ma­ti­sie­ren. Es gibt eini­ge vor­ge­fer­tig­te Tools, aber man kann auch per Java­script eige­ne Lösun­gen für spe­zi­el­le Auf­ga­ben ent­wi­ckeln, bei­spiels­wei­se um Fuß­zei­len in PDFs ein­zu­set­zen.

Als Bei­spiel grei­fe ich die Lösung aus dem Arti­kel „Ado­be Rea­der: Datei­na­men in PDF-Doku­men­ten auf jede Sei­te dru­cken“ aus, die ein Java­script vor­stellt, über das sich nach­träg­lich Text in ein PDF ein­bau­en lässt, etwa für eine Fuß­zei­le mit Datum, Datei­na­men und/oder Sei­ten­zah­len. Der Akti­ons­as­sis­tent von Ado­be Acro­bat Pro bie­tet von Haus aus bereits ein Tool für „Kopf- und Fuß­zei­len hin­zu­fü­gen“. Man kann belie­bi­gen Text sowie Sei­ten­zah­len und Datum ange­ben. Wei­te­re Infos, etwa Spei­cher­pfad oder Datei­na­me sind nicht vor­ge­se­hen.

Das Fuß­zei­len-Script für den Ado­be Rea­der hat den Nach­teil, dass man jede Datei, die man bear­bei­ten will, öff­nen und nach der Anpas­sung spei­chern muss. Der Ado­be Rea­der bie­tet kei­ne Mög­lich­keit, meh­re­re Datei­en zu öff­nen, zu bear­bei­ten und dann wie­der zu spei­chern. Mit dem Akti­ons­as­sis­ten­ten von Ado­be Acro­bat Pro ist jedoch auch eine Batch-Ver­ar­bei­tung mög­lich.

Eine alter­na­ti­ve Lösung ohne Ado­be Acro­bat Pro ist im Arti­kel „Fuß­zei­len in PDFs per Batch-Ver­ar­bei­tung erstel­len“ zu fin­den. Wer Fuß­zei­len über den kos­ten­lo­sen Acro­bat Rea­der in ein­zel­ne PDF-Datei­en ein­set­zen will, liest den Arti­kel „Ado­be Rea­der: Datei­na­men in PDF-Doku­men­ten auf jede Sei­te dru­cken“.

Aktion in Adobe Acrobat Pro erstellen

So erstel­len Sie eine Akti­on, die im Ado­be Acro­bat Pro per Java­script Fuß­zei­len in PDFs ein­baut:

Schritt 1: Kli­cken Sie in Ado­be Acro­bat Pro auf „Tools“ und ganz unten unter­halb von „Anpas­sen“ auf „Akti­ons­as­sis­tent“. In der neu­en Sym­bol­leis­te kli­cken Sie auf „Neue Akti­on“.

Schritt 2: Unter „Zu ver­ar­bei­ten­de Datei­en“ im rech­ten Teil des Fens­ters wäh­len Sie unter „Stan­dard­op­ti­on“ den Ein­trag „Ord­ner hin­zu­fü­gen“. Wenn Sie die Akti­on star­ten, kön­nen Sie dann einen Arbeits­ord­ner wäh­len, in dem die Datei­en lie­gen, die Sie mit Fuß­zei­len ver­sor­gen wol­len. Oder Sie kli­cken auf das Ord­ner­sym­bol über „Stan­dard­op­ti­on“ und wäh­len einen Stan­dard­ord­ner, aus dem Sie alle PDF-Datei­en ver­ar­bei­ten wol­len.

Schritt 3: Im lin­ken Teil des Fens­ters gehen Sie auf „Wei­te­re Tools“ und kli­cken auf „Java­Script aus­füh­ren“. Über die Schalt­flä­che zwi­schen den bei­den Berei­chen des Fens­ters fügen Sie die Funk­ti­on als Akti­ons­schritt in die Lis­te ein. Kli­cken Sie auf „Ein­stel­lun­gen ange­ben“. Es öff­net sich ein Edi­tor in Ado­be Rea­der Pro, in den Sie das Script für Fuß­zei­len aus die­sem Arti­kel ein­fü­gen. Es ent­spricht dem aus dem Arti­kel „Ado­be Rea­der: Datei­na­men in PDF-Doku­men­ten auf jede Sei­te dru­cken“, es feh­len nur die Anwei­sun­gen, über die das Menü erstellt wird. Das Script star­tet, wenn die Akti­on aus­ge­führt wird. Die gewünsch­te Funk­ti­on steu­ern Sie über den Auf­ruf von „SetFooter(N)“. Set­zen Sie Kom­men­tar­zei­chen („//“) vor die Auf­ru­fe, die Sie nicht ver­wen­den wol­len und ent­fer­nen Sie das Kom­men­tar­zei­chen vor dem gewünsch­ten Auf­ruf im Bei­spiel „SetFooter(1)“.

Wenn Sie unter­schied­li­che Funk­tio­nen für bestimm­te Doku­men­te benö­ti­gen, erstel­len Sie dafür jeweils eine neue Akti­on und pas­sen das Script je nach Wunsch an. Kli­cken Sie auf „OK“, um das Script zu spei­chern.

Unter­halb von „Ein­stel­lun­gen ange­ben“ ent­fer­nen Sie das Häk­chen vor „Benut­zer­auf­for­de­rung“. Ist es gesetzt, fragt Ado­be Acro­bat Pro ansons­ten bei jedem Doku­ment nach, ob es gespei­chert wer­den soll.

Schritt 4: Gehen Sie im lin­ken Bereich des Fens­ters auf „Spei­chern und expor­tie­ren“ und fügen Sie „Spei­chern“ als Akti­ons­schritt hin­zu. Im rech­ten Teil des Fens­ters kli­cken Sie auf das Icon rechts neben „Spei­chern“ und wäh­len „In loka­lem Ord­ner spei­chern“. Danach wäh­len Sie einen Aus­ga­be­ord­ner, in dem Sie die geän­der­ten Doku­men­te able­gen wol­len. Nach einem Klick auf „Ein­stel­lun­gen abge­ben“ las­sen sich Optio­nen für die Datei­na­men ange­ben. Sie kön­nen bei­spiels­wei­se Text zum Datei­na­men hin­zu­fü­gen.

Im Bereich über den Aktio­nen steht „Unbe­nannt“. Wenn Sie möch­ten, ändern Sie die Beschrif­tung nach einem Klick dar­auf in „Fuß­zei­len“.

Zum Abschluss kli­cken Sie auf „Spei­chern“ und ver­ge­ben einen aus­sa­ge­kräf­ti­gen Namen für die Akti­on.

Bit­te beach­ten Sie: Es gibt kei­ne Opti­on, die vor dem Über­schrei­ben warnt, wenn eine Datei glei­chen Namens sich bereits im Aus­ga­be­ord­ner befin­det. Ver­wen­den Sie als Ziel daher immer einen lee­ren Ord­ner.

Wenn Sie die Akti­on star­ten möch­ten, rufen Sie unter „Tools“ den Akti­ons­as­sis­ten­ten auf und wäh­len die Akti­on unter „Akti­ons­lis­te“. Mit einem Klick auf „Anfang“ star­ten Sie die Akti­on.

/* 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)
}


Schlagwörter:


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Neueste Kommentare

  1. Eine sehr gute Erklärung. Hat alles super funktioniert. Ruckzuck eine Fritz!Box anstatt diesem Movistar Router. Vielen Dank


Die Website durchsuchen