Saluto del mondo da Delphi HotPDF Component.
Benvenuti alla guida completa per il Delphi HotPDF Component. Programma dimostrativo HelloWorld!
Informazioni su HotPDF Component.
HotPDF Component è una libreria di elaborazione PDF potente e versatile, progettata specificamente per gli sviluppatori di Delphi e C++Builder. Questo componente completo fornisce un'ampia API che consente agli sviluppatori di creare, manipolare e modificare documenti PDF con facilità e precisione.
Caratteristiche principali di HotPDF Component:
- Creazione e generazione di PDF: Crea documenti PDF da zero con il controllo completo su layout, formattazione e contenuto.
- Supporto per testo e grafica: Aggiungi testo, immagini, forme e grafica complessa alle pagine PDF.
- Supporto multilingue: Supporto completo per Unicode per la visualizzazione di testo internazionale.
- Gestione dei font: Incorpora i font per garantire un aspetto coerente del documento su diversi sistemi.
- Opzioni di compressione: Utilizza algoritmi di compressione per ottimizzare le dimensioni del file.
- Caratteristiche di sicurezza: Crittografia dei documenti, protezione con password e controlli delle autorizzazioni.
- Manipolazione dei documenti: Unisci, dividi e modifica documenti PDF esistenti.
- Supporto per tabelle e moduli: Crea tabelle complesse e moduli interattivi.

Panoramica del programma HelloWorld.dpr
Il HelloWorld.dpr Il programma di esempio è un'ottima introduzione al componente HotPDF.
La funzionalità più basilare e importante: la funzione TexOut. Questo programma dimostrativo mostra anche le funzionalità di base per la creazione di PDF.
Funzionalità principali:
1. Creazione di documenti PDF
La funzione principale del programma è generare documenti PDF contenenti il testo multilingue "Hello World". CreatePDF La procedura dimostra:
- Inizializzazione dei componenti: Configurazione e impostazione corretta del componente THotPDF.
- Proprietà del documento: Impostazione dei metadati, come le opzioni di compressione e l'incorporamento dei font.
- Rendering di testo multilingue: Visualizzazione di testo in 11 lingue diverse, tra cui inglese, spagnolo, tedesco, francese, italiano, portoghese, russo, giapponese, turco, cinese e coreano.
- Gestione dei font: Utilizzo del font Arial Unicode MS per il supporto alla visualizzazione multilingue.
- Compressione: Creazione di un documento PDF compresso.
2. Gestione delle finestre e integrazione con il sistema.
Il programma include funzionalità avanzate di enumerazione delle finestre che dimostrano:
- Enumerazione delle finestre del sistema: Utilizzo dell'API Windows
EnumWindowsper iterare attraverso tutte le finestre di primo livello. - Corrispondenza del titolo della finestra: Implementazione della corrispondenza di sottostringhe per identificare le applicazioni target.
- Chiusura automatica delle finestre: Invio.
WM_CLOSEmessaggi per chiudere i visualizzatori PDF che potrebbero avere file aperti. - Prevenzione dei conflitti: Garantire che non si verifichino conflitti di accesso ai file durante la creazione di nuovi file PDF.
3. Gestione degli errori e delle risorse.
Il programma dimostra le migliori pratiche per:
- Gestione della memoria: Creazione e distruzione corrette delle istanze dei componenti.
- Sicurezza delle eccezioni: Utilizzo di blocchi try-finally per garantire la pulizia delle risorse.
- Feedback degli utenti: Fornire output nella console per informare gli utenti sullo stato di avanzamento del programma.
Dettagli sull'implementazione tecnica:
Tecnologia di compressione.
Il programma crea un documento PDF con compressione FlateDecode.
Strategia di gestione dei font.
Il programma utilizza una strategia di selezione dei font sofisticata:
- Arial Unicode MS: Utilizzato per la maggior parte delle lingue grazie al suo ampio supporto per i caratteri.
- Incorporamento dei font: Garantisce un aspetto coerente su diversi sistemi.
Compatibilità tra versioni.
Il codice include direttive di compilazione condizionale per supportare sia le versioni moderne che quelle precedenti di Delphi:
- Supporto per XE2 e versioni successive: Utilizza unità con namespace (WinApi.Windows, System.SysUtils, ecc.).
- Supporto per versioni precedenti: Torna all'utilizzo dei nomi delle unità tradizionali per le versioni più vecchie di Delphi.
Valore educativo.
Questo esempio di "HelloWorld" ha molteplici scopi didattici:
- Introduzione ai componenti: Fornisce un'introduzione graduale all'utilizzo dei componenti HotPDF.
- Buone pratiche: Dimostra una corretta gestione delle risorse e la gestione degli errori.
- Integrazione di sistema: Mostra come integrare la generazione di PDF con le operazioni del sistema Windows.
- Internazionalizzazione: Illustra la gestione di testo multilingue nei documenti PDF.
Guida introduttiva.
Per eseguire questo programma di esempio:
- Assicurarsi che il componente HotPDF sia installato correttamente nel tuo ambiente di sviluppo Delphi.
- Apri il file del progetto HelloWorld.dpr.
- Compila ed esegui il programma.
- Il programma creerà automaticamente un file PDF con compressione.
- Esamina i file generati per vedere come viene visualizzato il testo multilingue.
Codice sorgente.
Di seguito è riportato il codice sorgente completo e ben documentato per il programma dimostrativo HelloWorld:
|
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
{************************************************************} // HotPDF PDF Component // Copyright(c)2007-2025, https://www.loslab.com {************************************************************} // HelloWorld Demo Program for HotPDF Component // This program demonstrates basic PDF creation capabilities // including multilingual text support and compression options {************************************************************} program HelloWorld; {$APPTYPE CONSOLE} // Console application type {$I ..\..\..\Lib\HotPDF.inc} // Include HotPDF configuration file uses // EurekaLog units for memory leak detection and debugging (optional) {$IFDEF EurekaLog} EMemLeaks, // Memory leak detection EResLeaks, // Resource leak detection EDebugJCL, // JCL debugging support EDebugExports, // Export debugging information EFixSafeCallException, // SafeCall exception handling EMapWin32, // Win32 mapping support EAppConsole, // Console application support EDialogConsole, // Console dialog support ExceptionLog7, // Exception logging {$ENDIF EurekaLog} // System units - different namespaces for XE2+ vs older versions {$IFDEF XE2+} WinApi.Windows, // Windows API functions WinApi.Messages, // Windows message constants System.SysUtils, // System utilities System.Classes, // Base classes (TStringList, etc.) Vcl.Graphics, // Graphics support {$ELSE} Windows, // Windows API functions (older Delphi) Messages, // Windows message constants (older Delphi) SysUtils, // System utilities (older Delphi) Classes, // Base classes (older Delphi) Graphics, // Graphics support (older Delphi) {$ENDIF} HPDFDoc; // HotPDF main component unit // Creates a compressed PDF file with multilingual "Hello World" text // Parameters: // FileName: Output PDF file name procedure CreatePDF(const FileName: string); var HotPDF: THotPDF; // Main HotPDF component instance begin // Create HotPDF component instance HotPDF := THotPDF.Create(nil); try // Configure PDF properties HotPDF.AutoLaunch := true; // Automatically open PDF after creation HotPDF.FileName := FileName; // Set output file name // Enable FlateDecode compression HotPDF.Compression := cmFlateDecode; // Enable FlateDecode compression WriteLn('Creating compressed PDF: ', FileName); HotPDF.FontEmbedding := true; // Embed fonts for better compatibility HotPDF.BeginDoc; // Start PDF document creation // Set Unicode font for multilingual text support // Arial Unicode MS supports most languages except Korean // procedure SetFont ( FontName: AnsiString; FontStyle: TFontStyles; ASize: Single; FontCharset: TFontCharset = DEFAULT_CHARSET; IsVertical: boolean = false); // DEFAULT_CHARSET: 1 - Font is chosen based on Name. If the described font is not available on the system, Windows will substitute another font HotPDF.CurrentPage.SetFont('Arial Unicode MS', [], 12, 1, False); // Display "Hello World" in multiple languages // TextOut parameters: (X, Y, Angle, Text) HotPDF.CurrentPage.TextOut(80, 50, 0, 'Hello, Delphi PDF world!'); // English HotPDF.CurrentPage.TextOut(80, 70, 0, 'Hola, mundo Delphi PDF!'); // Spanish HotPDF.CurrentPage.TextOut(80, 90, 0, 'Hallo, Delphi PDF Welt!'); // German HotPDF.CurrentPage.TextOut(80, 110, 0, 'Bonjour, monde PDF Delphi!'); // French HotPDF.CurrentPage.TextOut(80, 130, 0, 'Ciao, mondo Delphi PDF!'); // Italian HotPDF.CurrentPage.TextOut(80, 150, 0, 'Olá, mundo Delphi PDF!'); // Portuguese HotPDF.CurrentPage.TextOut(80, 170, 0, 'Здравствуйте, Delphi PDF мир!'); // Russian HotPDF.CurrentPage.TextOut(80, 190, 0, 'こんにちは、Delphi PDFの世界!'); // Japanese HotPDF.CurrentPage.TextOut(80, 210, 0, 'Merhaba, Delphi PDF dünyası!'); // Turkish HotPDF.CurrentPage.TextOut(80, 230, 0, '你好,Delphi PDF世界'); // Chinese HotPDF.CurrentPage.TextOut(80, 250, 0, '여보세요, Delphi PDF 세계!'); // Korean HotPDF.EndDoc; // Finalize and save the PDF document WriteLn('PDF created successfully: ', FileName); finally HotPDF.Free; // Clean up HotPDF component end; end; // Global variables for window enumeration and PDF creation var Title: String; // Individual title string (unused in current implementation) Titles: TStrings; // List of window titles to search for Window: HWND; // Window handle (unused in current implementation) WindowText: array [0 .. 255] of Char; // Buffer for window text (unused in current implementation) WindowTitle: String; // Window title string (unused in current implementation) I: Integer; // Loop counter (unused in current implementation) // Callback function for EnumWindows API // This function is called for each top-level window in the system // Parameters: // hWnd: Handle to the current window being enumerated // lParam: User-defined data (in our case, pointer to TStrings with target titles) // Returns: True to continue enumeration, False to stop function EnumWindowsProc(HWND: HWND; lParam: lParam): BOOL; stdcall; var Titles: TStrings; // List of target window titles I: Integer; // Loop counter WindowText: array [0 .. 255] of Char; // Buffer to store window text WindowTitle: String; // Current window's title as string begin Result := true; // Continue enumeration by default Titles := TStrings(lParam); // Cast lParam back to TStrings // Get the window title text if GetWindowText(HWND, WindowText, SizeOf(WindowText)) > 0 then begin WindowTitle := String(WindowText); // Convert char array to string // Check if window title contains any of our target strings for I := 0 to Titles.Count - 1 do begin // Use Pos function to check if target string is contained in window title if Pos(Titles[I], WindowTitle) > 0 then begin // Send WM_CLOSE message to close the window PostMessage(HWND, WM_CLOSE, 0, 0); Break; // Exit loop after finding first match end; end; end; end; // Main program execution begins here begin // Close any existing PDF files that might be open in PDF viewers // This prevents file access conflicts when creating new PDFs with same names Titles := TStringList.Create; try // Define list of window title substrings to search for // Any window containing these strings will be closed // This will close Adobe and Foxit PDF reader & editor and many other PDF apps Titles.CommaText := '"HelloWorld.pdf", "Foxit"'; // Enumerate all top-level windows and close matching ones // EnumWindows calls our callback function for each window EnumWindows(@EnumWindowsProc, lParam(Titles)); finally Titles.Free; // Clean up string list end; // Display program header WriteLn('=== HotPDF HelloWorld Demo ==='); WriteLn('This demo creates a compressed PDF file with multilingual text.'); WriteLn(''); // Create compressed PDF CreatePDF('HelloWorld.pdf'); // Display completion message WriteLn(''); WriteLn('PDF file created successfully!'); WriteLn('The PDF file uses FlateDecode compression for optimal file size.'); WriteLn(''); WriteLn('Press Enter to exit...'); ReadLn; // Wait for user input before closing console end. |