Script PDF Mailer: Déterminez l'adresse électronique du destinataire de la facture à partir de vos données d'impression et envoyez-la automatiquement par courrier électronique.

Avec notre exemple de macro VBScript "pdfmailer.vbs" présenté ici, nous aimerions vous montrer comment vous pouvez envoyer une impression automatique de facture à partir, par exemple, d'un système ERP directement aux destinataires par e-mail, et l'adresse e-mail nécessaire du destinataire de la facture est obtenue à partir des données d'impression. Le VBScript de notre PDFMailer lit l'adresse électronique requise du destinataire de la facture à partir des données d'impression et envoie le PDF de la facture précédemment généré sous la forme d'un courrier électronique entièrement automatique. L'exemple présenté ici devrait vous aider à mettre en œuvre vous-même vos exigences. En fonction de vos besoins et des circonstances, l'exemple présenté ici devra peut-être être adapté. Cependant, cela devrait vous permettre de commencer. Pour notre exemple, un serveur de messagerie commun (SMTP) est utilisé dans notre script. Un exemple fictif de calcul est utilisé comme base de calcul.

Exemple de facture avec l'adresse électronique du destinataire incluse (en rouge)
Exemple de facture avec l'adresse électronique du destinataire incluse (en rouge)

L'exemple de calcul sous forme de fichier DOC ainsi que le PDFMailer VBScript peuvent être téléchargés gratuitement ci-dessous. Vous pouvez donc le tester vous-même !

Pour ce faire, placez d'abord la macro VBScript PDF Mailer dans le InstallRoot de l'imprimante PDF et là, dans le répertoire Macros, c'est-à-dire généralement sous C:\Programmes\7-PDF\PDF Printer\Macros.

Il est maintenant important d'adapter les données d'accès SMTP de la macro à votre serveur de messagerie à l'aide d'un éditeur tel que Notepad++, puis de sauvegarder le fichier VBScript adapté et modifié. Attention, vous pouvez avoir besoin de droits d'administrateur car ils sont situés sous C:\Programmes.

Ouvrez ensuite notre exemple de facture dans Microsoft Word pour simuler l'impression d'une facture. Vous devez maintenant adapter l'adresse électronique du destinataire à vos souhaits (en rouge).

Imprimez maintenant l'exemple de calcul via l'imprimante 7-PDF ! La boîte de dialogue d'impression apparaît, vous saisissez un chemin de stockage du PDF et créez le PDF. À ce moment-là, un courriel est envoyé au destinataire. Et c'est entièrement automatique...

L'exemple présenté ici a pour but de vous montrer comment vous pouvez automatiser vos processus à un haut degré même avec 7-PDF Printer et quelques lignes de code VBScript. La voie de la numérisation n'est pas difficile!

Extension PDF Mailer par 7-PDF

Si vous ne maîtrisez pas VBScript et que vous avez besoin d'une solution standard pour l'intégration dans votre reporting à partir de WaWi, ERP ou CRM sans avoir besoin de développement personnalisé, le plug-in PDF Mailer 7-PDF est le choix idéal. En l'intégrant dans votre imprimante 7-PDF, vous améliorez considérablement sa fonctionnalité. Cela permet l'intégration de commandes externes (codes de contrôle) pour un contrôle précis de vos processus d'impression. Après avoir connecté avec succès le plugin à une instance de votre imprimante 7-PDF, vous avez la possibilité d'utiliser ces codes de contrôle dans vos travaux d'impression. Ces codes peuvent être insérés directement dans le texte imprimé ou dans les formulaires d'impression provenant de systèmes tels que ERP, CRM ou WaWi. Avec seulement quelques codes de contrôle simples, vous pouvez, par exemple, envoyer des travaux d'impression directement par e-mail et créer des messages e-mail individuels et d'autres personnalisations. Une vue d'ensemble complète de tous les codes de contrôle disponibles, y compris @@to, se trouve dans la documentation ultérieure.

Faites attention au pilote d'imprimante

7-PDF Printer peut être installé en tant qu'imprimante réseau PDF en plus d'une installation classique en tant qu'application de bureau ou d'une installation d'imprimante PDF locale (standard). Le paramètre d'installation pour cela est /SHARE.

Après l'installation comme imprimante réseau PDF, il peut être nécessaire de changer le pilote d'imprimante sélectionné après l'installation en 7-PDF Printer, comme indiqué dans la capture d'écran ci-dessous, afin d'extraire les données d'impression comme indiqué ici. Pour une plus grande compatibilité, un pilote Postscript du système d'exploitation peut être utilisé. Dans le cas de l'extraction de données d'impression, cependant, nous avons besoin d'un accès direct à celles-ci, et cela n'est possible que si l'instance d'imprimante réseau PDF (dans la capture d'écran "PDF-EXP-Prt") est exploitée sous le pilote d'imprimante "7-PDF Printer". Vous devez donc vous assurer que l'instance de l'imprimante utilise également le bon pilote d'imprimante.

Le paramètre 'extracttext' nécessite le pilote d'imprimante 7-PDF Printer.
Le paramètre extracttext nécessite le pilote d'imprimante 7-PDF Printer.

Dans la macro ci-dessous, les données d'impression sont lues au moyen du paramètre extracttext. La ligne de code pertinente ici est:

Context("Config")("extracttext") = "yes"

Remarque: à partir de Windows 10, vous devez désactiver temporairement le partage d'imprimante pour la durée du changement de pilote, sinon vous recevrez un message d'erreur du système d'exploitation.

Nous en arrivons maintenant au code réel de notre exemple, que nous avons enregistré dans le répertoire Macros dans le fichier VBS pdfmailer.vbs comme décrit ci-dessus.

	
    Rem -- global vars
    Dim parsed_email
		
    Rem -- This script will illustrate how to extract and process the text
    Rem -- of the printed output.
     
    Sub OnConfigLoaded()
		Rem -- MsgBox "OnConfigLoaded"
		
        Rem -- Modify the configuration to extract text from the printer
        Rem -- output.
        Context("Config")("extracttext") = "yes"
    End Sub
	 
    Sub OnPreprocessText()
		
		Rem -- MsgBox "ProcessText"
		
		Const ForReading = 1
		Dim fn, f, fso
		Dim l, a, c, z
		
        Rem -- Get the name of the text file from the context object
        fn = Context("TextFileName")
		
		parsed_email = "-"
	
        Rem -- Parse Text from PDF line by line and find the E-Mail: part!
        Set fso = CreateObject("Scripting.FilesystemObject")
        Set f = fso.OpenTextFile(fn, ForReading)
        While Not f.AtEndOfStream
			 Rem -- Read line-by-line from the text inside the pdf
            l = trim(f.ReadLine())

			Rem -- We're looking for the E-Mail:  ... line here.
			a = Mid(l,1,7)
			If a = "E-Mail:" Then
				c = Split(l)
				for each z in c
					If z <> "E-Mail:" Then
						Rem -- Split line by space!
						Rem -- Fill "parsed_email" with email.
						parsed_email = z
					End If		
				Next	
			End If
        Wend
        f.Close
		
		Rem -- Clean up
        Set fso = Nothing
		
    End Sub

	Sub OnMacrosApplied
		Rem -- MsgBox parsed_email

        Rem -- Make sure the configuration isn't reloaded because of an option set selection.
        Context("Config")("rememberlastoptionset") = "no"  

		Rem -- Don't like to open/show the generated pdf here after mail sending...
		Context("Config")("showpdf") = "no"
		
	End Sub
	
	Sub OnAfterPrint()
		
		Rem -- After the pdf is successfull generated, we send them via SMTP to
		Rem -- the recipient that we have parsed before...
		
		Rem -- Send mail.
                Context("Config")("email") = "yes"
		Context("Config")("emailclienttype") = "smtp"
				
		Rem -- send email to the mail address inside the pdf text!
		Context("Config")("emailfrom") = "FROM@YOURSERVER.COM"
		Context("Config")("emailto") = parsed_email
		Context("Config")("emailsubject") = "Your Invoice!"
		
		Rem -- we would like html as body text to format it.
		Context("Config")("emailbodytype") = "html"
		Context("Config")("emailbody") = "Attached you will find your invoice as PDF!<br><b>Regards from XYZ Company!</b>"
		
		Rem -- Send per SMTP Server
		Context("Config")("emailserver") = "SMTP.YOURSERVER.COM"
		
		Rem -- We use port 465 for SSL
		Context("Config")("emailport") = "465" 
		
		Rem -- Login Data for your SMTP Server
		Context("Config")("emailusessl") = "yes"
		Context("Config")("emailuser") = "YOUR_SMTP_USERNAME"
		Context("Config")("emailpassword") = "YOUR_SMTP_PASSWORD"
		
		MsgBox "The invoice should have been sent by mail, now!"
	
	End Sub

Téléchargement du fichier d'exemple

Vous pouvez télécharger gratuitement ici l'exemple de code (pdfmailer.vbs.zip) mais aussi l'exemple de facture (invoiceexample.doc.zip).

Top