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