Événements VB-Script et macros / Imprimante PDF
L'imprimante PDF prend désormais en charge les macros VBScript et les gestionnaires d'événements (à partir de Professional Edition ou supérieur). Cela signifie que vous pouvez désormais intervenir directement dans le processus de création de PDF en développant vos propres gestionnaires d'événements Visual Basic. En outre, vous pouvez utiliser Visual Basic Script dans vos macros pour interroger ou générer des noms de fichiers, des auteurs, des titres et des descriptions ainsi que des mots clés PDF.
Les événements VBScript sont un autre outil vraiment puissant pour intégrer et utiliser l'imprimante PDF dans vos propres programmes. En écrivant les bons gestionnaires d'événements, vous pouvez obtenir un contrôle complet sur la sortie PDF et l'image et les boîtes de dialogue que les utilisateurs voient pendant le processus de création. Il vous permet d'accéder aux dialogues normaux du programme afin que vous puissiez intégrer vos propres dialogues dans votre langage de programmation préféré.
Les macros VBScript propres sont stockées dans le répertoire "Macros", qui se trouve dans le répertoire d'installation de l'imprimante, sous un nom de fichier simple. Toutes les macros VBScript de ce répertoire sont exécutées par l'imprimante PDF! Interagissez de manière flexible avec l'imprimante PDF, avec une programmation VBScript simple qui vous offre une flexibilité incroyable pour configurer, utiliser et influencer l'imprimante PDF de quelque manière que ce soit!
Cycle de vie du programme
Pour utiliser les fonctionnalités VBScript de l'imprimante PDF, vous devez comprendre le cycle de vie du programme. Le cycle de vie est une description de quel événement est déclenché à quel moment du cycle et les informations alors disponibles en fonction de l'événement et de la section de processus en cours.
Les gestionnaires d'événements lisent et écrivent souvent des informations dans la variable de contexte global. La variable de contexte global contient des informations sur l'état actuel de la création du document. Les événements peuvent contrôler le processus de création en modifiant les valeurs dans la variable de contexte global.
Le tableau de référence suivant, écrit en anglais, montre l'ordre des
Event Handlers
et l'ensemble
Context Variablen.
Event Handler or Context Variable | Description |
---|---|
PrinterName | Name of the used PDF printer.
printername = Context("PrinterName")
reads the PDF printer name into the printername variable. |
AppPath | Holds the full path of the program folder where the PDF printer
is installed.
apppath = Context("AppPath")
reads the program path into the apppath variable. |
PostscriptFileName | This context variable holds the name of the raw postscript output from the printer driver.
Using this file path you can get access to the postscript code as it looks before any modifications are made to it.
filename = Context("PostscriptFileName")
reads the file path into the filename variable. |
DocumentName |
This is the name of the document as it is listed in the print job queue.
The title in the configuration is often based on this value.
However, the title in the configuration is often change whereas the
Context("DocumentName") stays the same in all event handlers.
|
DocumentAuthor |
The Context("DocumentAuthor") represents the name of the author
as it is was given in print job queue. Whereas, the Context("Config")("author")
can change with the configuration the Context("DocumentAuthor")
remains unchanged.
|
DocumentCreationDate | A creation date string read from the raw postscript created by the printer driver. |
Config | This is the loaded configuration. The configuration is probably the most interesting context variable.
It carries information about the current configuration.
Using this context variable you can read and write to the current configuration and change the
PDF or image creation process. Configuration values must be accessed using lower case names.
If you by accident use mixed or upper case names then you will just get an empty result.
Context("Config")("watermarktext") = "Hello World!"
sets the watermark text of the created document. |
OnConfigLoaded | This event is raised when the configuration is loaded from a file. The loaded configuration can be manipulated through Context("Config"). Rem -- Simple example that shows the selected output Rem -- path in a message box Sub OnConfigLoaded() MsgBox context("Config")("output") End Sub
Rem -- Example that creates a sample bookmark at page 1 Sub OnConfigLoaded() Dim filename, fso, content, file
Rem -- Get the name of the Postscript file filename = Context("PostscriptFileName")
Rem -- Load the content fso = CreateObject("Scripting.FileSystemObject") Set file = fso.OpenTextFile(filename, 1) ' 1 = ForReading content = file.ReadAll() file.Close()
Rem -- Insert bookmark content = Replace(content, _ vbcrlf & "%%Page: 1 1" & vbcrlf, _ vbcrlf & "[ /Title (Sample bookmark) /OUT pdfmark" & _ vbcrlf & "%%Page: 1 1" & vbcrlf)
Rem -- Save the file again Set file = fso.OpenTextFile(filename, 2) ' 2 = ForWriting file.Write(content) file.Close() End Sub |
TextFileName | The PDF writer can create a text file with all the text found in the print job.
A text extract can be parsed by an event handler and used to modify values
in the configuration. This is useful if you want to use values from the
printer output as properties in the resulting PDF file.
To enable the text extraction you must set the ExtractText configuration value to yes. textfile = Context("TextFileName")
reads the full path of the extracted text file into the textfile variable.
|
OnPreprocessText | Triggered when the extracted text is ready for processing. REM -- Example that shows the file name of the extracted text file. Sub OnPreprocessText() MsgBox(context("TextFileName")) End Sub This event is only fired if you have set ExtractText=yes in the configuration. |
OnMacrosApplied | Macros have been applied to the configuration. |
OnAfterGUI | Called after the GUI has been shown. It is also called if the GUI is not shown based on the ShowSettings setting.
This is the event where you can make the last adjustments before the PDF or image is created.
You can access and modify information such as document title and author using the REM -- Example that adds the author to the title Sub OnAfterGUI() context("Config")("title") = _ context("Config")("title") & _ " (" & context("Config")("author") & ")" End Sub |
PageCount |
Context("PageCount") contains the number of pages in the output.
|
OutputFileName | Name of the output file. |
FileCount | Number of files in the output. Multiple files are normally created when the output type is an image. |
FileList |
Context("FileList") is a dictionary of file paths. Each entry in this dictionary
represents a single output file. When multiple files are created, this context
variable is very useful to get a complete list of file names.
|
ErrorNumber |
Context("ErrorNumber") is the error code in case of an error.
|
ErrorDescription |
Context("ErrorDescription") is the error description in case of an error.
|
ErrorSource |
Context("ErrorSource") is the error source in case of an error.
|
OnSuccess | OnSuccess is triggered if the document creation is completed without errors. |
OnError | OnError is triggered if there were errors during the document creation. |
OnAfterPrint |
Regardless of the status this event is triggered when the process is completed.
If you need to know if the operation was a success then you can create an
event handler for the OnSuccess event. In this handler you can
set a global variable indicating success and test this variable in the
OnAfterPrint event handler.
|
Gestion des erreurs
Si une erreur se produit lors de l'exécution d'un macro-script, la génération PDF est abandonnée et l'erreur est signalée. Des erreurs peuvent se produire en raison d'un code incorrect ou de la demande explicite du programmeur.
L'exemple de code ci-dessous comment générer une erreur.
-
Sub OnAfterGUI()
-
-
Err.raise(9999, "Test macro script", "Fake error to stop execution.")
-
-
End Sub
Par défaut, le programme affiche le message d'erreur dans une fenêtre de message et l'utilisateur doit confirmer le message en appuyant sur le bouton OK pour continuer.
La fenêtre de message peut être désactivée. Cela peut être fait en définissant le paramètre SuppressErrors et les erreurs peuvent être écrites dans un fichier d'état en définissant le paramètre StatusFile.
Vous pouvez utiliser votre propre code pour répondre aux erreurs. Utilisez OnError pour ces événements. L'exemple de code suivant montre comment vous pouvez appuyer sur le message d'erreur pour une erreur:
-
Sub OnError()
-
-
MsgBox("Error trapped by OnError eventhandler." & vbcrlf & vbcrlf & _
-
-
"Error=" & Context("ErrorNumber") & vbcrlf & _
-
-
"Description=" & Context("ErrorDescription") & vbcrlf & _
-
-
"Source=" & Context("ErrorSource"))
-
-
End Sub
Remarque importante: vous devez faire attention aux majuscules et aux minuscules dans le codage si vous utilisez les noms de l'objet de contexte pour accéder aux informations, etc.
Si vous lisez et écrivez sur Context("Config")("configname")
, tous les Context("Config")("configname")
configuration Context("Config")("configname")
être écrits en minuscules (minuscules)!