PDFium Delphi Component è una libreria di componenti completa e di livello professionale che porta potenti capacità di elaborazione e visualizzazione PDF alle applicazioni Delphi e C++Builder. Usa il motore di rendering PDFium per il rendering delle pagine e la lettura dei documenti, e implementa in Object Pascal tutto ciò che il motore non fornisce
Questa distinzione conta quando si valuta la libreria. PDFium disegna le pagine, estrae il testo e legge le strutture esistenti. Non può firmare un documento, scrivere la cifratura, validare uno standard PDF né emettere una revisione linearizzata o incrementale. PDFium Delphi Component comprende circa 115.000 righe di Object Pascal distribuite su 55 unit, e più di 62.000 di queste righe si trovano in 36 unit che non hanno alcuna controparte nell'API di PDFium — crittografia, firme, cifratura, conformità agli standard, serializzazione PDF, interscambio di dati dei moduli, layout e text shaping. Il tutto viene fornito come sorgente
La libreria è composta da tre componenti registrati: TPdf per l'elaborazione e la manipolazione dei documenti con 475 membri pubblici, TPdfView per la presentazione visiva interattiva con 152 membri, e TPdfThumbnailView per la navigazione delle pagine. Che occorra creare un semplice visualizzatore PDF, un flusso di lavoro su documenti firmati, una pipeline di conversione per l'archiviazione o un sistema completo di gestione documentale, PDFium Delphi Component fornisce gli strumenti e la flessibilità necessari
Le seguenti capacità non hanno controparti nell'API C di PDFium. Ognuna è implementata da PDFium Delphi Component in Object Pascal, verificata rispetto alle clausole pubblicate ISO, ETSI, IETF o FIPS, e disponibile in formato sorgente
Firma completa, non semplice lettura delle firme. PDFium può segnalare che un dizionario di firma esiste; PDFium Delphi Component lo crea
SignPades, SignPadesToStream e SignPadesBytes/Certs, /OCSPs e /CRLs, dizionari VRI per singola firma e marcatore /Extensions /ESIC/SubFilter /ETSI.RFC3161 che coprono l'intero file, per B-LTAICmsSigner che qualsiasi altro backend può implementarePreparePadesRemoteSignature e CompletePadesRemoteSignature scompongono l'operazione così che la chiave privata possa rimanere all'interno di un servizio remoto o di un modulo hardwareValidatePades riporta la baseline più alta raggiunta dal documento più codici di problema a livello di clausola; ValidatePadesTrust e ValidatePadesTrustAsync aggiungono il controllo di affidabilità della catena di certificatiSignPadesWithPdfA converte in PDF/A-4 e firma in una sola chiamata, secondo l'allegato A.7 di EN 319 142-1PDFium apre i file cifrati, ma non scrive la cifratura. PDFium Delphi Component implementa il lato scrittura secondo ISO 32000-2 e le sue specifiche tecniche
SaveAsEncrypted con derivazione delle chiavi V=5 / R=5 / R=6, inclusa l'iterazione hash dell'algoritmo 2.B, e le voci di dizionario /O /U /OE /UE /Perms/Length e tabella dei riferimenti incrociati ricostruita/AuthCode autonomi secondo ISO/TS 32004 — CMS AuthenticatedData con derivazione delle chiavi HKDF, key wrapping e verifica HMACSei famiglie di standard ISO, ciascuna con un validatore che restituisce codici di risultato a livello di clausola e un corrispondente percorso di salvataggio o di iniezione di marcatori
Il motore offre un unico salvataggio sequenziale dell'intero file. Le applicazioni spesso necessitano di molto di più, così PDFium Delphi Component scrive le proprie revisioni sopra l'output semantico del motore
SaveAsLinearized produce file Fast Web View con raggruppamento della prima pagina, due sezioni di riferimenti incrociati e tabelle di hint degli offset di pagina e degli oggetti condivisi dell'allegato FSaveAsObjectStream raggruppa gli oggetti idonei in /ObjStm con ordinamento locale per pagina e copertura completa dei riferimenti incrociati di tipo 2BeginIncrementalSave e CommitIncrementalSave aggiungono solo gli oggetti indiretti modificati e nuovi a sorgenti cifrate o non cifrate, preservando byte per byte l'output precedente insieme a /Prev, /Encrypt, /Info e al /ID permanente; un commit senza modifiche non fa crescere il fileSaveAsRepaired scrive una copia a revisione singola e la riverifica con un caricamento rigoroso indipendente prima di consegnarlaTPdf.PdfVersion riutilizza lo stato del parser di PDFium ed esegue solo una verifica di guardia a otto byte dell'intestazione invece di riparaggiare il documento sorgenteTPdfRandomAccessStore mantiene i dati intermedi in memoria fino a SaveMemoryLimit, quindi migra verso un file temporaneo esclusivo eliminato alla chiusura; la post-elaborazione del salvataggio principale usa la stessa policy per tutti e tre gli spazi di lavoro, mentre gli aggiornamenti predefiniti del catalogo open-action e delle etichette di pagina usano finestre delimitate e un indice sparso/AF secondo ISO 32000-2 §7.11.4 allegati al catalogo o a una pagina di destinazione, con gli otto valori di relazione della Table 45IPdfOcrProvider accetta qualsiasi motore di riconoscimento — il componente fornisce le bitmap di pagina e scrive il livello di testo ricercabile risultante, con stato per pagina e salto del testo esistenteGetStructuredText costruisce una gerarchia pagina / blocco / riga / segmento stilizzato a partire dalla geometria dei caratteri e dalla semantica del PDF con tag; ExtractTables e ExtractDocumentTables rilevano le tabelle con bordi e quelle allineate sugli spazi, preservano le celle unite, attribuiscono punteggi di confidenza ed emettono CSV o JSONBuildReflowDocument trasforma un PDF a layout fisso in un albero di nodi il cui output HTML sicuro preserva intestazioni, paragrafi, elenchi, figure, sezioni di pagina e celle delle tabelleMeasureText e WrapText forniscono il testo a capo senza aggiungere nulla a una paginaTPdfStreamInspector decodifica oggetti stream arbitrari nel rispetto di espliciti budget su sorgente, dati grezzi, dati decodificati, rapporto di espansione e numero di stream, restituendo uno stato strutturato invece di esaurire la memoria su un file appositamente costruitoCuore del sistema di elaborazione PDF, TPdf gestisce tutte le operazioni a livello di documento, tra cui caricamento, salvataggio, estrazione del testo, elaborazione dei moduli e gestione dei metadati
Un controllo visuale sofisticato che fornisce una ricca esperienza di visualizzazione PDF con piena interazione utente
TStream su richiesta tramite LoadCustomDocument, con criteri compatible, strict e recovery oltre a diagnostica xref strutturataSaveAsRepairedSaveAsPdfA / SaveAsPdfAToStream con profilo ICC sRGB incluso e supporto per profili personalizzatiValidatePdfA e proprietà di sola lettura PdfAConformanceMergeFiles (unione in batch con sorgenti delimitate), ImportPagesByIndex (importazione di un sottoinsieme), ImportNPagesToOne (griglia N-up), MovePages (riordino in posto)CreateXObjectFromPage e InsertFormObjectFromXObjectRenderPageProgressive e IPdfCancellationTokenTPdfProgressiveDocument, inclusi hint sparse per byte-range, pianificazione degli intervalli con priorità, tentativi delimitati, annullamento e gate di disponibilità di documento, modulo e paginaSaveAsLinearized, incluso il raggruppamento della prima pagina, due sezioni di riferimenti incrociati e le tabelle di hint degli offset di pagina e degli oggetti condivisi dell'allegato FSaveAsObjectStream, inclusi gruppi ObjStm delimitati, ordinamento locale per pagina e copertura completa degli xref di tipo 2BeginIncrementalSave e CommitIncrementalSave, inclusa la preservazione del prefisso cifrato, i parametri di sicurezza ereditati, i commit senza effetto, la validazione rigorosa alla riapertura, file laterali durevoli, sostituzione atomica, rollback e statistiche per commitTPdfRandomAccessStore e SaveMemoryLimit, incluso lo spill sicuro su file temporaneo, l'I/O posizionale e le diagnostiche di picco per salvataggioFitMode sceglie come la pagina si dispone nel viewport (zoom manuale, dimensioni reali, adatta pagina, adatta larghezza); riapplicato automaticamente al Resize / cambio paginaPageColor disaccoppia lo sfondo della pagina PDF renderizzata dal Color del controllo circostante per i visualizzatori in modalità scuraHighlightSearchText e ClearHighlightPageShadowSize / PageShadowColor) e bordo pagina (PageBorderColor)LinkOptions) ed eventi OnAnnotationLinkClick / OnWebLinkClickAllowUserPageChange, ChangePageOnMouseScrolling, AllowUserTextSelection) per chioschi e integrazioni di sola letturaTPdfThumbnailView| Aspetto | Dettagli |
|---|---|
| Motore di rendering | Google PDFium - Motore PDF standard del settore, ampiamente collaudato |
| Supporto PDF | Versioni PDF da 1.0 a 1.7, file cifrati e protetti da password |
| Compatibilità piattaforma | Applicazioni Windows 32 bit e 64 bit |
| Supporto IDE | Delphi XE5 / C++Builder XE5 (RAD Studio XE5) fino a Delphi/C++Builder 13.1 Florence (RAD Studio 13.1), Lazarus 3.8+ |
| Codifica caratteri | Supporto Unicode completo, elaborazione di testo multilingua |
| Gestione della memoria | Ottimizzata per documenti di grandi dimensioni, utilizzo efficiente delle risorse |
| Thread safety | Progettazione a thread singolo (come richiesto da PDFium) |
PDFium Delphi Component segue un pattern architetturale a livelli che separa nettamente le responsabilità e massimizza la riusabilità del codice
| Livello | File | Responsabilità |
|---|---|---|
| Componenti VCL | PDFium.pas, FPdfThumbnail.pas | Componenti Delphi VCL (TPdf, TPdfView, TPdfThumbnailView) con supporto a tempo di design |
| Binding API | FPdfView.pas, FPdfDoc.pas, FPdfText.pas, FPdfEdit.pas, FPdfAnnot.pas, FPdfFormFill.pas, FPdfPageOps.pas, FPdfAttachment.pas, FPdfSignature.pas, FPdfStructTree.pas, FPdfDataAvail.pas, FPdfExtensions.pas, FPdfFWLEvent.pas, FPdfCompress.pas, FPdfUtils.pas | Dichiarazioni di puntatori a funzione per le chiamate alla DLL PDFium |
| Pipeline PDF/A | FPdfPdfa.pas | Creazione PDF/A-1b (iniezione XMP, OutputIntent ICC sRGB, aggiornamento del catalogo) e validazione (rilevamento della conformità, enumerazione dei problemi) |
| Infrastruttura asincrona | FPdfAsync.pas | IPdfCancellationToken / IPdfCancellationTokenSource, singleton PdfNoCancellationToken e helper TPdfFuture<T> per attività di rendering ed esportazione di lunga durata |
| Helper geometrici | FPdfMatrix.pas | Wrapper OO intorno a FS_MATRIX con helper Translate, Scale, Rotate, Flip, Skew e Multiply |
| Operazioni sulle pagine | FPdfPageOps.pas | Wrapper per FPDF_ImportPagesByIndex, FPDF_ImportPages, FPDF_ImportNPagesToOne, FPDF_MovePages, pianificazione scalabile di batch supportata su file, oltre agli helper Form XObject (CreateXObjectFromPage / InsertFormObjectFromXObject) |
| Pannello laterale miniature | FPdfThumbnail.pas | TPdfThumbnailView — pannello miniature scorrevole con una miniatura per pagina, hover, selezione e navigazione OnPageClick |
| Motore nativo | DLLs\Win32|Win64\pdfium.dll e pdfium.v8.dll | Motore di rendering nativo Google PDFium, con build opzionali abilitate V8 |
TPdf e 36 progetti pronti all'uso riducono i tempi di sviluppoPDFium Delphi Component è progettato per una produttività immediata. La libreria di componenti include:
Che si stia costruendo un semplice visualizzatore PDF o un complesso sistema di elaborazione documentale, PDFium Delphi Component fornisce le fondamenta per una funzionalità PDF professionale nelle applicazioni Delphi e C++Builder