Adobe Reader: Dateinamen in PDF-Dokumenten auf jede Seite drucken

Manch­mal muss man wis­sen, wo die Datei zu einem aus­ge­druck­ten PDF-Doku­ment auf der Fest­plat­te liegt. Wenn das Pro­gramm, mit dem Sie PDFs erstel­len, den Datei­na­men und Abla­ge­ord­ner nicht mit aus­ge­ben kann, lässt sich das Pro­blem mit einem Java­script lösen.

Auch Ado­be Rea­der XI lässt sich mit Scripts erwei­tern. Die­se müs­sen unter %appdata%\Adobe\Acrobat\Privileged\11.0\JavaScripts lie­gen. Bei Acro­bat DC heißt der Pfad %appdata%\Adobe\Acrobat\Privileged\DC\JavaScripts. Scripts für alle Benut­zer gehö­ren in den Instal­la­ti­ons­ord­ner, bei­spiels­wei­se nach C:\Program Files (x86)\Adobe\Reader 11.0\Reader\Javascripts. Laden Sie die Datei Print­Foo­ter her­un­ter (aktua­li­sier­te Ver­si­on 2.2, April 2014), ent­pa­cken Sie die­se und kopie­ren Sie sie in das gewünsch­te Ver­zeich­nis.

Hin­weis: Das Script funk­tio­niert nur ab Ado­be Rea­der XI und auch mit Acro­bat Rea­der DC. In älte­ren Ver­sio­nen las­sen sich per Script kei­ne For­mu­lar­fel­der ein­bau­en.

Fußzeile für PDF-Datei per Javascript einfügen
Per Java­script fügen Sie einen zusätz­li­chen Menü­punkt in Ado­be Rea­der ein. Dar­über lässt sich dann eine Fuß­zei­le mit Datei­na­me und ande­ren Infos in das PDF-Doku­ment ein­set­zen.

Star­ten Sie Ado­be Rea­der neu und öff­nen Sie eine PDF-Datei. Im Menü „Datei“ sehen Sie jetzt den neu­en Menü­punkt „Fuß­zei­le -> Set­ze Fuß­zei­le“. Nach einem Klick dar­auf setzt das Script Datum und Uhr­zeit, den Pfad der Datei und die Sei­ten­zahl in alle Sei­ten des Doku­ments ein. Sie kön­nen es dann aus­dru­cken oder mit den Zusatz­in­fos spei­chern. Mit „Fuß­zei­le -> Ent­fer­ne Fuß­zei­le“ löschen Sie die Infor­ma­tio­nen wie­der.

Über den Menü­punkt „Datei -> Fuß­zei­le -> Datei­na­me nur ers­te Sei­te“ kön­nen Sie den Datei­na­men mit Pfad nur in die ers­te Sei­te eines Doku­ments ein­bau­en.

Script anpas­sen: Wel­che Infos das Script im Doku­ment unter­bringt, kön­nen Sie selbst fest­le­gen. Öff­nen Sie die JS-Datei in einem Text­edi­tor (rech­ter Maus­klick und „Öff­nen mit -> Edi­tor“). Drei Vari­an­ten sind bereits vor­kon­fi­gu­riert. Ändern Sie hin­ter „app.addMenuItem“ bei­spiels­wei­se „SetFooter(1)“ auf „SetFooter(2)“. Dann wer­den nur Datum, Uhr­zeit und Datei­na­me ein­ge­setzt. Erset­zen Sie „2“ durch „3“, um nur die Sei­ten­zah­len in der Form  „Sei­te X/X“ ein­zu­bau­en. Nach Ände­run­gen im Script müs­sen Sie Ado­be Rea­der neu star­ten. „4“ baut den Datei­na­men ohne Datei­na­mens­er­wei­te­rung ein (ohne ‑pdf).

Wenn Sie möch­ten, kön­nen Sie den Vari­an­ten auch jeweils eige­ne Menü­punk­te spen­die­ren. Dazu füh­ren Sie neu­en Zei­len nach dem Mus­ter „app.addSubMenu“ hin­zu. Bei­spiels­wei­se:

app.addMenuItem({ cName: "Setze Seitenzahlen", cParent: "Footer", cExec: "SetFooter(3)"});
app.addMenuItem({ cName: "Entferne Seitenzahlen", cParent: "Footer", cExec: "RemoveFooter()"});

Sie kön­nen auch nur den Datei­na­men statt des kom­plet­ten Pfa­des ein­bau­en. In die­sem Fall ändern Sie die Zuwei­sung hin­ter „var FileNM“ auf „this.documentFileName“.

Wenn Sie das Datums­for­mat anpas­sen möch­ten, ändern Sie die Anga­ben hin­ter „AcDa­te­For­mat“. „dd.mm.yyyy HH:MM“ gibt Tag, Monat, Jahr, Stun­den und Minu­ten aus, „yyyy/mm/dd“ dage­gen Jahr, Monat und Tag ohne Uhr­zeit.

Das Script wan­delt die platt­form­un­ab­hän­gi­gen Pfa­de (C/Ordner/Dateiname) in Win­dows-Pfa­de um (C:\Ordner\Dateiname). Wenn Sie das nicht wün­schen, ändern Sie in der Funk­ti­on Set­Foo­ter() „var FileNM = PathToWinPath(pathArray);“ auf „var FileNM = this.path“ bezie­hungs­wei­se in Set­Foo­ter­First­Pa­ge() „var sFilePath=PathToWinPath(pathArray);“ auf „var sFilePath=this.path“.

Die Funk­ti­on Set­Foo­ter­First­Pa­ge() baut den Datei­na­men nur in die ers­te Sei­te eines Doku­ments ein. Wenn Sie ihn nur auf der zwei­ten Sei­te wün­schen, ändern Sie „var p = 0;“ in „var p = 1;“.

Hier das kom­plet­te Java­script (Down­load ZIP-Datei: Print­Foo­ter)

//PrintFooter v2.2
//Thorsten Eggeling
//
//SetFooter(1) erstellt
//Datum, Uhrzeit, Dateiname und Seitenzahl (Seite X/X)

//SetFooter(2) erstellt
//Datum, Uhrzeit, Dateiname

//SetFooter(3) erstellt
//Seitenzahlen (Seite X/X)

//SetFooter(4) erstellt ein Dokument mit
//nur Dateiname ohne Erweiterung auf allen Seiten

//SetFooterFirstPage() erstellt ein Dokument mit
//Dateiname nur auf der ersten Seite

//RemoveFooter() entfernt die Fußzeilen von allen Seiten

app.addSubMenu({ cName: "Footer",cUser: "Fußzeile", cParent: "File", nPos: 20 });
app.addMenuItem({ cName: "Setze Fußzeile", cParent: "Footer", cExec: "SetFooter(1)"});
app.addMenuItem({ cName: "Fußzeile nur Dateiname", cParent: "Footer", cExec: "SetFooter(4)"});
app.addMenuItem({ cName: "Seitenzahlen einfügen", cParent: "Footer", cExec: "SetFooter(3)"});
app.addMenuItem({ cName: "Dateiname nur erste Seite", cParent: "Footer", cExec: "SetFooterFirstPage()"
});
app.addMenuItem({ cName: "-------------------------------", cParent: "Footer",cExec: "{}"});
app.addMenuItem({ cName: "Entferne Fußzeile(n)", cParent: "Footer", cExec: "RemoveFooter()"});

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

//Fußzeile setzen, alle Seiten
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)
}

//Fußzeile(n) entfernen
function RemoveFooter()
{
for (var p = 0; p < this.numPages; p++)
{var x = this.removeField(String("xftDate"+p+1)); }
}

 


Schlagwörter:


Kommentare

46 Antworten zu „Adobe Reader: Dateinamen in PDF-Dokumenten auf jede Seite drucken“

  1. Gibt es jetzt nicht auch eine Text­va­ri­ble um den Datei­na­men in die Kopf- oder Fuß­zei­le zu setz­ten ? Ich will meh­re­re Datei­en mit einer Kopf- oder Fuß­zei­le mit Datei­na­men ver­se­hen. Nur wel­che Varia­ble ist es ? Für das aktu­el­le Datum geht ja <> Wel­che ist das dann für den Datei­na­men ?

    Fol­gen­des habe ich gefun­den :

    https://helpx.adobe.com/de/incopy/using/text-variables.html

    Datei­na­me

    Die­se Varia­ble fügt den Namen der aktu­el­len Datei in das Doku­ment ein. Die Varia­ble wird häu­fig im Info­be­reich des Doku­ments für den Aus­druck ver­wen­det oder in Kopf- bzw. Fuß­zei­len ein­ge­setzt. Zusätz­lich zu „Text davor“ und „Text danach“ ste­hen Ihnen die fol­gen­den Optio­nen zur Ver­fü­gung:

    1. Sie ver­wei­sen auf die Inco­py-Hil­fe. Pro­gram­me, mit denen sich PDFs erstel­len las­sen, bie­ten natür­lich jede Men­ge Mög­lich­kei­ten, über die sich Infor­ma­tio­nen in ein Doku­ment ein­bau­en las­sen. Bei dem Script zu die­sem Arti­kel geht es aber um den Ado­be Rea­der, ein Pro­gramm, mit dem sich PDFs erst ein­mal nicht erstel­len und bear­bei­ten las­sen. Ziel ist daher, in bereits vor­lie­gen­de PDFs mit dem Rea­der Zusatz­in­for­ma­tio­nen ein­zu­bau­en. Auch in Ado­be Acro­bat gibt es wei­ter­ge­hen­de Funk­tio­nen. Aber die­ses kos­ten­pflich­ti­ge Pro­gramm hat nicht unbe­dingt jeder.

  2. Avatar von FrodoBodo

    Hal­lo zusam­men
    ich wür­de ger­ne die Schrift­grö­ße “ fd.textSize=6; “ auf 10 ändern, habe aber kei­ne Zugriffs­rech­te.
    Wie oder was muss ich tun damit ich die Schrift­grö­ße andern kann

    1. Ver­wen­den Sie einen Ord­ner unter %app­data%. Andern­falls müs­sen Sie sich als Admi­nis­tra­tor die Zugriffs­rech­te ver­schaf­fen.

  3. Avatar von Thomas Schmidberger
    Thomas Schmidberger

    Hal­lo
    irgend­wie scheint es in Arcro­bat ja immer noch kei­ne Lösung für das Fuss­zei­len­pro­blem zu gebe. Des­halb benut­ze ich Ihr Script jetzt in der Acro­bat DC Ver­si­on. Das funk­tio­niert super, nach­dem ich den Pfad zum Java­Scripts Ord­ner gefun­den hat­te. Bes­ten Dank für das tol­le Script.

    Eine Fra­ge hät­te ich aber noch. Ist es mög­lich, den Text der Fuss­zei­le um 90° zu dre­hen, dass er ent­lang der lin­ken Blatt­sei­te nach oben steht.

    Vie­le Grü­ße
    Tho­mas

    1. Ich habe gera­de kei­ne Zeit mich inten­si­ver damit zu beschäf­ti­gen.
      In der Funk­ti­on „addText­Field“ müss­te man für „fd“ die­se Eigen­schaft ange­ben kön­nen:
      fd.rotation=90
      Das dreht das Text­feld und den Inhalt um 90 Grad.
      Damit das rich­tig funk­tio­niert, müss­te man dazu noch die Posi­ti­on auf der Sei­te und die Grö­ße des Text­fel­des für die Aus­rich­tung auf der Sei­te anpas­sen bezie­hungs­wei­se berech­nen (bei myDoc.addField).

  4. Hal­lo zusam­men
    Ich habe eine PDF Datei, wel­che 2’000 Sei­ten lang ist. Jede Sei­te hat einen Text und im Kopf­be­reich eine Zahl. Nun muss ich die­sen 2’000 sei­ti­gen Schin­ken split­ten und pro Sei­te ein PDF erstel­len (Datei­na­me muss Zahl vom Kopf­be­reich sein).
    Ado­be PRO DC kann zwar ein­zel­ne Datei­en erstel­len aber wie muss ich vor­ge­hen, dass er die Zahl im Hea­der als Datei­na­men zum Abspei­chern ver­wen­det? Ich bin dran mich ein­zu­le­sen und bin nicht sicher, ob ich auf dem rich­ti­gen Weg bin: Müss­te ich hier­für die­ses Num­mern­feld als Meta­da­ten-Feld defi­nie­ren? Falls jemand Tipps hat, wäre ich sehr dank­bar für die Hil­fe.

    1. Wenn ich das Vor­ha­ben recht ver­ste­he, wür­de ich jede Sei­te des gro­ßen PDFs mit „this.extractPages“ als ein­zel­ne Datei spei­chern und dabei pas­sen­de Datei­na­men ver­ge­ben, etwa „MyDoc_page_#0001.pdf“, „MyDoc_page_#0002.pdf“, usw. Ich gehe davon aus. dass die Zahl im Kopf­be­reich die Sei­ten­zahl ist.

      Oder han­delt es sich nicht um eine fort­lau­fen­de Num­me­rie­rung? Die Zahl im Hea­der ist ja wahr­schein­lich kein Feld, son­dern nur ein­fa­cher Text. In die­sem Fall könn­te man den Text mit this.getPageNthWord(i, j) aus­le­sen und den Inhalt oder Tei­le des Inhalts als Datei­na­men ver­wen­den.

      Infos zu Java­script in Ado­be Acro­bat Pro DC gibt es in der Acro­bat DC SDK Docu­men­ta­ti­on (auf „Java­script“ gehen).

      1. Hal­lo te

        Vor­ab herz­li­chen Dank für dei­ne Ant­wort.
        Etwas kon­kre­ti­siert: Es han­delt sich lei­der um nicht fort­lau­fen­de Zah­len. Die Zahl befin­det sich im Adres­sat und es han­delt sich um eine Poli­cen­num­mer des Kli­en­ten und damit ist es lei­der auch eine ein­fa­che Zahl und kein Feld, wie du gesagt hast. Die Zah­len sind auch ver­schie­den und in kei­ner Rei­hen­fol­ge, mal steht IE5221, 43000000, etc.
        Ich habe genau das gesucht, irgend­et­was wel­ches die­sen Text aus­liest und für den Datei­na­men ver­wen­det.
        Dei­nen Tipp wer­de ich ver­su­chen.

  5. Hal­lo Ich bin am ver­zwei­feln mit mei­nem Java­Script.

    ich suche die Mög­lich­keit das ich per Java das was im Textfeld1 ein­ge­tra­gen wird beim Dru­cken als Was­ser­zei­chen auch ver­wen­det wird und pro sei­te 3 mal dar­ge­stellt wird in Ari­el 12 hell Grau.

  6. Avatar von Sebastian

    Super, Dan­ke!

  7. Gibt es die Mög­lich­keit, meh­re­re PDFs auf ein­mal mit der Fuss­zei­le zu bestü­cken? Die­se Funk­ti­on hat zwar Ado­be Acro­bat Pro 9, dort funk­tio­niert das Script aber nicht und der Datei­na­me ist als Fuss­zei­le benö­tigt.
    Vie­len Dank

    1. Meh­re­re PDFs auf ein­mal? Nein, das geht nicht so ohne wei­te­res. Das müss­te man als Script pro­gram­mie­ren, das etwa alle PDF-Datei­en aus einem bestimm­ten Ord­ner ver­ar­bei­tet. Eine Alter­na­ti­ve wäre, Acro­bat Rea­der extern zu steu­ern, bei­spiels­wei­se über ein Auto­Hot­key-Makro (https://autohotkey.com). Das ist aller­dings etwas Bas­tel­ar­beit.

  8. Avatar von effjot

    Hal­lo,
    erst­mal dan­ke für das Script.

    Was bei mir nicht funk­tio­niert ist „\n“ für einen Zei­len­um­bruch, obwohl es ja kor­rekt ist.

    Zu ande­ren Fra­gen hier eini­ge Tipps:
    Kopf­zei­le: mit var aRect = this.getPageBox(„Crop“,p); bekommt man die Koor­di­na­ten der Sei­te
    ent­spre­chend ist die Sei­ten­hö­he var Tot­H­eight = aRect[1] – aRect[3], bei DIN A4 hoch 841 (Pixel).
    bei
    { var fd = this.addField(„xftDate“, „text“, p, [30,TotHeight‑x, TotWidth-30–30,TotHeight‑y]);
    muss man x und y anpas­sen (x oben, y unten).

    Zum Aus­dru­cken:
    Es gibt von Ado­be eine »Acro­bat Java­script Scrip­ting Refe­rence«, da ste­hen die ent­spre­chen­den Befeh­le und Para­me­ter drin. Damit müss­te das Script ergänzt wer­den. Die bezieht sich aber auf die nor­ma­le Acro­bat Ver­si­on, ich weiß also nicht, ob Sie auch beim Rea­der aus­ge­führt wer­den.

  9. Avatar von Jürgen Herrmann
    Jürgen Herrmann

    gibt es so ein JavaSkript auch für eine Kopf­zei­le?

    1. Die Fra­ge ist im Prin­zip schon wei­ter unten in den Kom­men­ta­ren beant­wor­tet. Die Script-Zei­le

      var fd = myDoc.addField(„xftDate“+myPageNum+1, „text“, myPa­geNum, [30,15, myPageWidth-30,35]);

      legt die Posi­ti­on fest. Pro­bie­ren Sie ande­re Wer­te aus, um eine Posi­ti­on in der Kopf­zei­le zu errei­chen.

    2. Hal­lo,
      ger­ne möch­te ich mei­ne Datei­na­men in zwei Zei­len in die PDF drü­cken.
      Datei­na­me: BP-01 Decke über EG_Decke.pdf
      Alles bis zum Unter­strich in einer Zei­le, nach dem Unter­strich in die zwei­te Zei­le:
      BP-01 Decke über EG
      Decke

      Ist dies mög­lich und falls ja, wie?

      Acro­bat DC

      Vie­le Grü­ße
      Mike

      1. Ganz ver­stan­den habe ich das nicht.
        Aus dem Datei­na­men
        „BP-01 Decke über EG_Decke.pdf“ sol­len im PDF zwei Zei­len wer­den?

        BP-01 Decke über EG
        Decke

        Unter der Vor­aus­set­zung, dass die Struk­tur der Datei­na­men immer gleich ist, wäre fol­gen­des mög­lich:


        var sPos=FileNM.search("_");
        var pPos=FileNM.search(".");
        var S1=FileNM.substr(0,sPos);
        var S2=FileNM.substr(sPos+1,FileNM.length - sPos -5);
        FieldValue=S1 + "\n" + S2;
        var fd=addTextField(this,FieldValue,p,TotWidth);

        Zuerst wird die Posi­ti­on von „_“ und „.“ im String FileNM ermit­telt.
        Dann wer­den mit sub­st() die bei­den gewünsch­ten Ele­men­te extra­hiert.
        Das „\n“ steht für den Zei­len­um­bruch.

  10. Hal­lo

    ich fin­de das schon nicht schlecht das Script. Aber ich suche so was für die Kopf­zei­le. Habe schon mit den Para­me­tern rum­ge­spielt, aber es geht nicht so rich­tig gut beson­ders wenn man ein Quer­for­mat ein­ge­stellt hat.

    Außer­dem wür­de ich ger­ne gleich beim drü­cken des Befehls das Feld ein­set­zen und danach in die Druck­mas­ke kom­men. Geht das auch?

    Ich hof­fe das mich jemand ver­steht.

  11. Das bes­te was ich bis jetzt gefun­den habe! Ist es mög­lich, einen Tas­ten-Kurz­be­fehl ein­zu­stel­len (so wie für das Dru­cken Strg+P)? Das wäre super.
    Da ich nor­ma­ler­wei­se sehr vie­le PDF-Doku­men­te aus­dru­cke öff­ne ich die Doku­men­te nor­ma­ler­wei­se gar nicht, son­dern star­te den Befehl „dru­cken“ direkt mit der Mou­se; hat­te eigent­lich gehofft, dass man hier eine Ein­stel­lung direkt bei den Druck­ein­rich­tun­gen fin­det, aber nichts (nur Datum und Sei­ten­zahl), lei­der, daher hilft das Script, auch wenn die Pro­ze­dur so sehr lang­sam wird.
    Muss mich mal infor­mie­ren, ob man auf dem Schreib­tisch so einen Ord­ner ein­rich­ten kann, der auto­ma­tisch eine Befehls­fol­ge ablau­fen lässt (in Pho­to­shop kann man so was ein­rich­ten): Doku­ment öff­nen, mit Namen aus­stat­ten und dann dru­cken (ohne dass man es für jedes Dok hän­disch machen muss…). Falls du hier­zu einen Tipp hast?

    Dan­ke auf jeden Fall 🙂

    1. „Tas­ten-Kurz­be­fehl“: Das ist im Ado­be Rea­der nur sehr ein­ge­schränkt mög­lich. Bei­spiels­wei­se

      app.addSubMenu({ cName: "Footer",cUser: "Fußzeile &x", cParent: "File", nPos: 20 });
      app.addMenuItem({ cName: "Setze Fußzeile", cUser:"Setzen &z", cParent: "Footer", cExec: "SetFooter(1)"});

      Das „&“ setzt eine Acce­le­ra­tor. Den sieht man im Rea­der, wenn man die Alt-Tas­te drückt. Die Funk­ti­on „Set­zen“ lässt sich dann mit Alt‑D und danach X und Z auf­ru­fen (Alt‑D für Menü „Datei“). Kür­zer wird’s, wenn man „Set­zen“ eine Menü­ebe­ne höher ein­baut:

      app.addMenuItem({ cName: "Setze Fußzeile", cUser:"Setzen &x", cParent: "File", cExec: "SetFooter(1)"});

      Dann geht es mit Alt‑D X.

      „auto­ma­tisch eine Befehls­fol­ge ablau­fen“: Das ist nur in Ado­be Acro­bat mög­lich (Menü „Erwei­tert -> Doku­ment­ver­ar­bei­tung -> Sta­pel­ver­ar­bei­tung“ (Ado­be Acro­bat Pro 9). Hier kann man Java­scripts defi­nie­ren und auf meh­re­re Dateien/Ordner anwen­den.

      Beim Ado­be Rea­der könn­te man mit den zuvor erstell­ten Acce­le­ra­to­ren und Send­Key-Makros arbei­ten, also Makros, die Tas­ten­kom­bi­na­tio­nen an Anwen­dun­gen schi­cken. Das gin­ge mit Auto­hot­key (https://autohotkey.com/). Die Lösung ist aber etwas wacke­lig, wenn eine Anwen­dung nicht in ange­mes­se­ner Zeit reagiert.

  12. Avatar von Sebastian Böcker
    Sebastian Böcker

    Hal­lo, ich bekom­me mit dem Acro­bat DC immer einen stack under­flow: Auf der zwei­ten Sei­te des Aus­drucks steht

    ERROR: sta­ckun­der­flow
    OFFENDING COMMAND: exch
    STACK:
    /_ct_na

    Gruß

    1. Das ist ein Post­script und kein Java­script Feh­ler. Tritt das nur bei einem bestimm­ten Doku­ment auf? Ich wür­de das Script mit Doku­men­ten aus unter­schied­li­chen Quel­len aus­pro­bie­ren, um den Feh­ler ein­zu­gren­zen.

      1. Avatar von Sebastian Böcker
        Sebastian Böcker

        Es ist bei mir bei drei ver­schie­de­nen Doku­men­ten pas­siert, bis­her ist kein Doku­ment feh­ler­frei durch­ge­gan­gen. Aller­dings habe ich drei mal CutePDFWri­ter als Dru­cker benutzt, viel­leicht liegt es dar­an?

        1. Ich habe eini­ge Doku­men­te mit CutePDFWri­ter erstellt und kei­ne Pro­blem mit den PDFs fest­stel­len kön­nen. Pro­bie­ren Sie trotz­dem PDFs aus ande­ren Quel­len aus.
          Sicher­heits­hal­ber soll­ten Sie auch kon­trol­lie­ren, ob das Script PrintFooter.js tat­säch­lich feh­ler­frei ist. Kopie­ren Sie den Text von https://www.myria.de/wp-content/plugins/wp-syntax-download-extension/wp-syntax-download-extension.php/599/PrintFooter.js in die JS-Datei.
          Wenn auch das nichts hilft, habe ich momen­tan kei­ne Lösung parat.

  13. Avatar von Joachim Seidel
    Joachim Seidel

    Hal­lo
    Ich möch­te gern ins PDF-Doku­ment fol­gen­des set­zen:
    „Datum Uhr­zeit Benut­zer­na­me“
    Ich weiß aber nicht wie ich das in dem Print­Foo­ter-Script unter­brin­ge.
    Wer kann mir hel­fen?
    Mit freund­li­chen Grü­ßen
    Joa­chim Sei­del

    1. Wel­chen Benut­zer­na­men wol­len Sie ein­fü­gen? Den Win­dows-Log­in-Namen, den Autor des Doku­ments oder den Benut­zer, der in Acro­bat bei „Bear­bei­ten -> Vor­ein­stel­lun­gen -> Iden­ti­tät“ ein­ge­tra­gen ist? Wie dem auch sei, sie benö­ti­gen im Script fol­gen­de Funk­ti­on:

      var get­Lo­gin­Na­me = app.trustedFunction(
      func­tion () {
      app.beginPriv();
      return identity.loginName;
      app.EndPriv();
      }
      );

      Die­se Funk­ti­on bau­en Sie in das Script über den Block ein, der mit „app.addSubMenu…“ beginnt. Dann kön­nen Sie in der Funk­ti­on „Set­Foo­ter“ eine Zei­le wie die­se ver­wen­den:

      var FieldValue=„Datum: “ + util.printd(AcDateFormat, AcDa­te) + “ („ + FileNM +“)“ + “ Benut­zer: “ + get­Lo­gin­Na­me();

      Für die ande­ren Benut­zer­na­men ver­wen­den Sie bei­spiels­wei­se

      return identity.name; //Name aus Iden­ti­tät
      return this.info.author; //Autorname aus den Doku­ment-Eigen­schaf­ten

  14. Hal­lo

    Der Befehl Fuß­zei­le mit vier Aus­wahl­mög­lich­kei­ten habe ich nun bei Ado­be, aber ich habe auch die­sen „Es ist ein inter­ner Feh­ler auf­ge­tre­ten“

    Wie kann man es lösen?

    WIN 7 32-Bit
    Ado­be Rea­der 10.0

    1. Ich habe das Script jetzt mit älte­ren Ver­sio­nen des Ado­be Ado­be Rea­ders aus­pro­biert. Damit funk­tio­niert es nicht. Ado­be hat erst in die Ver­si­on 11 die Mög­lich­keit ein­ge­baut, For­mu­lar­da­ten zu spei­chern bezie­hungs­wei­se per Script zu ändern. Wenn Sie das Script nut­zen wol­len, ver­wen­den Sie die aktu­el­le Ver­si­on XI. Das ist auch aus Sicher­heits­grün­den zum emp­feh­len.

  15. Ich habe ver­sucht das Script unter Ado­be Rea­der 10 aus­zu­füh­ren, dabei tritt der schon wei­ter oben beschrie­be­ne „inter­ne Feh­ler“ auf. Ist bekannt ob die Ado­be Ver­si­on (10 oder 11) eine Rol­le spielt?

  16. Avatar von chris

    Herz­li­chen Dank für die Hil­fe und die Erklä­run­gen!

  17. Dan­ke, habe nicht wirk­lich viel über­legt^^

  18. Ich kann den Ord­ner Privileged\11.0\JavaScripts nicht erstel­len, da kei­ne Son­der­zei­chen erlaubt sind. Jemand eine Idee?

    1. Da sind eigent­lich kei­ne Son­der­zei­chen drin. Erst den Ord­ner „Pri­vi­le­ged“ erstel­len und dann dar­in „11.0“ und dar­in wie­der­um „Java­Scripts“.

  19. Hal­lo,
    Dan­ke für das script. Ist es Mög­lich, dass die Fuß­zei­le immer gedruckt wird ? So wie jetzt, muss ich immer die Fuß­zei­le „ein­schal­ten“.
    Vie­len Dank

    Gruß Peter

    1. @Peter
      Ich befürch­te, das geht nicht. Es ist – soweit ich sehe – nicht mög­lich, das Script auto­ma­tisch beim Öff­nen eines Doku­ments anzu­wen­den. Eine der­ar­ti­ge Funk­ti­on bie­tet nur Ado­be Acro­bat, aber nicht der Rea­der. Bei Acro­bat las­sen sich über die Batch-Funk­ti­on Scrip­te auch auf meh­re­re Doku­men­te auto­ma­tisch anwen­den.

  20. Avatar von Gerhard

    Super Tipp! War genau das, was ich gebraucht und gesucht hat­te und nun in 20 Minu­ten (inkl. edi­tie­ren und ändern, dass Pfad nicht mit ange­druckt wird!) zum Lau­fen gebracht habe.
    Vie­len Dank!

  21. Ich habe das Script jetzt etwas umge­baut und ent­schlackt. Dadurch wird es hof­fent­lich über­sicht­li­cher.

    @Pascal: Der Datei­na­me lässt sich ohne Erwei­te­rung mit

    FileNM.substr(0,FileNM.lastIndexOf(„.“));

    ermit­teln. Ich habe in das Script dafür einen eige­nen Menü­punkt ein­ge­baut („Fuß­zei­le nur Datei­na­me“, SetFooter(4)).

    @chris: In der Funk­ti­on „addText­Field“ habe ich ein paar Zei­len Kom­men­tar unter­ge­bracht, der die Posi­tio­nie­rung erklärt. Es hängt von der Art der Doku­men­te ab, ob die Fuß­zei­le sich optisch in der Mit­te befin­det. Die Posi­ti­on wird bei „addField“ über die Wer­te zwi­schen „[…]“ bestimmt. „30“ bedeu­tet: 30 Pixel Abstand vom lin­ken Rand. Ein höhe­rer Wert ver­schiebt das Feld also nach links.
    Wenn man test­wei­se „//fd.fillColor = color.yellow;“ ent­kom­men­tiert, also „//“ ent­fernt, wird das Feld mit einem far­bi­gen Hin­ter­grund unter­legt. Dann sieht man die Grö­ße bes­ser und kann mit unter­schied­li­chen Wer­ten expe­ri­men­tie­ren.

    1. Hal­lo,

      ich habe jetzt eini­ge Stun­den rum­pro­biert – muss dazu sagen, dass ich Null Pro­gram­mier­kennt­nis­se habe.
      Fol­gen­des Pro­blem konn­te ich nicht lösen:

      Ich hät­te ger­ne die Sei­ten­zah­len so weit wie mög­lich um unte­ren oder unte­ren rech­ten Rand, damit sie nie­mals in den Text ragen.

      Weder >fd.alignment=„right„var Tot­Width = aRect[2] – aRect[0]< habe ich auch viel rum­ge­spielt, lei­der ohne Erfolg.

      Könn­te mir bit­te jemand hel­fen?

      Vie­len Dank im Vor­aus!

      1. Die ent­schei­den­de Zei­le für die Posi­tio­nie­rung ist

        var fd = myDoc.addField(„xftDate“+myPageNum+1, „text“, myPa­geNum, [30,15, myPageWidth-30,35]);

        [30,15, myPageWidth-30,35] sind die Koor­di­na­ten der Box für die Fuß­zei­le. Der Koor­di­na­ten-Ursprung ist der unte­re lin­ke Punkt der Sei­te.

        All­ge­mein ist das [ oben-links x, oben-links y, unten-rechts x, unten-rechts y].

        Um den Text wei­ter nach unten zu schie­ben, muss man also oben-links y und unten-rechts y ver­klei­nern.
        Mög­lich wäre etwa

        [30, 0, myPa­ge­Width-30, 20]);

        Der Text erscheint dann ganz unten mit einer Höhe von 20 Pixeln.

        Das alles setzt aber immer vor­aus, dass unten im Doku­ment ein wei­ßer Rand mit 20 Pixeln Höhe ist. Wenn eine Sei­te kom­plett gefüllt ist, ragt der Text in den Inhalt. Das lässt sich nicht ver­hin­dern.

  22. Wie kann ich die Posi­ti­on der Fuß­zei­le ändern, d.h. dass alles (Datum etc. ) wei­ter in Rich­tung Sei­ten­mit­te ange­zeigt wird?
    Herz­li­chen Dank

  23. Avatar von Pascal

    Hal­lo,
    ich habe zu die­sem Script noch­mals eine Fra­ge.
    Ist es mög­lich, die Datei­endung zu ent­fer­nen?

    Sprich dass am Ende in der Fuß­zei­le tat­säch­lich nur noch
    „Datei­na­me“ anstatt „Dateiname.pdf“ steht.

    Vie­len Dank!

  24. @Marion
    Das Script muss im Unter­ver­zeich­nis „Java­script“ der Ado­be-Rea­der-Instal­la­ti­on lie­gen. Bei einem 32-Bit-Win­dows ist dass stan­dard­mä­ßig „C:\Program Files\Adobe\Reader 11.0\Reader\Javascripts“, bei einem 64-Bit-Win­dows „C:\Program Files (x86)\Adobe\Reader 11.0\Reader\Javascripts“. Geben Sie
    ein­fach

    C:\Program Files\Adobe\Reader 11.0\Reader

    (32-Bit) in die Adress­zei­le des Win­dows-Explo­rers ein und bestä­ti­gen Sie mit der Enter-Tas­te. In die­sem Ver­zeich­nis liegt die Datei „AcroRd32.exe“. Erstel­len Sie hier – wenn nicht vor­han­den – das Ver­zeich­nis „Java­scripts“. Ansons­ten suchen Sie auf dem Rech­ner nach „AcroRd32.exe“, um das rich­ti­ge Ver­zeich­nis zu fin­den.

    Stel­len Sie außer­dem sicher, dass Sie wirk­lich das kom­plet­te Script kopiert haben. Ver­wen­den Sie bes­ser den Down­load http://www.myria.de/wp-content/uploads/2014/02/PrintFooter_v2.0.zip und kopie­ren Sie die ent­hal­te­nen JS-Datei in den Java­script-Ord­ner des Ado­be Rea­ders.

  25. Hal­lo,

    das Script habe ich unter „C:\Program Files\Adobe\Reader jetzt der ent­pre­chen­de Ein­trag. Lei­der erhal­te ich bei der Aus­füh­rung fol­gen­den Feh­ler von Ado­be Rea­der “ Es ist ein inter­ner Feh­ler auf­ge­tre­ten.
    Wo könn­te der Feh­ler lie­gen?

    Vie­le Grü­ße

  26. Hal­lo!
    Wenn ich den Print­Foo­ter in das ent­spre­chen­de Ver­zeich­nis gela­den habe, erscheint den­noch nicht der neue Menü­punkt im Ado­be Rea­der. Ich habe schon exzes­siv gegoo­gelt aber kei­ne Lösung gefun­den, die mir wei­ter­hilft. Dazu muss ich sagen, dass ich abso­lu­ter Anwen­der bin und eigent­lich kei­ne Ahnung habe. Ich arbei­te mit Win­dows 7 Pro­fes­sio­nal und Ado­be Rea­der XI.
    Grü­ße

    1. Bit­te prü­fen Sie, ob der Pfad %appdata%\Adobe\Acrobat\Privileged\11.0\JavaScripts tat­säch­lich exis­tiert. Fügen Sie die Zei­le in die Adress­leis­te des Win­dows-Explo­rers ein und drü­cken Sie die Enter-Tas­te. Wenn der Ord­ner noch nicht vor­han­den ist, geben Sie %appdata%\Adobe\Acrobat ein. Den Pfad soll­te es auf jeden Fall geben. Erstel­len Sie dar­un­ter die Ord­ner Privileged\11.0\JavaScripts. Kopie­ren Sie das Script in die­sen Ord­ner und star­ten Sie Acro­bat Rea­der neu. Das neue Menü soll­te jetzt unter „Datei -> Fuß­zei­le“ erschei­nen.

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