ERP Dateinamen aus der Windows Zwischenablage verwenden / PDF Drucker
Die Ausgangssituation
Die zu erstellende PDF Datei soll einen definierten Dateinamen erhalten welcher aus den Werten Kundennummer und Rechnungsnummer zusammenzustellen ist (Kunden-ID_RechnungsNr.pdf). In der Warenwirtschaft gibt es leider keine Möglichkeit Druckdaten oder ähnliches einem Druckauftrag mitzugeben (über Steuerzeichen wie normal üblich). Auf eine entsprechende Erweiterung beim ERP Hersteller zu warten ist nach genereller Einschätzung sehr unrealistisch. Das ERP kann aber den gewünschten Dateinamen in der Zwischenablage von Windows bereitstellen. Das machen wir uns zunutze.
Die Lösung
Unser PDF Drucker wird den gewünschten Dateinamen aus der Zwischenablage von Windows auslesen und berücksichtigen, wir nutzen dafür das VBScript Framework des PDF Druckers das direkt nach der Installation genutzt werden kann. Zum Abgreifen des gewünschten PDF-Dateinamens greifen wir also hier auf die Windows Zwischenablage zu, wenn das PDF aus dem ERP gedruckt wird um es dann wie gewünscht in einer PDF Datei nach dem Muster Kunden-ID_RechnungsNr.pdf abzuspeichern.
Hierzu nutzen wir folgenden VBScript Macro Code:
Function ClipBoard(input) If IsNull(input) Then ClipBoard = CreateObject("HTMLFile").parentWindow.clipboardData.getData("Text") If IsNull(ClipBoard) Then ClipBoard = "" Else CreateObject("WScript.Shell").Run _ "mshta.exe javascript:eval(""document.parentWindow.clipboardData.setData('text','" _ & Replace(Replace(Replace(input, "'", "\\u0027"), """","\\u0022"),Chr(13),"\\r\\n") & "');window.close()"")", _ 0,True End If End Function
Individuellen VBS Funktions - Macro Tag anlegen
Wir nutzen folgenden Macro Code in der 7-PDF Printer Konfiguration.
<vbs:clipboard(null)>
Der unten aufgeführte Screenshot zeigt die nötigen Steps im Detail (einfach draufklicken zur Vergrößerung). Dieser MacroTag ruft die angelegte VBS-Funktion "clipboard" (aus clipboard.vbs) auf und der gelieferte Rückgabewert dieser Funktion ersetzt den individuellen MacroTag Eintrag durch den realen Rückgabewert. Da der Rückgabewert der zuvor in die Zwischenablage kopierte Dateiname ist, zeigt der Druckdialog dann auch diesen Dateinamen an und das zu erzeugende PDF kann wie gewünscht gespeichert werden. Das Beispiel ließe sich natürlich noch um weitere Daten aus der Zwischenablage erweitern (beispielsweise inklusive kompletten Verzeichnispfad, oder anderweitige Daten). Aber für die oben beschriebene Ausgangssituation genügt diese Lösung.
Die nachfolgende Abbildung zeigt die konkreten Schritte:
Beispieldatei Download
Dieser Macro Code legt man nun als VBS Datei clipboard.vbs in den „Macros“ Ordner unseres PDF Druckers (Installationsverzeichnis unseres 7-PDF Printers).
Downloads
Anhang | Größe |
---|---|
Codebeispiel herunterladen | 439 Bytes |