PDFium Delphi Component je komplexná komponentová knižnica profesionálnej úrovne, ktorá prináša výkonné možnosti spracovania a zobrazovania PDF do aplikácií Delphi a C++Builder. Renderovacie jadro PDFium využíva na vykresľovanie strán a čítanie dokumentov a všetko, čo toto jadro neposkytuje, implementuje v Object Pascalu
Tento rozdiel je dôležitý, keď knižnicu hodnotíte. PDFium kreslí strany, extrahuje text a číta existujúce štruktúry. Nevie podpísať dokument, zapísať šifrovanie, overiť súlad s PDF štandardom ani vydať linearizovanú alebo inkrementálnu revíziu. PDFium Delphi Component obsahuje približne 115 000 riadkov Object Pascalu v 55 jednotkách a viac ako 62 000 z týchto riadkov pripadá na 36 jednotiek, ktoré v PDFium API nemajú žiadnu obdobu — kryptografia, podpisy, šifrovanie, súlad so štandardmi, serializácia PDF, výmena dát formulárov, layout a tvarovanie textu. Všetko sa dodáva ako zdrojový kód
Knižnica pozostáva z troch registrovaných komponentov: TPdf na spracovanie a úpravu dokumentov so 475 verejnými členmi, TPdfView na interaktívne vizuálne zobrazenie so 152 členmi a TPdfThumbnailView na navigáciu po stranách. Či už potrebujete vytvoriť jednoduchý prehliadač PDF, pracovný postup s podpísanými dokumentmi, archivačnú konverznú rúru alebo kompletný systém správy dokumentov, PDFium Delphi Component poskytuje nástroje aj flexibilitu, ktoré potrebujete
Nasledujúce možnosti nemajú v C API PDFium žiadnu obdobu. Každú z nich implementuje PDFium Delphi Component v Object Pascalu, overuje ju proti publikovaným ustanoveniam ISO, ETSI, IETF alebo FIPS a dodáva ju ako zdrojový kód
Kompletné podpisovanie, nie len čítanie podpisov. PDFium dokáže oznámiť, že slovník podpisu existuje; PDFium Delphi Component ho vytvára
SignPades, SignPadesToStream a SignPadesBytes/Certs, /OCSPs a /CRLs, slovníky VRI pre každý podpis a značka /Extensions /ESIC/SubFilter /ETSI.RFC3161 pokrývajúce celý súbor, pre B-LTAICmsSigner, ktoré môže implementovať akýkoľvek iný backendPreparePadesRemoteSignature a CompletePadesRemoteSignature rozdeľujú operáciu tak, aby súkromný kľúč mohol zostať vo vzdialenej službe alebo hardvérovom moduleValidatePades hlási najvyššiu dosiahnutú základnú úroveň dokumentu plus kódy problémov na úrovni ustanovení; ValidatePadesTrust a ValidatePadesTrustAsync pridávajú kontrolu dôvery certifikačnej reťazeSignPadesWithPdfA skonvertuje na PDF/A-4 a podpíše jedným volaním, podľa prílohy A.7 normy EN 319 142-1PDFium otvára šifrované súbory. Šifrovanie však nezapíše. PDFium Delphi Component implementuje zapisovaciu stranu podľa ISO 32000-2 a jej technických špecifikácií
SaveAsEncrypted s odvodením kľúča V=5 / R=5 / R=6 vrátane hash iterácie algoritmu 2.B a s položkami slovníka /O /U /OE /UE /Perms/Length a znovu vybudovanou tabuľkou cross-reference/AuthCode podľa ISO/TS 32004 — CMS AuthenticatedData s odvodením kľúča HKDF, key wrapping a overovaním HMACŠesť rodín ISO štandardov, každá s validátorom vrátiacim výsledkové kódy na úrovni ustanovení a s prislúchajúcou cestou ukladania alebo vkladania značiek
Jadro ponúka jedno sekvenčné uloženie celého súboru. Aplikácie často potrebujú viac, preto PDFium Delphi Component zapisuje vlastné revízie nad sémantickým výstupom jadra
SaveAsLinearized vytvára súbory Fast Web View so zoskupením prvej strany, dvoma sekciami cross-reference a hint tabuľkami posunov strán a zdieľaných objektov z prílohy FSaveAsObjectStream zoskupuje vhodné objekty do /ObjStm s poradím lokálnym pre stranu a úplným pokrytím cross-reference typu 2BeginIncrementalSave a CommitIncrementalSave pripájajú k šifrovaným alebo nešifrovaným zdrojom iba zmenené a nové nepriame objekty, pričom predchádzajúci výstup zachovajú bajt po bajte spolu s /Prev, /Encrypt, /Info a trvalým /ID; commit bez zmien súbor nezväčšíSaveAsRepaired zapíše kópiu s jednou revíziou a pred doručením ju znovu overí nezávislým strict načítanímTPdf.PdfVersion znovu používa stav parsera PDFium a vykoná iba osembajtovú kontrolu hlavičky namiesto opätovného parsovania zdrojového dokumentuTPdfRandomAccessStore drží medzidáta v pamäti až do SaveMemoryLimit a potom sa presunie do výhradného dočasného súboru mazaného pri zatvorení; post-processing jadra ukladania používa rovnakú politiku pre všetky tri pracovné priestory, zatiaľ čo predvolené aktualizácie katalógu open-action a page-label používajú ohraničené okná a riedky index/AF podľa ISO 32000-2 §7.11.4 pripojené ku katalógu alebo cieľovej strane s ôsmimi hodnotami vzťahu z Table 45IPdfOcrProvider prijíma akýkoľvek rozpoznávací engine — komponent dodáva bitmapy strán a zapisuje výslednú prehľadávateľnú textovú vrstvu so stavom pre každú stranu a preskočením existujúceho textuGetStructuredText buduje hierarchiu strana / blok / riadok / štylovaný rozsah z geometrie znakov a sémantiky Tagged PDF; ExtractTables a ExtractDocumentTables rozpoznávajú tabuľky s pravítkami aj tabuľky zarovnané bielym priestorom, zachovávajú zlúčené rozsahy, skórujú istotu a vydávajú CSV alebo JSONBuildReflowDocument mení PDF s pevným rozložením na strom uzlov, ktorého bezpečný HTML výstup zachováva nadpisy, odseky, zoznamy, obrázky, sekcie strán a rozsahy tabuliekMeasureText a WrapText poskytujú zalamovanie slov bez pridania čohokoľvek na stranuTPdfStreamInspector dekóduje ľubovoľné stream objekty pod explicitnými rozpočtami zdroja, surových a dekódovaných dát, pomeru expanzie a počtu streamov a vracia štruktúrovaný stav namiesto vyčerpania pamäti na vyrobenom súboreTPdf je srdcom systému spracovania PDF a pokrýva všetky operácie na úrovni dokumentu vrátane načítania, ukladania, extrakcie textu, spracovania formulárov a správy metadát
Pokročilý vizuálny ovládací prvok, ktorý poskytuje bohatý zážitok z prehliadania PDF s plnými možnosťami interakcie používateľa
TStream adaptérov cez LoadCustomDocument, s politikami compatible, strict a recovery plus štruktúrovanou xref diagnostikouSaveAsRepairedSaveAsPdfA / SaveAsPdfAToStream s priloženým profilom sRGB ICC a podporou vlastných profilovValidatePdfA a iba na čítanie dostupnú vlastnosť PdfAConformanceMergeFiles (dávkové zlučovanie s ohraničenými zdrojmi), ImportPagesByIndex (import podmnožiny), ImportNPagesToOne (N-up mriežka), MovePages (preskupenie na mieste)CreateXObjectFromPage a InsertFormObjectFromXObjectRenderPageProgressive a IPdfCancellationTokenTPdfProgressiveDocument vrátane riedkych hintov byte-range, prioritného plánovania rozsahov, ohraničených opakovaní, zrušenia a brán dostupnosti dokumentu, formulára a stranySaveAsLinearized vrátane zoskupenia prvej strany, dvoch sekcií cross-reference a hint tabuliek posunov strán a zdieľaných objektov z prílohy FSaveAsObjectStream vrátane ohraničených skupín ObjStm, poradia lokálneho pre stranu a úplného pokrytia xref typu 2BeginIncrementalSave a CommitIncrementalSave vrátane zachovania šifrovaného prefixu, zdedených bezpečnostných parametrov, commitov bez zmien, validácie pri strict opätovnom otvorení, trvalých vedľajších súborov, atomickej výmeny, rollbacku a štatistík pre každý commitTPdfRandomAccessStore a SaveMemoryLimit vrátane bezpečného prelievania do dočasného súboru, pozičného I/O a diagnostiky špičiek pre každé uloženieFitMode určuje, ako sa strana zmestí do viewportu (manuálny zoom, skutočná veľkosť, prispôsobiť stranu, prispôsobiť šírku); po Resize a zmene strany sa automaticky znovu použijePageColor oddeľuje pozadie vykreslenej PDF strany od Color okolitého ovládacieho prvku, čo pomáha pri prehliadačoch v tmavom režimeHighlightSearchText a ClearHighlightPageShadowSize / PageShadowColor) a orámovanie strany (PageBorderColor)LinkOptions) a udalosťami OnAnnotationLinkClick / OnWebLinkClickAllowUserPageChange, ChangePageOnMouseScrolling, AllowUserTextSelection) pre kiosky a vložené zobrazenia len na čítanieTPdfThumbnailView| Oblasť | Podrobnosti |
|---|---|
| Renderovacie jadro | Google PDFium - priemyselný štandard, osvedčené PDF jadro |
| Podpora PDF | PDF verzie 1.0 až 1.7, šifrované a heslom chránené súbory |
| Kompatibilita platforiem | Aplikácie pre Windows 32-bit a 64-bit |
| Podpora IDE | Delphi XE5 / C++Builder XE5 (RAD Studio XE5) až po Delphi/C++Builder 13.1 Florence (RAD Studio 13.1), Lazarus 3.8+ |
| Kódovanie znakov | Plná podpora Unicode, spracovanie viacjazyčného textu |
| Správa pamäte | Optimalizované pre veľké dokumenty, efektívne využitie zdrojov |
| Bezpečnosť vlákien | Jednovláknový návrh (podľa požiadaviek PDFium) |
PDFium Delphi Component používa vrstvený architektonický vzor, ktorý prehľadne oddeľuje zodpovednosti a maximalizuje znovupoužiteľnosť kódu
| Vrstva | Súbory | Zodpovednosť |
|---|---|---|
| VCL komponenty | PDFium.pas, FPdfThumbnail.pas | Delphi VCL komponenty (TPdf, TPdfView, TPdfThumbnailView) s podporou v čase návrhu |
| API väzby | 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 | Deklarácie ukazovateľov na funkcie pre volania PDFium DLL |
| PDF/A proces | FPdfPdfa.pas | Vytváranie PDF/A-1b (vkladanie XMP, sRGB ICC OutputIntent, aktualizácia katalógu) a validácia (zistenie zhody, výpis problémov) |
| Asynchrónna infraštruktúra | FPdfAsync.pas | IPdfCancellationToken / IPdfCancellationTokenSource, singleton PdfNoCancellationToken a pomocná trieda TPdfFuture<T> pre dlhšie trvajúce vykresľovanie a export |
| Geometrické pomocné funkcie | FPdfMatrix.pas | OO obálka nad FS_MATRIX s pomocnými funkciami Translate, Scale, Rotate, Flip, Skew a Multiply |
| Operácie so stranami | FPdfPageOps.pas | Obálky pre FPDF_ImportPagesByIndex, FPDF_ImportPages, FPDF_ImportNPagesToOne, FPDF_MovePages, škálovateľné dávkové plánovanie podložené súborom, plus pomocné funkcie Form-XObject (CreateXObjectFromPage / InsertFormObjectFromXObject) |
| Panel miniatúr | FPdfThumbnail.pas | TPdfThumbnailView — posúvateľný panel miniatúr strán s hoverom, výberom a navigáciou OnPageClick |
| Natívne jadro | DLLs\Win32|Win64\pdfium.dll a pdfium.v8.dll | Natívne renderovacie jadro Google PDFium s voliteľnými zostavami s V8 |
TPdf a 36 pripravených na spustenie projektov skracuje čas vývojaPDFium Delphi Component je navrhnutý tak, aby ste mohli hneď začať pracovať. Knižnica komponentov obsahuje
Či už vytvárate jednoduchý prehliadač PDF alebo zložitý systém spracovania dokumentov, PDFium Delphi Component vám poskytne základ pre profesionálne PDF funkcie vo vašich aplikáciách Delphi a C++Builder