雖然 PDFium 主要以 PDF 檢視和處理而聞名,但 PDFium VCL 也提供了強大的 PDF 建立功能。 建立 PDF 演示程式展示瞭如何使用文本、形狀、表格和水印,以程式設計方式生成 PDF 文件。
概述
此演示程式建立一個新的 PDF 文件,其中包含各種元素,包括樣式文本、幾何形狀、一個簡單的表格和一個對角水印。它演示了 PDFium VCL 中可用的核心 PDF 建立 API。
主要特性
- 建立新文件 – 從頭開始生成 PDF 檔案
- 新增文本 – 插入具有自定義字型、大小和顏色的樣式文本
- 繪製形狀 – 建立矩形、路徑和其他幾何形狀
- 建立表格 – 建立簡單的基於文本的表格
- 新增水印 – 插入旋轉、半透明的文本
PDFium DLL 的要求
在執行任何 PDFium VCL 應用程式之前,請確保已安裝 PDFium DLL 檔案:
pdfium32.dll/pdfium64.dll– 標準版本(約 5-6 MB)pdfium32v8.dll/pdfium64v8.dll– 包含 V8 JavaScript 引擎的版本(約 23-27 MB)
安裝: 執行 PDFiumVCL\DLLs\CopyDlls.bat 以管理員身份,自動將 DLL 檔案複製到 Windows 系統目錄。
建立新的 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; |
新增文本
好的。 AddText 該方法將樣式化的文本新增到當前頁面。
|
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); |
完整的 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; |
使用 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... ); |
形狀繪製示例。
|
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; |
建立複雜的路徑。
|
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; |
構建簡單的表格。
|
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; |
新增水印。
|
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; |
新增影像。
|
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; |
多頁文件
|
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; |
頁面尺寸
| 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 |
用例
- 報告生成 – 從資料建立格式化報告
- 發票建立 – 生成發票和收據
- 證書生成 – 使用模板建立證書
- 文件模板 – 使用動態內容填充模板
結論。
"建立 PDF 演示" 示例表明,PDFium VCL 不僅僅用於檢視,它是一個完整的 PDF 工具包。它支援文本、形狀、影像和多頁文件,您可以完全通過程式碼生成專業的 PDF 檔案。
結合元件的檢視和操作功能,PDFium VCL 為 Delphi 應用程式提供處理 PDF 所需的一切。
探索 PDF 建立 使用 PDFium VCL 元件 並將動態文件生成帶入您的應用程式。