Aus dem Alltag eines IT'lers

Adobe Reader: Aktuelles Datum mit ausdrucken

Tips & Tricks Ich erhielt eben die Anfrage ob es möglich wäre mit dem Adobe Reader das aktuelle Datum beim Ausdrucken von PDFs mit auszudrucken und wenn ja, wie.
Leider geht das nicht Out of the Box, sondern erfordert ein Javascript. Und so suchte ich kurz und wurde auf https://forums.adobe.com/thread/302996 schnell fündig.
Benutzer "ReinhardF" postete dort zwei kleine Scripte, die es einfach nur in den Ordner Programme\Adobe\Reader xxx\Reader\Javascripts zu kopieren gilt.

Mit dem etwas umfangreicheren Script kann man Datum und Dokumentennamen in die Fußzeile setzen und wählen ob sie zentriert oder rechtsbündig erscheinen soll. Zudem kann man beides (oder nur Datum oder Dokumentenname) auch wieder über das Script entfernen.
Und ganze sieht dann wie folgt aus:


PrintWithFooter.js
-------------------------------

app.addSubMenu({ cName: "Footer",cUser: "Set/Remove Footer", cParent: "File", nPos: 20 });
app.addMenuItem({ cName: "Set Date Time (Filename)", cParent: "Footer", cExec: "SetFooter(1)"});
app.addMenuItem({ cName: " -> Set Date .... centered", cParent: "Footer", cExec: "SetFooter(2)"});
app.addMenuItem({ cName: " -> Set Date .... right", cParent: "Footer", cExec: "SetFooter(3)"});
app.addMenuItem({ cName: "Set Page ", cParent: "Footer", cExec: "SetFooter(4)"});
app.addMenuItem({ cName: "Set Both", cParent: "Footer", cExec: "SetFooter(5)"});
app.addMenuItem({ cName: "-------------------------------", cParent: "Footer",cExec: "{}"});
app.addMenuItem({ cName: "Remove Both", cParent: "Footer", cExec: "RemoveFooter(5)"});
app.addMenuItem({ cName: "Remove Date Time (Filename)", cParent: "Footer", cExec: "RemoveFooter(1)"});
app.addMenuItem({ cName: "Remove Page", cParent: "Footer", cExec: "RemoveFooter(4)"});


//Set/remove Footer
function SetFooter(ARG)
{
var re = /.*\/|\.pdf$/ig;
var FileNM = + this.path.replace(re,"")+".pdf";
var Path = this.path;
var AcDate = new Date();
var AcDateFormat = "yyyy/mmm/dd HH:MM"
var Box2Width = 50
for (var p = 0; p < this.numPages; p++)
{
var aRect = this.getPageBox("Crop",p);
var TotWidth = aRect[2] - aRect[0]
if (ARG<=3 || ARG==5)
{var fd = this.addField("xftDate", "text", p, [30,15, TotWidth-30-30,30]);
fd.value = util.printd(AcDateFormat, AcDate) + " (" + FileNM +")";
fd.textSize=6; fd.readonly = true;
if (ARG==1){ fd.alignment="left" };
if (ARG==2){ fd.alignment="center" };
if (ARG==3){ fd.alignment="right" };
}
if (ARG==4 || ARG==5)
{var bStart=(TotWidth/2)-(Box2Width/2)
var bEnd=((TotWidth/2)+(Box2Width/2))
var fp = this.addField(String("xftPage"+p+1), "text", p, [bStart,30,bEnd,15]);
fp.value = "Page: " + String(p+1)+ "/" + this.numPages;
fp.textSize=6; fp.readonly = true;
fp.alignment="center";
}
} }

function RemoveFooter(ARG)
{
if (ARG<=3 || ARG==5) {var x = this.removeField("xftDate");}
if (ARG==2 || ARG==5) {for (var p = 0; p < this.numPages; p++)
{
var x = this.removeField(String("xftPage"+p+1)); }
} }



Ein etwas kürzeres Script vom gleichen Forumsmitglied baut ein kleines Feld mit Datum, Pfadangabe und Dokumentennamen in die Fußzeile des PDFs ein, die sich auch editieren lässt.
Und dieses sieht so aus:


PrintWithFooter.js
-------------------------------

app.addMenuItem({cName:"Print with Footer", cParent:"File", nPos:20, cExec:"PrtFooter();"});
//Print bookmarked Pages
function PrtFooter()
{
for (var p = 0; p < this.numPages; p++)
{
var fd = this.addField("Date", "text", p, [10,10, 300,28]);
fd.textSize=8; fd.value = "Date: " + util.printd("yyyy/mmm/dd", new Date()) + " (" + this.path +")"
var fp = this.addField(String("page"+p+1), "text", p, [330,10,280,28]);
fp.textSize=8; fp.value = "Page: " + String(p+1)+ "/" + this.numPages;
}
app.execMenuItem("Print");
var OK = app.alert("Delete Date / Filename?",2,2);
if (OK == 4) {
var x = removeField("Date");
for (var p = 0; p < this.numPages; p++)
{
var x = removeField(String("page"+p+1));
} }
}


Beide Scripte testete ich mit der Anwenderin und sie machten genau das was sie wollte.
Damit danke an ReinhardF.

No comments

Add Comment

E-Mail addresses will not be displayed and will only be used for E-Mail notifications.
To leave a comment you must approve it via e-mail, which will be sent to your address after submission.
Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.
BBCode format allowed
Was ergibt 17+4 ?

Submitted comments will be subject to moderation before being displayed.