A PDFium Delphi Component egy átfogó, professzionális komponenskönyvtár, amely erőteljes PDF-feldolgozási és -megjelenítési képességeket hoz a Delphi és C++Builder alkalmazásokba. Az oldalrendereléshez és a dokumentumok olvasásához a PDFium renderelőmotort használja, mindent pedig, amit ez a motor nem nyújt, Object Pascalban implementál
Ez a különbség akkor számít, amikor a könyvtárat értékeli. A PDFium oldalt rajzol, szöveget nyer ki, és meglévő struktúrákat olvas. Nem tud dokumentumot aláírni, titkosítást írni, PDF-szabványt ellenőrizni, vagy linearizált illetve inkrementális revíziót kiadni. A PDFium Delphi Component nagyjából 115,000 sor Object Pascalt szállít 55 egységben, és ebből több mint 62,000 sor 36 olyan egységben található, amelynek a PDFium API-ban egyáltalán nincs megfelelője — kriptográfia, aláírások, titkosítás, szabvány-megfelelőség, PDF-szerializáció, űrlapadat-csere, layout és text shaping. Mindez forrásként is megérkezik
A könyvtár három regisztrált komponensből áll: a TPdf a dokumentumfeldolgozás és -manipuláció eszköze 475 publikus taggal, a TPdfView az interaktív vizuális megjelenítésé 152 taggal, a TPdfThumbnailView pedig az oldalnavigációt szolgálja. Legyen szó egyszerű PDF-megjelenítőről, aláírt dokumentumok munkafolyamatáról, archiváló konverziós futószalagról vagy teljes dokumentumkezelő rendszerről, a PDFium Delphi Component megadja hozzá a szükséges eszközöket és rugalmasságot
Az alábbi képességeknek nincs megfelelője a PDFium C API-ban. Mindegyiket a PDFium Delphi Component implementálta Object Pascalban, a publikált ISO, ETSI, IETF vagy FIPS szakaszok alapján ellenőrizte, és forrásként is elérhető
Teljes értékű aláírás, nem aláírás-olvasás. A PDFium jelzi, hogy létezik aláírás-szótár; a PDFium Delphi Component létre is hoz egyet
SignPades, SignPadesToStream és SignPadesBytes révén/Certs, /OCSPs és /CRLs bejegyzésekkel, aláírásonkénti VRI szótárakkal, valamint a /Extensions /ESIC jelölővel/SubFilter /ETSI.RFC3161 al-szűrővel, amelyek a teljes fájlt lefedik — B-LTA-hozICmsSigner interfész mögött, amelyet bármely más backend implementálhatPreparePadesRemoteSignature és a CompletePadesRemoteSignature kettébontja a műveletet, így a privát kulcs távoli szolgáltatásban vagy hardvermodulban maradhatValidatePades jelzi a dokumentum által elért legmagasabb baseline szintet, valamint szakasz-szintű hibakódokat ad; a ValidatePadesTrust és a ValidatePadesTrustAsync tanúsítványlánc-megbízhatóság ellenőrzést is hozzáadSignPadesWithPdfA egyetlen hívásban konvertál PDF/A-4-re és írja alá a dokumentumot, az EN 319 142-1 A.7 melléklete szerintA PDFium megnyitja a titkosított fájlokat, de titkosítást nem ír. Az író oldalt a PDFium Delphi Component implementálta az ISO 32000-2 és technikai specifikációi alapján
SaveAsEncrypted V=5 / R=5 / R=6 kulcsderiválással, benne a 2.B algoritmus hash-iterációjával, valamint a /O /U /OE /UE /Perms szótárbejegyzésekkel/Length korrekcióval és újjáépített kereszthivatkozási táblával/AuthCode tokenek — CMS AuthenticatedData HKDF kulcsderiválással, key wrappinggel és HMAC ellenőrzésselHat ISO szabványcsalád, mindegyik szakasz-szintű eredménykódokat visszaadó érvényesítővel, valamint a hozzá tartozó mentési vagy marker-beszúrási útvonallal
A motor egyetlen szekvenciális, teljes-fájlos mentést kínál. Az alkalmazásoknak gyakran több kell ennél, ezért a PDFium Delphi Component a motor szemantikai kimenetére építve maga írja a revíziókat
SaveAsLinearized Fast Web View fájlokat ír elsőoldal-csoportosítással, két kereszthivatkozási szekcióval, valamint az F melléklet oldal-eltolás és megosztott objektum hint táblaivalSaveAsObjectStream a megfelelő objektumokat /ObjStm csoportokba rendezi oldal-helyi sorrenddel és teljes type-2 kereszthivatkozási lefedettséggelBeginIncrementalSave és a CommitIncrementalSave csak a megváltozott és új indirekt objektumokat fűzi hozzá titkosított és titkosítatlan forrásokhoz, bájtonkénti pontossággal megőrizve a korábbi kimenetet a /Prev, /Encrypt, /Info és az állandó /ID együtt; a változás nélküli commit nem növeli a fájltSaveAsRepaired egyrevíziós másolatot ír, és átadás előtt független strict betöltéssel újraellenőrziTPdf.PdfVersion a PDFium elemző állapotára támaszkodik, és pusztán egy nyolcbájtos fejléc-őrt futtat ahelyett, hogy újraparzolná a forrásdokumentumotTPdfRandomAccessStore a köztes adatokat memóriában tartja SaveMemoryLimit-ig, majd exkluzív, záráskor törlő ideiglenes fájlba költözik; a mentés magjának utófeldolgozása mindhárom munkaterületen ugyanezt a szabályzatot használja, míg az alapértelmezett open-action és oldalcímke katalógusfrissítések korlátos ablakokat és ritka indexet használnak/AF tömbök a katalógushoz vagy egy céloldalhoz csatolva, a 45. tábla nyolc relációértékévelIPdfOcrProvider bármely felismerőmotort elfogad — a komponens szolgáltatja az oldalbitképeket, és megírja az eredményül kapott kereshető szövegréteget, oldalankénti státusszal, valamint a meglévő szöveg kihagyásávalGetStructuredText oldal / blokk / sor / formázott span hierarchiát épít a karaktergeometriából és a Tagged PDF szemantikából; az ExtractTables és az ExtractDocumentTables felismeri a keretes és szóköz-igazítású táblázatokat, megőrzi az egyesített spaneket, megbízhatósági pontszámot ad, valamint CSV-t vagy JSON-t írBuildReflowDocument a fix elrendezésű PDF-et csomópontfává alakítja, amelynek biztonságos HTML-kimenete megőrzi a címsorokat, bekezdéseket, listákat, ábrákat, oldalszekciókat és táblázatspaneketMeasureText és a WrapText szótördelést ad anélkül, hogy bármit hozzáadna az oldalhozTPdfStreamInspector tetszőleges streamobjektumokat dekódol explicit forrás-, nyers-, dekódolt-, tágulási arány- és streamszám-keretek között, strukturált státuszt adva ahelyett, hogy egy trükkösen összerakott fájl kimerítené a memóriátA PDF-feldolgozó rendszer szíve, a TPdf kezeli az összes dokumentumszintű műveletet, beleértve a betöltést, mentést, szövegkinyerést, űrlapfeldolgozást és a metaadat-kezelést
Egy kifinomult vizuális vezérlő, amely gazdag PDF-megjelenítési élményt és teljes felhasználói interakciót biztosít
TStream adaptereken keresztül a LoadCustomDocument segítségével, compatible, strict és recovery szabályzatokkal, valamint strukturált xref diagnosztikávalSaveAsRepaired segítségévelSaveAsPdfA / SaveAsPdfAToStream segítségével beépített sRGB ICC profillal és egyéni profil támogatássalValidatePdfA és a csak olvasható PdfAConformance tulajdonság révénMergeFiles (korlátos forrású kötegelt egyesítés), ImportPagesByIndex (részhalmaz importálása), ImportNPagesToOne (N-up rács), MovePages (helyben átrendezés)CreateXObjectFromPage és InsertFormObjectFromXObject segítségévelRenderPageProgressive és a IPdfCancellationToken segítségévelTPdfProgressiveDocument révén, ritka byte-range hintekkel, prioritásos tartományütemezéssel, korlátos újrapróbálkozással, megszakíthatósággal, valamint dokumentum-, űrlap- és oldal-elérhetőségi kapukkalSaveAsLinearized révén, elsőoldal-csoportosítással, két kereszthivatkozási szekcióval, valamint az F melléklet oldal-eltolás és megosztott objektum hint táblaivalSaveAsObjectStream révén, korlátos ObjStm csoportokkal, oldal-helyi sorrenddel és teljes type-2 xref lefedettséggelBeginIncrementalSave és a CommitIncrementalSave révén, a titkosított előtag megőrzésével, örökölt biztonsági paraméterekkel, változás nélküli commitokkal, strict újramegnyitás-ellenőrzéssel, tartós mellékfájlokkal, atomi cserével, visszagörgetéssel és commitonkénti statisztikávalTPdfRandomAccessStore és a SaveMemoryLimit révén, biztonságos ideiglenes-fájl kiírásával, pozicionált I/O-val és mentésenkénti csúcsdiagnosztikávalFitMode határozza meg, hogyan illeszkedik az oldal a nézetablakba (kézi nagyítás, tényleges méret, oldalhoz igazítás, szélességhez igazítás); Resize és oldalt váltás után automatikusan újra alkalmazódikPageColor leválasztja a renderelt PDF-oldal hátterét a környező vezérlő Color értékéről, így sötét módú megjelenítők is építhetőkHighlightSearchText és ClearHighlight segítségévelPageShadowSize / PageShadowColor) és oldalszegély (PageBorderColor)LinkOptions) és OnAnnotationLinkClick / OnWebLinkClick eseményekkelAllowUserPageChange, ChangePageOnMouseScrolling, AllowUserTextSelection) kioszkokhoz és csak olvasható beágyazásokhozTPdfThumbnailView oldalsó panel komponensen keresztül| Szempont | Részletek |
|---|---|
| Renderelőmotor | Google PDFium - ipari szabványú, sokat bizonyított PDF motor |
| PDF támogatás | PDF 1.0-tól 1.7-ig, titkosított és jelszóval védett fájlok |
| Platformkompatibilitás | Windows 32 bites és 64 bites alkalmazások |
| IDE támogatás | Delphi XE5 / C++Builder XE5 (RAD Studio XE5) és Delphi/C++Builder 13.1 Florence (RAD Studio 13.1) között, Lazarus 3.8+ |
| Karakterkódolás | Teljes Unicode támogatás, többnyelvű szövegfeldolgozás |
| Memóriakezelés | Nagy dokumentumokra optimalizálva, hatékony erőforrás-használattal |
| Szálbiztonság | Egy szálra tervezett kialakítás (a PDFium követelményei szerint) |
A PDFium Delphi Component réteges architektúramintát követ, amely tisztán elkülöníti a felelősségi köröket és maximalizálja a kód újrahasznosíthatóságát:
| Réteg | Fájlok | Felelősség |
|---|---|---|
| VCL komponensek | PDFium.pas, FPdfThumbnail.pas | Delphi VCL komponensek (TPdf, TPdfView, TPdfThumbnailView) tervezési idejű támogatással |
| API kötésrétegek | 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 | Függvénypointer-deklarációk a PDFium DLL-hívásokhoz |
| PDF/A folyamat | FPdfPdfa.pas | PDF/A-1b létrehozás (XMP beszúrás, sRGB ICC OutputIntent, katalógusfrissítés) és ellenőrzés (megfelelőségi felismerés, problémafelsorolás) |
| Aszinkron infrastruktúra | FPdfAsync.pas | IPdfCancellationToken / IPdfCancellationTokenSource, PdfNoCancellationToken singleton és TPdfFuture<T> segéd hosszú futású renderelési és exportfeladatokhoz |
| Geometriai segédek | FPdfMatrix.pas | FS_MATRIX OO burkoló Translate, Scale, Rotate, Flip, Skew és Multiply segédletekkel |
| Oldalműveletek | FPdfPageOps.pas | Burkolók az FPDF_ImportPagesByIndex, FPDF_ImportPages, FPDF_ImportNPagesToOne és FPDF_MovePages hívásokhoz, skálázható, fájl alapú kötegelt ütemezéssel, plusz Form-XObject segédek (CreateXObjectFromPage / InsertFormObjectFromXObject) |
| Bélyegkép-oldalpanel | FPdfThumbnail.pas | TPdfThumbnailView — görgethető, oldalankénti bélyegképpanel hoverrel, kijelöléssel és OnPageClick navigációval |
| Natív motor | DLLs\Win32|Win64\pdfium.dll és pdfium.v8.dll | Google PDFium natív renderelőmotor, opcionális V8-os buildekkel |
TPdf tag és 36 azonnal futtatható projekt csökkenti a fejlesztési időtA PDFium Delphi Component úgy készült, hogy azonnal produktívvá tegye a munkát. A komponenskönyvtár tartalmazza:
Akár egy egyszerű PDF-megjelenítőt, akár összetett dokumentumfeldolgozó rendszert építesz, a PDFium Delphi Component megalapozza a professzionális PDF-funkcionalitást a Delphi és C++Builder alkalmazásaidban