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

Soyez le premier à donner votre avis sur cette source.

Vue 54 868 fois - Téléchargée 8 325 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
-
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
-
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
-
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
-
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 -
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)

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.