Imprimez vos documents Word au format PDF à l'aide de PDFCreator
Date de publication : 01-09-2007 , Date de mise à jour : 01-09-2007
Par
Olivier Lebeau (Heureux-oli sur DVP)
Comment imprimer vos documents Word pour les versions antérieures à Word 2007 en fichier PDF
I. Introduction
II. L'impression
III. PDFCreator et le VBA
III-A. Code fourni par PDFCreator
III-B. Code personnalisé.
IV. Remerciements
I. Introduction
Aujourd'hui, le format le plus répandu est probablement le PDF, il ne connait pas
de limite liée à la plateforme, ni au système d'exploitation utilisé. C'est donc un
format universel pour l'échange de document. Malheureusement, ce format n'est apparu
pour Word qu'avec la version 2007 et pour pouvoir l'utiliser il faut installer un complément
fourni gratuitement par Microsoft. Un lien vers ce téléchargement est proposé dans la Foire Aux Questions pour
Word sur DVP
FAQ.
Pour les versions antérieures vous avez plusieurs possibilités, qui peuvent être payantes comme
Adobe Acrobat; PDF Creator (en deux mots). Ou des version gratuites qui sont disponibles sur le WEB,
la plus célèbre étant probablement PDFCreator (en un seul mot).
C'est cette à cette version que nous allons nous intéresser d'un peu plus près.
Après avoir téléchargé le logiciel d'installation, il faut passer à l'étape suivante : l'installation.
Pour cette étape, on ne peut plus facile et l'interface est en Français.
II. L'impression
Lorsque l'on transforme un document en fichier PDF, on ne parle pas de sauvegarde ou d'exportation mais d'impression.
Lors de son installation, le logiciel à crée une imprimante logicielle qui va permettre la transformation de votre
document en document PDF.
Si vous allez dans le panneau de configuration et dans la section imprimante, vous verrez une imprimante
supplémentaire "PDFCreator". Un clic droit permet à l'aide du menu contextuel d'afficher les propriétés de l'imprimante.
On y retrouve toutes les propriétés d'un imprimante classique.
Pour imprimer le document, il faut passer par le menu "Fichier" "Imprimer", ou utiliser la combinaison
"Ctrl" + "P". Vous obtiendrez ensuite une boité de dialogue vous proposant de choisir l'imprimante. C'est l'imprimante
par défaut qui est active.
Il faut changer l'imprimante par défaut et la remplacer par PDFCreator.
Validez par OK.
Dans cette boîte de dialogue, vous pouvez si vous le désirez changer le nom du document, par défaut c'est le nom du
document qui est utilisé par PDFCreator. Si votre document n'a pas encore été sauvegardé, c'est le nom par défaut qui s'y trouve.
Vous pouvez aussi renseigner les propriétés du document.
Cette boîte de dialogue possède d'autres bouton que les traditionnels OK ou Cancel.
Le bouton mettre dans la file d'attente va ouvrir une autre boîte de dialogue contenant les éventuels documents déjà présent dans la liste d'attente.
Le bouton option va ouvrir une boîte de dialogue permettant de modifier ou ajuster certains paramètres.
Une fois l'impression validée, la boîte de dialogue standard vous demandant de préciser l'endroit de la sauvegarde et le nom du fichier peut encore être changé.
Lorsque toutes ces manipulations sont terminées, votre document est transformé en un fichier PDF.
 |
Si votre document possède des hyperliens, seul les liens en "dur" seront présents dans votre PDF, les liens cachés, comme les tables des matières, seront ignorés.
|
III. PDFCreator et le VBA
III-A. Code fourni par PDFCreator
Pour le VBA, PDFCreator est fourni avec un formulaire VBA. Pour pourvoir utiliser ce formulaire, il faut préalablement
l'importer dans un module.
Il faut pour cela ouvrir l'éditeur VBA par la combinaison "Alt" + "F11", ou Outils, Macro, Visual Basic Editor.
Ensuite, Fichier, Importer un fichier et le répertoire qui contient les fichiers est "C:\Program Files\PDFCreator\COM\MS Office\".
Une fois importé, le fichier donne accès a un formulaire.
Derrière ce formulaire, on retrouve le code qui l'accompagne.
La première chose à faire pour utiliser ce formulaire c'est de le charger.
Pour charger le formulaire, on utilisera
Load "frmPDFCreator"
frmPDFCreator.Show
|
Le simple fait de charger le formulaire va initialiser la procédure d'impression.
Private Sub UserForm_Initialize()
If Len(ActiveDocument.Path) = 0 Then
MsgBox "Please save the document first!", vbExclamation
End
End If
Set PDFCreator1 = New clsPDFCreator
With PDFCreator1
If .cStart("/NoProcessingAtStartup") = False Then
CommandButton1.Enabled = False
AddStatus "Can't initialize PDFCreator."
Exit Sub
End If
DefaultPrinter = ActivePrinter
SetPrinter "PDFCreator"
End With
AddStatus "PDFCreator initialized."
End Sub
|
La première action du code lors du chargement du formulaire est la vérification du nom et du chemin du document
pour s'assurer que le document a bien été sauvegardé.
If Len(ActiveDocument.Path) = 0
Si le document n'a pas été sauvegardé, un message vous y invite.
Création d'une instance de PDFCreator.
Set PDFCreator1 = New clsPDFCreator
Propriété cStart en lecture seule renvoie un booleen. Si cette propriété est fausse, le bouton de commande est
désactivé et la procédure doit être stoppée. Un message dans la fenêtre des statuts est
affiché en utilisant la procédure AddStatus.
DefaultPrinter = ActivePrinter va stocker dans la variable DefaultPrinter le nom de l'imprimante
active et ensuite SetPrinter "PDFCreator" va définir PDFCreator comme imprimante Active.
Private Sub CommandButton1_Click()
Dim outName As String
If InStr(1, ActiveDocument.Name, ".", vbTextCompare) > 1 Then
outName = Mid(ActiveDocument.Name, 1, InStr(1, ActiveDocument.Name, ".", vbTextCompare) - 1)
Else
outName = ActiveDocument.Name
End If
CommandButton1.Enabled = False
If OptionButton1.Value = True Then
SaveWholeDocumentAsPDF outName
End If
If OptionButton2.Value = True Then
With PDFCreator1
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = ActiveDocument.Path
.cOption("AutosaveFilename") = outName & "-1_3"
.cOption("AutosaveFormat") = 0
.cClearCache
End With
PrintPage 1
Sleep 1000
PrintPage 3
Sleep 1000
PDFCreator1.cCombineAll
Sleep 1000
PDFCreator1.cPrinterStop = False
End If
End Sub
|
Si l'initialisation s'est déroulée correctement le bouton execute est actif et l'impression peut commencer.
La routine tient alors compte des choix effectués dans le groupe d'options.
Si l'option 2 est activée, l'impression se déroule dans la procédure ci-avant et les pages obtenues par la procédure
PrintPage 1 et 3 sont assemblées dans un même document avec .cCombineAll.
La partie impression est traitée par le code suivant
Private Sub SaveWholeDocumentAsPDF(Filename As String)
AddStatus "Start ..."
With PDFCreator1
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = ActiveDocument.Path
.cOption("AutosaveFilename") = Filename
.cOption("AutosaveFormat") = 0
.cClearCache
DoEvents
ActiveDocument.PrintOut Background:=False
DoEvents
.cPrinterStop = False
End With
End Sub
|
Le code qui suit sert à imprimer une page déterminée. Le numéro de cette page est défini dans la routine
lancée par un clic sur le bouton d'impression du formulaire.
Private Sub PrintPage(PageNumber As Integer)
Dim cPages As Long
cPages = Selection.Information(wdNumberOfPagesInDocument)
If PageNumber > cPages Then
MsgBox "This document has only " & cPages & " pages!", vbExclamation
End If
DoEvents
ActiveDocument.PrintOut Background:=False, Range:=wdPrintFromTo, From:=CStr(PageNumber), To:=CStr(PageNumber)
DoEvents
End Sub
|
Que ce soit pour une page, plusieurs ou la totalité du document, c'est toujours la méthode printout qui est utilisée.
Private Sub PDFCreator1_eError()
AddStatus "ERROR [" & PDFCreator1.cErrorDetail("Number") & "]: " & PDFCreator1.cErrorDetail("Description")
End Sub
|
Cette partie sert à exporter vers l'utilisateur le message d'erreur.
Private Sub PDFCreator1_eReady()
AddStatus "File'" & PDFCreator1.cOutputFilename & "' was saved."
PDFCreator1.cPrinterStop = True
CommandButton1.Enabled = True
End Sub
|
Remet l'imprimante en mode attente une fois le document terminé.
Private Sub AddStatus(Str1 As String)
With TextBox1
If Len(.Text) = 0 Then
.Text = Now & ": " & Str1
Else
.Text = .Text & vbCrLf & Now & ": " & Str1
End If
.SelStart = Len(.Text)
.SetFocus
End With
End Sub
|
Routine pour l'affichage des messages, pour chaque message, on ajoute le temps système.
Private Sub SetPrinter(Printername As String)
With Dialogs(wdDialogFilePrintSetup)
.Printer = Printername
.DoNotSetAsSysDefault = True
.Execute
End With
End Sub
|
Enlève PDFCreator et remet l'imprimante par défaut.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
SetPrinter DefaultPrinter
PDFCreator1.cClose
Set PDFCreator1 = Nothing
Sleep 250
DoEvents
End Sub
|
III-B. Code personnalisé.
Comment utiliser l'imprimante PDFCreator en utilisant son propre code et se passer du
formulaire.
Le but est d'intégrer un morceau de code pour le lancer avec un bouton et obtenir en
final un document PDF.
Ne pas oublier d'ajouter la référence à PDFCreator dans notre projet.
Ci-dessous, le code qui va nous permettre de lancer l'impression d'un document en PDF.
Il ne restera qu'à insérer un bouton dans la barre d'outils pour lancer cette routine.
Sub testPrintPDF()
Dim oldPrinter As String
Dim stChemin As String
Dim stNom As String
Dim PDFCreator1 As New clsPDFCreator
oldPrinter = ActivePrinter
ActivePrinter = "PDFCreator"
If Len(ActiveDocument.Path) = 0 Then
stChemin = "c:\temp"
Else
stChemin = ActiveDocument.Path
End If
If Len(ActiveDocument.Name) = 0 Then
stNom = "documentPDF.pdf"
Else
stNom = ActiveDocument.Name
End If
With PDFCreator1
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = stChemin
.cOption("AutosaveFilename") = stNom
.cOption("AutosaveFormat") = 0
.cStart
.cClearCache
End With
ActiveDocument.PrintOut Background:=True
PDFCreator1.cClose
ActivePrinter = oldPrinter
End Sub
|
Plusieurs choses sont importantes, la récupération du nom du document et son chemin.
Ces deux données vont nous faciliter la tâche et nous allons pouvoir sauvegarder le document
dans le même répertoire que notre document Word. Si le document n'a pas été enregistré, l'impression
PDF se fera dans le répertoire C:\temp et aura comme nom de fichier documentPDF.pdf
Pour ajouter un bouton dans la barre d'outils, un clic droit, personnaliser, Commandes, Macro et le nom
de la procédure devrait s'y trouver.
Il reste encore un point noir, lorsque l'on lance une impression, PDFCreator continue d'afficher les boîtes de
message demandant de faire des choix. Pour éviter ces boîtes de message, il faut procéder comme suit :
Démarrer -> Tous les programmes -> PDFCreator -> PDFCreator.
Imprimante -> Options -> Enregistrement automatique -> Valider
Nous sommes arrivés au bout.
IV. Remerciements
Merci à l'équipe qui maintient le logiciel PDFCreator en "état de marche". Ces personnes le font bénévolement.
Merci à DVP qui met à notre disposition des ressources d'une qualité exceptionnelle.


Copyright © 2007 Olivier Lebeau. Aucune reproduction, même partielle, ne peut être faite
de ce site et de l'ensemble de son contenu : textes, documents, images, etc
sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E
de dommages et intérêts. Droits de diffusion permanents accordés à developpez LLC.
Cette page est déposée à la
SACD.