Tri knjižnice. Tri različna opravila. Izbira napačne vas stane tedne iskanja začasnih rešitev, izbira vseh treh, ko potrebujete le eno, pa prinaša stroške vzdrževanja, ki jih niste načrtovali. Tukaj je neposreden pregled tega, kaj vsaka knjižnica losLab PDF dejansko počne, kje je primerna in kje se povezuje s preostalima.
HotPDF: pisanje dokumentov PDF iz nič v Delphiju
HotPDF je izvorna komponenta VCL za ustvarjanje dokumentov PDF. Njen model je imperativen in osredotočen na strani: ustvarite instanco THotPDF, nastavite lastnosti dokumenta, pokličete BeginDoc, rišete na CurrentPage, po potrebi dodajate strani in zaključite z EndDoc. Vrstni red je pomemben, saj BeginDoc uveljavi slovar šifriranja in nastavitve stiskanja v trenutku zagona; vse, kar je dodeljeno po tej točki, je tiho prezrto in se ne uveljavi za nazaj.
Rislana površina pokriva celoten nabor operatorjev PDF na ravni Delphija: TextOut za pozicionirano besedilo Unicode, SetFont z vgradnjo TrueType, vektorske primitive (črte, Bezierjeve krivulje, elipse, pravokotnike), umeščanje slik iz datoteke ali pomnilnika ter ustvarjanje črtnih kod. Koordinate so v točkah od spodnjega levega kota, pri čemer se os Y povečuje navzgor, kar vsakega klicatelja vsaj enkrat zavede. Stanje pisave ne preživi klica AddPage, zato je po vsakem prelomu strani potreben ponoven klic SetFont.
Polja AcroForm so prvovrstni elementi. Z enim samim klicem lahko neposredno na objekt strani dodate besedilna polja, potrditvena polja, radijske gumbe, spustne sezname, sezname in gumbne kontrole. HotPDF lahko naloži tudi obstoječi PDF prek LoadFromFile ter izpolni ali prebere vrednosti polj, kar je uporabno v dveh ločenih potekih dela: pri gradnji obrazcev in pri avtomatizaciji njihovega izpolnjevanja.
Šifriranje se prav tako upravlja na ravni dokumenta. CryptKeyLength izbere shemo (40-bitni RC4 do AES-256), ActivateProtection jo aktivira, ProtectOptions pa nastavi zastavice dovoljenj ISO. Dva načina revizije AES-256 (R5 in R6, ki ju nadzoruje UseAES256R6) obstajata zato, ker revizija 6 odpravlja znano pomanjkljivost revizije 5, vendar zahteva pregledovalnik, ki podpira PDF 2.0; izbira med njima je odločitev o združljivosti in ne stvar priročnosti.
Podpora za digitalni podpis v knjižnici HotPDF pokriva osnovne profile PAdES, zato je primerna za poteke dela, kjer mora podpis izpolnjevati zahteve standarda ETSI EN 319 142. Če potrebujete le ustvarjanje izpisa, je HotPDF knjižnica, po kateri morate poseči najprej.
PDFium VCL: upodabljanje, ogled in branje obstoječih dokumentov PDF
PDFium VCL ovija Googlov pogon PDFium kot komponento VCL, PC pa ji daje bistveno drugačno vlogo kot HotPDF. Kjer HotPDF piše, PDFium VCL bere in upodablja. Jedrni objekt je TPdf, upravljalnik dokumentov, ki odpre datoteko z nastavitvijo FileName in nato Active := True. Napake pri nalaganju se ne sprožijo kot izjeme; lastnost Active preprosto ostane na False, zato preverjanje po dodelitvi ni neobvezno.
Upodabljanje poteka prek vizualne komponente TPdfView, ki jo postavite na obrazec in povežete z instanco TPdf prek PdfView.Pdf := Pdf. Povečava in način prilagajanja živita v pogledu in ne v dokumentu. Ena od podrobnosti, ki lahko zavede: lastnosti Pdf.PageNumber in PdfView.PageNumber sta neodvisni. Nastavitev ene ne posodobi druge, API-ji za črpanje besedila (besedilna polja, bralne enote) pa uporabljajo trenutno stran pogleda in ne dokumenta.
Črpanje besedila je področje, kjer PDFium VCL nima neposrednega tekmeca v losLabovi ponudbi. Metoda ReadablePageContent vrne strukturirano besedilo z zavedanjem o vrstnem redu branja, PageWordBoxes ponuja pravokotnike na ravni besed, DocumentReadingUnits pa se pomika skozi celoten dokument. Za delo na dostopnosti IsTagged sporoča, ali je prisotno drevo strukture, ValidatePdfUa pa izvede preverjanje skladnosti z UA. Ti API-ji naredijo PDFium VCL naravno izbiro za vsak potek dela, ki mora razumeti vsebino obstoječega PDF-ja namesto ustvarjanja novega.
Izpolnjevanje obrazcev deluje tudi na strani PDFium, in sicer prek iste plasti AcroForm, ki jo izpostavlja spodnji pogon. Primerno je takrat, ko izvorni dokument že obstaja in avtomatizirate njegovo izpolnjevanje, namesto da bi sami gradili polja obrazca.
PDFlibPas: manipulacija, podpisovanje skladnosti in neposreden dostop do datotek
PDFlibPas (različica 3.73.0) se nahaja na drugem koncu spektra zapletenosti. Na vrhu istega modela dokumenta izpostavlja tri plasti API: ravno fasado na osnovi ročic (TPDFlib), združljivo s konvencijo klicanja Quick-PDF, celotno plast objektnega drevesa (TPDFDocument) in pretočni razčlenjevalnik (TSmartPDFReader / TSmartPDFWriter), ki deluje neposredno na bajtih datoteke brez nalaganja celotnega grafa objektov.
Pretočna plast je tisto, zaradi česar je PDFlibPas prava izbira za velike dokumente. TSmartPDFWriter lahko doda inkrementalno posodobitev datoteki na disku brez rekonstrukcije celotne navzkrižne tabele, kar je osnovni mehanizem za učinkovito ponovno shranjevanje in časovne žige dolgoročne validacije PAdES. Za poteke dela s podpisovanjem na ravni skladnosti, kjer mora podpisani hash pokrivati določen bajtni obseg in se podpis uveljavi brez ponovnega zapisovanja dokumenta, je ta plast edina izvedljiva pot.
Manipulacija z dokumenti na ravni TPDFDocument vključuje združevanje z Merge, selektivno kopiranje strani prek CopyPagesFromDoc z nizom obsega ter upravljanje različic prek SetMinimumVersion in LockSaveVersion. Zaklepanje različice sproži napako 602, če poskušate shraniti funkcijo, ki bi izpis potisnila nad zaklenjeno različico, kar je uporabno, ko morate zagotoviti, da izhod ostane znotraj določene revizije PDF zaradi arhivske skladnosti.
Podpora za PDF/A (ISO 19005) se nahaja v delovnem okolju za skladnost PDFlibPas. Upoštevajte, da sta šifriranje in PDF/A po specifikaciji medsebojno izključujoča: v eni datoteki ne morete imeti obeh. Poteki dela, ki potrebujejo šifrirano distribucijsko kopijo in arhivsko kopijo PDF/A, morajo ustvariti dva ločena izdelka.
Izbira med njimi
Tipično odločitveno drevo je kratko. Če ustvarjate nov dokument iz podatkov, uporabite HotPDF. Če upodabljate ali črpate besedilo iz obstoječega dokumenta v aplikaciji Delphi VCL, uporabite PDFium VCL. Če masovno spreminjate, združujete ali skladno podpisujete obstoječe dokumente PDF oziroma uporabljate semantiko inkrementalnega shranjevanja, uporabite PDFlibPas. Številni produkcijski sistemi uporabljajo dva od treh: na primer HotPDF za ustvarjanje izhoda in PDFlibPas za uveljavitev časovnega žiga dolgoročne validacije pred arhiviranjem, ali pa PDFium VCL za predogled tistega, kar je HotPDF ustvaril, preden se pošlje naprej.
Vse tri knjižnice se dobavijo kot izvorna koda Pascal za Delphi in C++Builder, brez zunanjih odvisnosti med delovanjem zunaj VCL. PDFium VCL dodatno vsebuje datoteko DLL PDFium, ki pokriva delo upodabljanja in razčlenjevanja pogona. Stran vsake knjižnice vsebuje celotno referenco API in trenutno zgodovino različic.
Podrobnosti o posameznih knjižnicah: HotPDF komponenta, PDFium VCL komponenta in PDFlibPas.