Snap2pdf : imprimer un état access en pdf via un instantanée snp et postscript

Soyez le premier à donner votre avis sur cette source.

Vue 31 379 fois - Téléchargée 5 948 fois

Description

L'interpréteur PostScript AFPL GhostScript (logiciel libre) permet de convertir en Pdf un fichier PostScript .ps résultant d'une impression sur un pilote d'imprimante PostScript quelconque. Un pilote tel que CutePdf utilise cet interpréteur PostScript en interne, mais on doit saisir un nom de fichier Pdf (et on ne peut pas le piloter en VBA, l'interpréteur PostScript n'est pas appelé dans ce cas, et le fichier reste en PostScript). Snap2Pdf automatise l'impression par le code d'un état Access en Pdf en évitant la boîte de dialogue pour saisir le chemin du fichier .ps. Comme je n'ai pas réussi à remplir automatiquement cette boîte de dialogue depuis Access, la solution est d'exporter un instantanée Access (une vue ou réplique à l'identique de l'état) sous forme de fichier .snp, qui peut ensuite être lu par la visionneuse autonome d'instantanée Access, le SnapShot Viewer. Le SnapShot Viewer comprend un exécutable pour visualiser et imprimer l'instantané, mais aussi et surtout un contrôle Active pilotable par le code : du coup, on peut complètement automatiser la conversion en Pdf depuis Access, en couleurs et avec les images, contrairement à tous les autres modes d'export d'état Access, qui sont tous plus ou moins limités (pour ne pas dire bogués même). Par exemple, l'export d'un état Access au format RFT n'exporte pas les images, et les champs peuvent être tronqués si on ne respecte pas une liste considérable de "Tips" ou précautions à prendre pour ne pas avoir de défauts !

Voir la doc pour la procédure d'installation à respecter.

Patrice Dargenton.

Source / Exemple :


Cf .zip

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

Sous Windows 8 (32 ou 64 bits), le pilote d'imprimante "Apple Color LaserWriter 12/600" est absent, on peut installer à la place le pilote "Generic" : "MS Publisher Color Printer" (vous pouvez renommez cette imprimante en "Apple Color LaserWriter 12/600" si vous ne voulez pas recompiler Snap2Pdf).
Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

Si vous obtenez l'erreur n°7 : "Mémoire insuffisante" au lancement de Snap2Pdf.exe, il y a deux solutions possibles : la première consiste à intégrer le code source VB6 de Snap2Pdf dans un formulaire Access (pas de difficulté particulière). La seconde consiste à recompiler l'exécutable sur le poste sur lequel le bug se produit (il faut donc installer VB6 sur ce poste, cela ne marche pas si on recompile depuis un autre poste. Le fait d'installer VB6 ne corrige pas le problème pour l'exécutable précédent, il faut le recompiler). Je n'ai pas trouvé la cause du problème, en tout cas cela remet sérieusement en cause la pérennité des applications VB6 : ou bien revenir à VBA ou bien passer à DotNet.
Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

Sous Windows Vista, le pilote "Apple Color LaserWriter 12/600" est absent, on peut installer à la place le pilote "HP Color LaserJet 2800 Series PS" (vous pouvez renommez l'imprimante installée si vous ne voulez pas recompiler Snap2Pdf).

En VBA la ligne suivante est inutile (elle n'est utilisée qu'en VB6 dans Snap2Pdf.exe) :
Public Const sPiloteImprimantePostScript$ = "Apple Color LaserWriter 12/600"
Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

Options de l'imprimante en DotNet2 : www.codeproject.com/csharp/qPrintComponent.asp
Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

http://sourceforge.net/projects/PDFCreator/
PdfCreator utilise une imprimante virtuelle PostScript, et s'ils ont réussi à désactiver l'option ICM lors de la création de l'imprimante, cela veut dire qu'en épluchant le code on doit forcément trouver la solution (mais c'est une usine à gaz à première vue).
Afficher les 50 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.