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:

1
2
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)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
//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)); }
}

 

46 Kommentare

  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. 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

  3. 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. 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.

  7. 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.

    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.

  8. 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.

  9. 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.

  10. 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. 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.

  11. 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

  12. 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.

  13. 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?

  14. 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“.

  15. 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.

  16. 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!

  17. 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.

  18. 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

  19. 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!

  20. @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.

  21. 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

  22. 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.