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


Die Website durchsuchen