La situation initiale

Le fichier PDF à créer doit avoir un nom de fichier défini qui doit être compilé à partir des valeurs numéro de client et numéro de facture (ID client_numéro de facture.pdf). Dans la gestion des marchandises, il n'y a malheureusement aucun moyen d'ajouter des données d'impression ou similaires à un travail d'impression (via des caractères de contrôle comme c'est normal). Selon l'évaluation générale, attendre une extension correspondante du fabricant d'ERP est très irréaliste. Cependant, l'ERP peut fournir le nom de fichier souhaité dans le presse-papiers de Windows. Nous en profitons.

La solution

Notre imprimante PDF lira le nom de fichier souhaité dans le presse-papiers Windows et le prendra en compte. Nous utilisons pour cela le framework VBScript de l'imprimante PDF, qui peut être utilisé immédiatement après l'installation. Pour accéder au nom de fichier PDF souhaité, nous accédons ici au presse-papiers Windows lorsque le PDF est imprimé à partir de l'ERP, puis l'enregistrons comme souhaité dans un fichier PDF basé sur le modèle Customer ID_InvoiceNo.pdf.

Pour cela, nous utilisons le code de macro VBScript suivant :

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

Créer une balise de macro de fonction VBS individuelle

Nous utilisons le code macro suivant dans la configuration de l'imprimante 7-PDF.

<vbs:clipboard(null)>

La capture d'écran ci-dessous montre les étapes nécessaires en détail (il suffit de cliquer pour agrandir). Cette MacroTag appelle la fonction VBS créée "clipboard" (de clipboard.vbs) et la valeur renvoyée de cette fonction remplace l'entrée MacroTag individuelle par la valeur de retour réelle. Comme la valeur de retour est le nom du fichier précédemment copié dans le presse-papiers, la boîte de dialogue d'impression affiche alors également ce nom de fichier et le PDF à créer peut être enregistré à volonté. L'exemple pourrait bien sûr être étendu pour inclure d'autres données du presse-papiers (par exemple, inclure le chemin complet du répertoire ou d'autres données). Mais cette solution est suffisante pour la situation initiale décrite ci-dessus.

La figure ci-dessous montre les étapes concrètes :

Presse-papiers des étapes

Télécharger un exemple de fichier

Vous pouvez télécharger l'exemple de code. Après le déballage, veuillez déplacer le fichier de macro VBS qu'il contient dans le dossier des macros de l'imprimante PDF comme décrit ci-dessus. Vous pouvez également définir un répertoire différent avec le paramètre MacroDir.

Téléchargements

appendice taille
Télécharger l'exemple de code 439 Bytes

Top