Automatische PDF Erstellung beim Drucken

Einleitung

Eine häufige Anwendung von PrintMulti ist die automatische PDF Erstellung beim Drucken. Dieser Artikel zeigt, wie man PrintMulti so konfiguriert, dass dies auf einfache Weise möglich ist. Er geht davon aus, dass der aktuell verwendete Drucker verwendet werden kann.

Die Voraussetzungen dafür sind bereits im Artikel „Kopien drucken mit PrintMulti“ beschrieben, daher beginnen wir hier mit der Konfiguration eines geeigneten PDF-Druckers.

Auswahl eines PDF Druckers

Am besten Sie wählen einen Druckertreiber, der direkt in eine PDF Datei „druckt“ und keinen Zweistufigen wie z.B. den „PDF Creator“ und viele andere, die technisch einen Postscript Treiber nutzen und die erhaltene Postscript Datei später in PDF wandeln, oft mit Hilfe von „Ghostscript“. Das funktioniert auch mit PrintMulti, wie im Handbuch in Kapitel 8 beschrieben, ist nicht trivial zu konfigurieren.

In diesem Artikel beschränken wir uns deshalb auf PDF Drucker, die direkt eine PDF ohne Umwege erzeugen.

Am einfachsten ist die Verwendung des bei Windows mitgeliefertem „Microsoft Print To PDF“ Druckers. Den muss man ggf. bei den „Windows Features“ aktiveren, damit er erscheint. Dieser erledigt anstandslos seinen Dienst, hat aber nicht viele Einstellmöglichkeiten.

Ein weiterer freier PDF Drucker ist beim „PDF Architect“ enthalten, selbst in der freien Version. Dieser bietet viele Einstellmöglichkeiten wie z.B. PDF/A, Ränder, Fonteinbettung, Verschlüsselung und vieles mehr. Mit Hilfe von gespeicherten Druckereinstellungen und der „Devmode1“ Option kann man da ggf. auch verschiedene Einstellungen verwenden. Beispiele dazu finden Sie wieder im Artikel „Kopien drucken mit PrintMulti“ oder im Handbuch.

Es gibt bestimmt noch etliche PDF Drucker welche die Anforderungen genügen. Falls Sie schon einen im Einsatz haben, probieren Sie in einfach aus und schauen, ob die erhaltene PDF Datei tatsächlich PDF oder Postscript ist.

Einfaches Beispiel zur PDF Erstellung

Installieren Sie den „Microsoft Print To PDF“ oder den „PDF Architect“ oder beide und kopieren Sie den unteren Abschnitt in die PrintMulti.ini. Den Drucker „Samsung“ müssen Sie wie im anderen Artikel ersetzen durch einen geeigneten installieren Drucker.

[MicrosoftPrintToPDF]
Printer=Microsoft Print To PDF
Save2File=C:\PDFOutput\#(%Y-%m)T\#(%d)T\#J_#K_MS.pdf
Color=1

[PDFArchitect9]
Printer=PDF Architect 9
Save2File=C:\PDFOutput\#(%Y-%m)T\#(%d)T\#J_#K_Arch.pdf
Devmode1=c:\temp\pdfa.dev
Color=1

[Samsung]
Active=1
PrintSelf=1
ActionPDF9=Print;PDFArchitect9
ActionPDFMS=Print;MicrosoftPrintToPDF

Wenn Sie jetzt eine Testseite auf den Samsung Drucker ausgeben, sollten im Verzeichnis „C:\PDFOutput“ ein Unterverzeichnis mit dem Jahr und dem Monat und ein weiteres mit dem aktuellen Tag erzeugt werden und darin die PDF Dateien.

PDF Erstellung

Der Treiber „Microsoft Print To PDF“ bietet kaum Einstellmöglichkeiten, der „PDF Architect“ dagegen schon. Mit Hilfe des Tools „Devmode2File“ können Druckereinstellungen konfiguriert und in eine Datei gespeichert werden (hier „C:\temp\pdfa.dev“). Das ermöglicht z.B. eine PDF/A Erzeugung, eine Verschlüsselung oder was immer der Treiber sonst noch bietet. Der Vorteil von gespeicherten Devicemodi ist, dass es immer noch identisch funktioniert, auch wenn jemand an den Druckereinstellungen herumspielt. Abgesehen davon gibt es etliche Orte für gespeicherte Devicemodi in der Registry und man kann sich nie sicher sein welcher verwendet wird, insbesondere wenn wie bei einem PrintProzessor verschiedene Benutzer und Impersonation im Einsatz sind.

„#K“, „#J“, „#T“ sind Makros, die definierte Werte enthalten. Teilweise ist eine Formatierung möglich wie bei „#T“. „#K“ ist der Dokumentenname mit der Ersetzung von Zeichen, die für Dateinamen ungültig sind.

Wasserzeichen in der PDF mit PrintMulti Möglichkeiten

Nun soll noch ein Wasserzeichen oder ein Hintergrundbild in das PDF eingefügt werden. Dies kann einerseits mit den in PrintMulti eingebauten Möglichkeiten wie der Ausgabe von Texten, Bildern, Rechtecken und Linien geschehen, andererseits mit Hilfe von leistungsfähigen Tools wie „pdftk“, das mit den ExecuteCmd-Möglichkeiten von PrintMulti aufgerufen werden kann.

Mit den folgenden Einstellungen gibt PrintMulti mehrere Texte aus. Dies funktioniert auch mit dem PDFArchitect Drucker mit den entsprechenden Einstellungen.

[WatermarkDocumentCenter]
Active=1
Type=Text
Text=#D
Attrib=BI
Font=Arial
Foreground=0
Color=0xFF2600
X=$(#w;2;/)
; unit is twips. (1 inch = 1440 Twips; 1 inch = 2.54cm; 1cm=567 Twips)
Y=$(#h;567;-)
Height=5mm
Align=Center
VertAlign=Center

[WatermarkDate]
Type=Text
Text="#(%Y-%m-%d %H:%M)T"
Attrib=BI
Font=Courier New
Foreground=0
Color=0xE0E0E0
X=$(#w;2;/)
Y=$(#h;2;/)
Height=20mm
Align=Center
VertAlign=Center
dx=#w
dy=#h

[WatermarkSideRight]
Active=1
Type=Text
Text="#n/#Z "
Font=Courier New
Foreground=0
Color=0xFF2600
X=$(#w;#t;-)
Y=$(#h;567;-)
Height=5mm
Align=Right
VertAlign=Center

[MicrosoftPrintToPDF]
Printer=Microsoft Print To PDF
Save2File=C:\PDFOutput\#(%Y-%m)T\#(%d)T\#J_#K_MS.pdf
ObjectBottomRight=WatermarkSideRight
ObjectBottomCenter=WatermarkDocumentCenter
ObjectCenter=WatermarkDate
Transparent=1
Color=1

Ein gedruckter Ausschnitt aus dem PrintMulti Handbuch würde dann so aussehen:

Beispiel PDF mit PrintMulti Objekten

Der Vorteil bei der PrintMulti Methode liegt darin, dass einfach dynamische Objekte wie das Datum, der Dokumentenname, die aktuelle Seite und viele andere Informationen eingefügt werden können.

Benutzung von pdftk zur Veränderung der erzeugten PDF

Es gibt Kommandozeilenprogramme, um PDF-Dateien zu bearbeiten. Das bekannteste ist wohl „pdftk“. Damit kann man auch Hintergrundbilder oder Wasserzeichen einfügen. Es scheint aber nicht in der Lage zu sein, das aktuelle PDF zu verändern, so dass man mit Zwischendateien arbeiten muss.

Eine PrintMulti Konfiguration mit einer Verwendung von „pdftk“ könnte so aussehen:

[ExecuteMove]
Order=5
Execute=yes
ExecuteAsUser=true
ExecuteFlags=0x08000000
ExecuteTimeout=INF
ExecuteCmd=cmd /c move @"#G" %tempFile%

[ExecutePDFtk]
Order=5
Execute=yes
ExecuteAsUser=true
ExecuteFlags=0x08000000
ExecuteTimeout=INF
ExecuteCmd=c:\tools\pdftk %tempFile% background %background% output @"#G"

[ExecuteDelete]
Order=5
Execute=yes
ExecuteAsUser=true
ExecuteFlags=0x08000000
ExecuteTimeout=INF
ExecuteCmd=cmd /c del %tempFile%

[pdftk]
!tempFile=@"C:\PDFOutput\temp_#J.pdf"
!background=@"c:\temp\background.pdf"

Printer=PDF Architect 9
Save2File=C:\PDFOutput\#(%Y-%m)T\#(%d)T\#J_#K_9_pdftk.pdf
Devmode1=c:\temp\pdfa.dev
Color=1
ExecuteSection1=ExecuteMove
ExecuteSection2=Executepdftk
ExecuteSection3=ExecuteDelete
Transparent=1

[Samsung]
Active=1
PrintSelf=1
ActionPDFTK=Print;pdftk

In PrintMulti gibt es keine Variablen im engeren Sinn. Die beiden Zuweisungen, die mit „!“ anfangen werden als Umgebungsvariablen gesetzt und bleiben über Sektionsgrenzen erhalten. Wie in Windows üblich, kann auf sie mit „%…%“ zugegriffen werden.
Der Hintergrund wurde schnell mit WinWord erzeugt und als PDF in „C:\temp\background.pdf“ gespeichert.
Das Ergebnis einer Testseite sehen Sie hier:

pdftk Beispiel

Leave a Comment

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