Générer des pdf avec delphi et pdf creator

5/5 (28 avis)

Vue 57 292 fois - Téléchargée 8 813 fois

Description

Ce code source est une transcription d'un exemple rédigé en C# et fourni avec PDF Creator.

En effet, PDF Creator expose un certain nombre d'interfaces permettant de générer directement des documents en PDF à partir de n'importe quel langage supportant les interfaces COM.
Comme PDF Creator est un excellent freeware, mais hélas mal documenté au niveau des interfaces mises à disposition, j'ai pensé que cela vous ferait gagner du temps d'avoir un exemple rédigé en Delphi.

Une fois PDF Creator installé, vous pouvez soit directement utiliser le code source joint ou bien suivre les étapes suivantes :

1/ Dans l'éditeur de Delphi, créez un nouveau projet
2/ Sélectionner "Projet/Importer une bibliothèque de types...", choisissez "PDFCreator (version 2.0)" et validez
3/ Ajoutez PDFCreator_TLB dans la clause Uses de votre unité utilisant PDF Creator.
4/ Déclarez les membres dans la classe de votre fiche ou des variables globales (au choix) de type :
{ Instance de PDF Creator }
PDFCreator: TclsPDFCreator;
{Instance du gestionnaire d'erreurs de PDF Creator.
Sera affecté en cas d'erreur uniquement.}
PDFError: clsPDFCreatorError;

5/ Pour la suite, voir le code source et ses commentaires

Ménageons les arbres de notre planète : éteignons nos imprimantes et ne faisons plus que des PDF.

Y a pas à dire, PDF Creator c'est pas de la daube. (lol)

PDF Creator est disponible à l'adresse suivante : http://sourceforge.net/projects/pdfcreator/

Source / Exemple :


{Voir code documenté}

Conclusion :


Si je peux et si vous en faites la demande, j'essaierai de vous fournir d'autres exemples exploitant tout le potentiel de PDF Creator.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
joc02 Messages postés 1 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 12 octobre 2012
12 oct. 2012 à 14:19
Moi j'aurais une question.

Comment peut-on rendre compatible notre code, indépendamment de la version de PDFCreator ?
Je m'explique, je dois faire un exe imprimant en PDF. Par contre pour des personnes qui ont des versions de PDFCreator différentes. Du coup j'ai codé avec ma version (pdfCreator 1.3.2) et lorsque je veux imprimer sur une machine avec pdfCreator 1.5.0, ça plante. L'enregistrement de la classe a échoué, le GUID n'est plus le même.

Doit-on inclure autant de TLB.pas que de version et d'aiguiller l'appli tant bien que mal ?

Merci pour vos lumières.
oberat Messages postés 2 Date d'inscription mardi 3 juillet 2012 Statut Membre Dernière intervention 28 août 2012
23 juil. 2012 à 12:01
Hello!
Heureusement que des tutos comme ça existe, c'est tellement galère de trouver de la doc sur PdfCreator, même 10 ans après!
Par contre, je serai un peu moins enjoué que kleptogeek concernant la qualité du code dans la fin du printit, j'avouerai que je ne saisi pas l'intérêt du booléen et l'utilisation du timer dans ce contexte et surtout de cette façon, m'enfin ça reste du pinaillage, et je ne vais pas cracher sur un exemple d'utilisation d'API ^^
Merci bien,
kleptogeek Messages postés 1 Date d'inscription samedi 15 janvier 2011 Statut Membre Dernière intervention 21 février 2011
21 févr. 2011 à 15:04
Très bon code. Pas un problème avec la version 0.9.1 de PDFcreator.

Merci beaucoup !
aurelioig Messages postés 1 Date d'inscription vendredi 3 septembre 2010 Statut Membre Dernière intervention 27 septembre 2010
27 sept. 2010 à 17:01
I solved the VBA_TLB issue, adding this code I found, just below "type"

// From Unit VBA_TLB

// *********************************************************************//
// Interface: _Collection
// Flags: (4432) Hidden Dual OleAutomation Dispatchable
// GUID: {A4C46780-499F-101B-BB78-00AA00383CBB}
// *********************************************************************//
_Collection = interface(IDispatch)
['{A4C46780-499F-101B-BB78-00AA00383CBB}']
function Item(var Index: OleVariant): OleVariant; safecall;
procedure Add(var Item: OleVariant; var Key: OleVariant; var Before: OleVariant;
var After: OleVariant); safecall;
function Count: Integer; safecall;
procedure Remove(var Index: OleVariant); safecall;
function _NewEnum: IUnknown; safecall;
end;

// *********************************************************************//
// DispIntf: _CollectionDisp
// Flags: (4432) Hidden Dual OleAutomation Dispatchable
// GUID: {A4C46780-499F-101B-BB78-00AA00383CBB}
// *********************************************************************//
_CollectionDisp = dispinterface
['{A4C46780-499F-101B-BB78-00AA00383CBB}']
function Item(var Index: OleVariant): OleVariant; dispid 0;
procedure Add(var Item: OleVariant; var Key: OleVariant; var Before: OleVariant;
var After: OleVariant); dispid 1;
function Count: Integer; dispid 2;
procedure Remove(var Index: OleVariant); dispid 3;
function _NewEnum: IUnknown; dispid -4;
end;
cs_couf Messages postés 213 Date d'inscription dimanche 5 janvier 2003 Statut Membre Dernière intervention 6 janvier 2011 1
3 mai 2010 à 10:21
Salut Grand maitre
Désolé de corriger mais PDFcréator n'est pas un FREEWARE mais un logiciel libre sous licence GPL. La différence est énorme.

Je ferme la parenthèse par PITIE pas de TROLL (merci d'avance)
Afficher les 28 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.