1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
| Option Explicit
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'============================================================================================='
' ajouter la référence PDFCreator.exe au projet
'============================================================================================='
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private mvarNomFichier As String
Private mvarNomDir As String
Private mvarChemDocComplet As String
'
' IMPORTANT : le composant est déclaré avec ses évènements
Private WithEvents PDFCreator1 As PDFCreator.clsPDFCreator '/ composant principal
Private pErr As clsPDFCreatorError '/ classe de gestion d'erreur
Private opt As clsPDFCreatorOptions '/ classe de paramétrage
Private noStart As Boolean '/ variable de contrôle
Private ImprimanteParDefaut As String '/variable imprimante par défaut
Public Property Let ChemDocComplet(ByVal vData As String)
'/ Propriété : chemin absolu du fichier à exporter (ex : C:\Temp\monword.doc)
mvarChemDocComplet = vData
End Property
Public Property Get ChemDocComplet() As String
ChemDocComplet = mvarChemDocComplet
End Property
Public Property Let NomDir(ByVal vData As String)
'/ Propriété : chemin absolu du répertoire de sortie (ex : C:\Temp\)
mvarNomDir = vData
End Property
Public Property Get NomDir() As String
NomDir = mvarNomDir
End Property
Public Property Let NomFichier(ByVal vData As String)
'/ Propriété : nom du fichier de sortie sans extension (ex : monarchive)
mvarNomFichier = vData
End Property
Public Property Get NomFichier() As String
NomFichier = mvarNomFichier
End Property
Private Sub Class_Initialize()
'
' Instanciation des objets
Set PDFCreator1 = New clsPDFCreator
Set pErr = New clsPDFCreatorError
'
noStart = True
'
With PDFCreator1
.cVisible = True
If .cStart("/NoProcessingAtStartup") = False Then
If .cStart("/NoProcessingAtStartup", True) = False Then
Exit Sub
End If
' L'imprimante est occupée
.cVisible = True
End If
'
' Instanciation de l'objet clsPDFCreatorOptions avec les options par défaut
Set opt = .cOptions
.cClearCache
'/ A l'installation, PDFCreator mémorise l'imprimante système par défaut,
'/ on la mémorise dans une variable
ImprimanteParDefaut = .cDefaultPrinter
' on indique que l'imprimante a démarré
noStart = False
End With
'
End Sub
Public Sub ConversionPDF()
'
' On affecte les options de sortie qui nous intéressent à l'objet clsPDFCreatorOptions
With opt
'/ Répertoire de sortie
.AutosaveDirectory = Trim$(NomDir)
'/ Fichier de sortie
.AutosaveFilename = Trim$(NomFichier)
.UseAutosave = 1
.UseAutosaveDirectory = 1
'/ format de sortie (0 = PDF)
.AutosaveFormat = 0
End With
'
'/ on affecte ensuite les nouvelles options au composant principal clsPDFCreator
Set PDFCreator1.cOptions = opt
'/ On définit l'imprimante virtuelle comme imprimante par défaut
PDFCreator1.cDefaultPrinter = "PDFCreator"
'/ Impression du document Word (ou autre)
PDFCreator1.cPrintFile Trim$(ChemDocComplet)
'/ On affecte la propriété cPrinterStop à False pour contrôle ultérieur
PDFCreator1.cPrinterStop = False
'
' Tant que la propriété de cPrinterStop est à False, on laisse le temps au composant
' de terminer l'export PDF
While PDFCreator1.cPrinterStop = False
DoEvents
Wend
'
End Sub
Private Sub PDFCreator1_eReady() ' === ÉVÈNEMENT ==='
'!!!! IMPORTANT!!!! c'est en interceptant l'évènement _eReady qu'on sait que l'impression PDF
' est terminé et l'imprimante libérée : cela permet de sortir de la boucle ci-dessus
PDFCreator1.cPrinterStop = True
'
End Sub
Private Sub PDFCreator1_eError() ' === ÉVÈNEMENT ==='
Set pErr = PDFCreator1.cError
MsgBox "Error[" & pErr.Number & "]: " & pErr.Description
' en cas d'erreur, on restaure l'imprimante par défaut du système via la classe principale
PDFCreator1.cDefaultPrinter = ImprimanteParDefaut
'
End Sub
Private Sub Class_Terminate()
'
'/ restauration de l'imprimante par défaut
PDFCreator1.cDefaultPrinter = ImprimanteParDefaut
'
If noStart = False Then
DoEvents
PDFCreator1.cClose
End If
'
DoEvents
'
Set PDFCreator1 = Nothing
Set pErr = Nothing
Set opt = Nothing
'
End Sub |
Partager