Bien que PDFium soit principalement connu pour la visualisation et la manipulation de fichiers PDF, PDFium VCL offre également de puissantes fonctionnalités de création de PDF. Créer un PDF La démo montre comment générer des documents PDF de manière programmatique avec du texte, des formes, des tableaux et des filigranes.
Aperçu
Cette démo crée un nouveau document PDF avec divers éléments, notamment du texte formaté, des formes géométriques, un tableau simple et un filigrane diagonal. Elle présente les API de création de PDF principales disponibles dans PDFium VCL.
Principales fonctionnalités
- Créer de nouveaux documents – Générer des PDF à partir de zéro
- Ajouter du texte – Insérer du texte formaté avec des polices, des tailles et des couleurs personnalisées.
- Dessiner des formes. – Créer des rectangles, des chemins et d'autres formes géométriques.
- Créer des tableaux. – Créer des tableaux simples basés sur du texte.
- Ajouter des filigranes. – Insérer du texte tourné et semi-transparent.
Exigences des DLL PDFium
Avant d'exécuter toute application PDFium VCL, assurez-vous que les fichiers DLL PDFium sont installés :
pdfium32.dll/pdfium64.dll– Versions standard (environ 5-6 Mo)pdfium32v8.dll/pdfium64v8.dll– Avec le moteur JavaScript V8 (environ 23-27 Mo)
Installation : Exécuter PDFiumVCL\DLLs\CopyDlls.bat en tant qu'administrateur pour copier automatiquement les DLL dans les répertoires système Windows.
Créer un nouveau document PDF.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
procedure CreateNewPdf; var Pdf: TPdf; begin Pdf := TPdf.Create(nil); try // Create empty document Pdf.CreateDocument; Pdf.Active := True; // Add first page (A4 size: 595 x 842 points) Pdf.AddPage(1, 595, 842); Pdf.PageNumber := 1; // Add content here... // Save the document Pdf.SaveAs('output.pdf'); finally Pdf.Active := False; Pdf.Free; end; end; |
Ajouter du texte.
La AddText La méthode ajoute du texte formaté à la page actuelle.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
procedure TPdf.AddText( const Text, Font: WString; // Text content and font name FontSize: Single; // Font size in points X, Y: Double; // Position (from bottom-left) Color: TColor = clBlack; // Text color Alpha: Byte = $FF; // Transparency (0-255) Angle: Double = 0.0 // Rotation angle in degrees ); // Examples Pdf.AddText('Hello World', 'Arial', 24, 50, 750, clBlack, $FF, 0.0); Pdf.AddText('Subtitle', 'Times New Roman', 14, 50, 720, clGray, $FF, 0.0); Pdf.AddText('Rotated Text', 'Arial', 18, 300, 400, clRed, $80, 45.0); |
Exemple complet de création de PDF.
|
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 |
procedure TFormMain.CreateSimplePDF; begin Pdf.CreateDocument; Pdf.Active := True; try // Add A4 page Pdf.AddPage(0, 595, 842); // Title Pdf.AddText(EditTitle.Text, 'Arial', 18, 50, 750, clBlack, $FF, 0.0); // Author line Pdf.AddText('By: ' + EditAuthor.Text, 'Arial', 12, 50, 720, clGray, $FF, 0.0); // Body text Pdf.AddText('This is a simple PDF document created with PDFium VCL.', 'Arial', 12, 50, 680, clBlack, $FF, 0.0); Pdf.AddText('You can add various elements to your PDF:', 'Arial', 12, 50, 650, clBlack, $FF, 0.0); // Optional features if CheckShapes.Checked then AddShapes; if CheckTable.Checked then AddTable; if CheckWatermark.Checked then AddWatermark; // Save Pdf.SaveAs('Sample.pdf'); finally Pdf.Active := False; end; end; |
Dessin de formes avec CreatePath.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// Create a path starting at (X, Y) procedure TPdf.CreatePath( X, Y: Single; // Starting point FillMode: TPdfFillMode = fmNone; // None, Alternate, or Winding FillColor: TColor = clBlack; // Fill color FillAlpha: Byte = $FF; // Fill transparency Stroke: Boolean = True; // Draw outline StrokeColor: TColor = clBlack; // Outline color StrokeAlpha: Byte = $FF; // Outline transparency StrokeWidth: Single = 1.0; // Line width LineCap: TPdfLineCap = lcDefault; // Line end style LineJoin: TPdfLineJoin = ljDefault; // Line join style BlendMode: TPdfBlendMode = bmDefault // Color blending ); // Create a rectangle path procedure TPdf.CreatePath( X, Y, Width, Height: Single; // Rectangle bounds // Same optional parameters as above... ); |
Exemples de dessin de formes.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
procedure TFormMain.AddShapes; begin // Filled rectangle with blue color at 50% opacity Pdf.CreatePath(100, 550, 150, 80, fmWinding, $FFCCAA, $80); Pdf.AddPath; Pdf.AddText('Rectangle', 'Arial', 10, 120, 580, clBlack, $FF, 0.0); // Another filled shape (green) Pdf.CreatePath(350, 590, 80, 80, fmWinding, $CCFFCC, $80); Pdf.AddPath; Pdf.AddText('Shape', 'Arial', 10, 370, 580, clBlack, $FF, 0.0); end; |
Création de chemins complexes.
|
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 |
procedure DrawTriangle(Pdf: TPdf); begin // Start path at first vertex Pdf.CreatePath(200, 300, fmWinding, clBlue, $80, True, clNavy, $FF, 2.0); // Draw lines to other vertices Pdf.LineTo(300, 300); Pdf.LineTo(250, 400); // Close the path Pdf.ClosePath; // Add to page Pdf.AddPath; end; procedure DrawCurve(Pdf: TPdf); begin Pdf.CreatePath(100, 200, fmNone, clBlack, $FF, True, clRed, $FF, 2.0); Pdf.MoveTo(100, 200); // Bezier curve with control points Pdf.BezierTo( 150, 250, // Control point 1 200, 250, // Control point 2 250, 200 // End point ); Pdf.AddPath; end; |
Création de tableaux simples.
|
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 |
procedure TFormMain.AddTable; var X, Y: Double; I: Integer; begin X := 100; Y := 450; // Table header Pdf.AddText('Item', 'Arial', 10, X, Y, clBlack, $FF, 0.0); Pdf.AddText('Quantity', 'Arial', 10, X + 100, Y, clBlack, $FF, 0.0); Pdf.AddText('Price', 'Arial', 10, X + 200, Y, clBlack, $FF, 0.0); // Draw header underline Pdf.CreatePath(X, Y - 5, 250, 0.5, fmNone, clBlack, $FF, True, clBlack, $FF, 1.0); Pdf.AddPath; // Table rows for I := 1 to 3 do begin Y := Y - 20; Pdf.AddText('Item ' + IntToStr(I), 'Arial', 9, X, Y, clBlack, $FF, 0.0); Pdf.AddText(IntToStr(I), 'Arial', 9, X + 100, Y, clBlack, $FF, 0.0); Pdf.AddText('$' + IntToStr(I * 10) + '.00', 'Arial', 9, X + 200, Y, clBlack, $FF, 0.0); end; end; |
Ajout de filigranes.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
procedure TFormMain.AddWatermark; begin // Large, semi-transparent, rotated text Pdf.AddText('SAMPLE', 'Arial', 72, 200, 200, clGray, $30, 45.0); end; // More sophisticated watermark procedure AddDiagonalWatermark(Pdf: TPdf; const Text: string); begin // Center of A4 page Pdf.AddText(Text, 'Arial', 60, 595 / 2 - 100, // X centered 842 / 2, // Y centered $CCCCCC, // Light gray $40, // 25% opacity 45.0 // 45 degree rotation ); end; |
Ajout d'images.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
procedure AddImageToPdf(Pdf: TPdf; const ImageFile: string); var Picture: TPicture; begin Picture := TPicture.Create; try Picture.LoadFromFile(ImageFile); // Add at position with automatic sizing Pdf.AddPicture(Picture, 50, 400); // Or with specific dimensions Pdf.AddPicture(Picture, 50, 400, 200, 150); finally Picture.Free; end; end; |
Documents multi-pages.
|
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 |
procedure CreateMultiPagePdf; var Pdf: TPdf; I: Integer; begin Pdf := TPdf.Create(nil); try Pdf.CreateDocument; Pdf.Active := True; for I := 1 to 5 do begin // Add page Pdf.AddPage(I, 595, 842); Pdf.PageNumber := I; // Add content Pdf.AddText('Page ' + IntToStr(I), 'Arial', 24, 250, 400, clBlack, $FF, 0.0); end; Pdf.SaveAs('multipage.pdf'); finally Pdf.Active := False; Pdf.Free; end; end; |
Tailles de page.
| Format | Width (pts) | Height (pts) |
|---|---|---|
| A4 Portrait | 595 | 842 |
| A4 Landscape | 842 | 595 |
| Letter Portrait | 612 | 792 |
| Letter Landscape | 792 | 612 |
| Legal Portrait | 612 | 1008 |
Cas d'utilisation.
- Génération de rapports. – Créer des rapports formatés à partir de données.
- Création de factures. – Générer des factures et des reçus.
- Génération de certificats. – Créer des certificats avec des modèles.
- Modèles de documents – Remplir les modèles avec du contenu dynamique
Conclusion.
La démo de création de PDF montre que PDFium VCL ne sert pas seulement à la visualisation, mais est un ensemble complet d'outils PDF. Grâce à la prise en charge du texte, des formes, des images et des documents multipages, vous pouvez générer des PDF professionnels entièrement à partir du code.
Combiné aux capacités de visualisation et de manipulation du composant, PDFium VCL offre tout ce dont vous avez besoin pour une gestion complète des PDF dans les applications Delphi.
Découvrez la création de PDF avec Composant PDFium VCL et apportez la génération dynamique de documents à vos applications.