OVH Cloud OVH Cloud

Création de PDF

12 réponses
Avatar
J-Pierre
Bonjour tout le monde,

Il y a déjà un certain temps (2 ans ?) nous avions utilisé PDF Creator 0.7 pour créer des fichiers PDF à partir d'Access. Nous
avions également sorti le code qui en modifiant les paramètres du fichier INI de PDF Creator permettait sans intervention
manuelle de définir le nom du fichier PDF résultant.

En cherchant sur Google, je vois un post de Pierre qui mentionne la nouvelle version 0.8 de PDF Creator. Savez-vous si le
paramètrage se fait toujours sur la base du fichier INI et que donc le code est directement réutilisable ?

Je sais que je pourrais l'installer et regarder, mais si quelqu'un a déjà la réponse, ce sera plus facile pour moi :-)

Merci d'avance
J-Pierre

10 réponses

1 2
Avatar
J-Pierre
Bonsoir,

Finalement, j'ai installé cette nouvelle version de PDFCreator, toujours le même fichier INI, toujours les mêmes paramètres,
le code écrit en 2003 fonctionne parfaitement.

Mais j'ai une autre question.....

Les états sont définis pour être imprimés sur l'imprimante par défaut. Je ne désire pas modifier l'imprimante par défaut sur
la machine de l'utilisateur pour "imprimer" un PDF, je procède de la manière suivante. J'ai créé un état bidon
"rptImprimantePDF" dont l'imprimante est PDFCreator. Lorsque je veux imprimer sur l'imprimante PDFCreator, je modifie
temporairement l'imprimante de mon état en copiant PrtDevNames. Dans un environnement multi-utilisateur, si deux personnes (ou
plus) veulent imprimer le même état au même moment sur l'imprimante PDFCreator, donc elles modifient l'état en même temps,
est-ce que ça va marcher ?

Y-a-t-il une solution mieux que celle-ci ?


Voilà le code:

Function PrintToPDFPrinter(rptToPrint As String)

'Private Sub imprimerPDF_Click()
'Call PrintToPDFPrinter("MonEtat")
'End Sub

Dim rpt1 As Report, rpt2 As Report
Dim rptPrinter As String
rptPrinter = "rptImprimantePDF"

DoCmd.OpenReport rptToPrint, acViewDesign
DoCmd.OpenReport rptPrinter, acViewDesign

Set rpt1 = Reports(rptToPrint)
Set rpt2 = Reports(rptPrinter)

rpt1.PrtDevNames = rpt2.PrtDevNames

DoCmd.Close acReport, rptPrinter, acSaveNo
DoCmd.OpenReport rptToPrint, acNormal
DoCmd.Close acReport, rptToPrint, acSaveNo

End Function

Merci
J-Pierre
Avatar
3stone
Salut,

"J-Pierre"
| Finalement, j'ai installé cette nouvelle version de PDFCreator, toujours le même fichier INI,
toujours les mêmes paramètres,
| le code écrit en 2003 fonctionne parfaitement.
|
| Mais j'ai une autre question.....
|
| Les états sont définis pour être imprimés sur l'imprimante par défaut. Je ne désire pas modifier
l'imprimante par défaut sur
| la machine de l'utilisateur pour "imprimer" un PDF, je procède de la manière suivante. J'ai créé
un état bidon
| "rptImprimantePDF" dont l'imprimante est PDFCreator. Lorsque je veux imprimer sur l'imprimante
PDFCreator, je modifie
| temporairement l'imprimante de mon état en copiant PrtDevNames. Dans un environnement
multi-utilisateur, si deux personnes (ou
| plus) veulent imprimer le même état au même moment sur l'imprimante PDFCreator, donc elles
modifient l'état en même temps,
| est-ce que ça va marcher ?


Si tu as défini ton "imprimantePDF" et que tu es en A2003,
utilise la collection "Printers"...

Application.Printer = Application.Printers("imprimantePDF")

Regarde dans l'aide pour tous les paramètres.


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
J-Pierre
Salut Pierre,

J'étais justement dans l'aide, je suis en Office XP 2002, je ne connaissais pas cette collection Printers ;-(((((

J'ai trouvé:
Utilisez les propriétés DeviceName, DriverName et Port pour renvoyer des informations système sur une imprimante spécifique.
Ce n'est pas très clair, je préfère ta solution, mais j'ai encore une question :-)

A quoi correspond la propriété Application.Printer ? Si je vais dans l'explorateur d'objet et que j'ouvre l'aide, ça m'envoie
sur la page "Objet Printer".... ça n'aide pas beaucoup. Toujours dans l'explorateur d'objets, je vois une autre propriété
report.printer, ça correspond à quoi ? là aussi, j'ouvre l'aide, ça me renvoie sur la même page....

Et si je modifie cette propriété Application.Printer, ne dois-je pas la remettre à "quelque chose" lorsque j'ai fini
d'imprimer ?

Merci
J-Pierre


"3stone" a écrit dans le message de news: %
Salut,

"J-Pierre"
| Finalement, j'ai installé cette nouvelle version de PDFCreator, toujours le même fichier INI,
toujours les mêmes paramètres,
| le code écrit en 2003 fonctionne parfaitement.
|
| Mais j'ai une autre question.....
|
| Les états sont définis pour être imprimés sur l'imprimante par défaut. Je ne désire pas modifier
l'imprimante par défaut sur
| la machine de l'utilisateur pour "imprimer" un PDF, je procède de la manière suivante. J'ai créé
un état bidon
| "rptImprimantePDF" dont l'imprimante est PDFCreator. Lorsque je veux imprimer sur l'imprimante
PDFCreator, je modifie
| temporairement l'imprimante de mon état en copiant PrtDevNames. Dans un environnement
multi-utilisateur, si deux personnes (ou
| plus) veulent imprimer le même état au même moment sur l'imprimante PDFCreator, donc elles
modifient l'état en même temps,
| est-ce que ça va marcher ?


Si tu as défini ton "imprimantePDF" et que tu es en A2003,
utilise la collection "Printers"...

Application.Printer = Application.Printers("imprimantePDF")

Regarde dans l'aide pour tous les paramètres.


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/





Avatar
J-Pierre
Encore moi......

Je crois que j'ai compris, je copie les 3 propriétés DeviceName, DriverName et Port de l'imprimante PDF dans les propriétés de
"application.printer" et après, j'ouvre mon état. Mais ne dois-pas restaurer les propriétes d'application.printer lorsque mon
état est imprimé ?

Sur ce, bonne nuit et encore merci.

J-Pierre
Avatar
3stone
Salut,

"J-Pierre"
| Je crois que j'ai compris, je copie les 3 propriétés DeviceName, DriverName et Port de
l'imprimante PDF dans les propriétés de
| "application.printer" et après, j'ouvre mon état.

En principe, il n'y a que le DriverName qui change...


| Mais ne dois-pas restaurer les propriétes d'application.printer lorsque mon
| état est imprimé ?


voui...
le drivername... que tu auras sauvé dans une simple variable string ;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
J-Pierre
Bonjour,

C'était trop beau, les propriétés DeviceName, DriverName et Port sont en lecture seule... Y-a-t-il quelque part un bout de
code qui change dynamiquement l'imprimante de destination d'un état et restaure l'imprimante d'origine après impression ? Ou
bien faut-il continuer à modifier la propriété PrtDevNames de l'objet Report avant de l'ouvrir ?

Merci
J-Pierre

"3stone" a écrit dans le message de news: e%23$
Salut,

"J-Pierre"
| Je crois que j'ai compris, je copie les 3 propriétés DeviceName, DriverName et Port de
l'imprimante PDF dans les propriétés de
| "application.printer" et après, j'ouvre mon état.

En principe, il n'y a que le DriverName qui change...


| Mais ne dois-pas restaurer les propriétes d'application.printer lorsque mon
| état est imprimé ?


voui...
le drivername... que tu auras sauvé dans une simple variable string ;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/






Avatar
3stone
re,

"J-Pierre"
| Ou bien faut-il continuer à modifier la propriété PrtDevNames de l'objet Report avant de l'ouvrir
?


regarde chez Raymond, il a prémâché ;-)
http://officesystem.access.free.fr/vba/imprimantes.htm

tu y trouvera également un "emballage"...


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
J-Pierre
C'est le moins que l'on puisse dire, prémâché :-))))

Au passage, j'ai fait pas mal de recherches, son site est vraiment bien, le tien aussi d'ailleurs, par contre, je ne trouve
plus celui d'Anor....
Ha oui, une remarque pour Raymond, j'ai installé sa base prnprinters, quand je veux visualiser les caractéristiques de
l'imprimante PDFCreator, j'ai un message d'erreur "hors indice....." mais je vois les paramètres

Malheureusement, je n'ai pas trouvé ma réponse, je vais donc continuer à copier la propriété PrtDevNames d'un état bidon dans
l'état que je veux convertir en PDF, et faire un close acSaveNo.

Quelques remarques au sujet de l'utilisation de PDFCreator:

Quand on ouvre l'état, l'écran n'est pas stable pendant que le fichier PDF se crée, et le formulaire n'est plus plein écran
quand ça se termine. J'ai donc mis tout le code pour créer mon PDF dans un form avec fen indépendante que j'ouvre avec
acDialog, et ensuite, j'ai un docmd.maximize.

La création de l'état prend un certain temps et parfois un temps certain. Il faut attendre avant de pouvoir utiliser le
fichier PDF, et il faut aussi attendre avant de changer le paramétrage de PDFCreator, du code style:

Call DeleteFile(Wchemin) 'supprimer le fichier PDF s'il existe
Call PDFCreatorSetUp(1, WnomFichier) 'mettre PDFCreator en mode automatique
Call PrintToPDFPrinter(nomEtatAccess) 'imprimer (créer le PDF)

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

Do While Not (fso.FileExists(Wchemin))
Call Temporisation(300)
Loop

Set fso = Nothing
Call PDFCreatorSetUp(0, WnomFichier) 'remettre PDFCreator en mode manuel

Un dernier mot: Les 4 paramètres qu'il faut modifier pour passer PDFCretor en mode automatique ou manuel sont:
UseAutosave= 1 ou 0 (1=auto)
UseAutosaveDirectory= 1 ou 0 (1=auto)
AutosaveFilename=xxxxxx (nom du fichier pdf (sans .pdf)
AutosaveDirectory=yyyyyy (répertoire du fichier)

Voilà, vous savez tout
Comme j'ai encore une question plus ou moins en relation, j'ouvre un autre post :-)

Merci Pierre
J-Pierre

"3stone" a écrit dans le message de news:
re,

"J-Pierre"
| Ou bien faut-il continuer à modifier la propriété PrtDevNames de l'objet Report avant de l'ouvrir
?


regarde chez Raymond, il a prémâché ;-)
http://officesystem.access.free.fr/vba/imprimantes.htm

tu y trouvera également un "emballage"...


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/





Avatar
3stone
re,

"J-Pierre"
| par contre, je ne trouve plus celui d'Anor....


=> transmutation ;-))


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
J-Pierre
Anor, il est passé où, ton site ?

"3stone" a écrit dans le message de news: uA$
re,

"J-Pierre"
| par contre, je ne trouve plus celui d'Anor....


=> transmutation ;-))


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/



1 2