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:

Steps Clipboad

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

Top