Trei biblioteci. Trei sarcini distincte. Alegerea celei greșite vă costă săptămâni de soluții ocolitoare, iar alegerea tuturor trei când aveți nevoie doar de una vă costă o povară de întreținere pe care nu ați bugetat-o. Iată o descriere directă a ceea ce face de fapt fiecare bibliotecă PDF losLab, unde se potrivește și unde predă ștafeta surorilor ei
HotPDF: scrierea unui PDF de la zero în Delphi
HotPDF este o componentă VCL nativă pentru generarea de documente PDF. Modelul ei este imperativ și centrat pe pagină: construiți o instanță THotPDF, setați proprietățile documentului, apelați BeginDoc, desenați pe CurrentPage, adăugați pagini după nevoie și închideți cu EndDoc. Ordinea contează, pentru că BeginDoc fixează dicționarul de criptare și setările de compresie în clipa în care rulează; orice este atribuit după acel punct este ignorat în tăcere, nu aplicat retroactiv
Suprafața de desenare acoperă întregul set de operatori PDF la nivel de Delphi: TextOut pentru text Unicode poziționat, SetFont cu încorporare TrueType, primitive vectoriale (linii, curbe Bézier, elipse, dreptunghiuri), plasare de imagini din fișier sau din memorie și generare de coduri de bare. Coordonatele sunt în puncte, măsurate din colțul din stânga jos, cu Y crescând în sus, ceea ce prinde pe toată lumea o dată. Starea fontului nu supraviețuiește lui AddPage, deci un apel SetFont este necesar după fiecare trecere la pagină nouă
Câmpurile AcroForm sunt cetățeni de rangul întâi. Puteți adăuga câmpuri de text, casete de bifat, butoane radio, casete combinate, casete de listă și butoane de apăsare direct pe un obiect-pagină, printr-un singur apel fiecare. HotPDF poate de asemenea încărca un PDF existent prin LoadFromFile și poate completa sau citi valori de câmpuri, ceea ce îl face util în două fluxuri de lucru separate: construirea formularelor și automatizarea completării lor
Criptarea este tratată tot la nivel de document. CryptKeyLength selectează schema (de la RC4 pe 40 de biți până la AES-256), ActivateProtection o armează, iar ProtectOptions setează indicatorii de permisiuni ISO. Cele două moduri de revizie AES-256 (R5 și R6, controlate prin UseAES256R6) există pentru că revizia 6 corectează o slăbiciune cunoscută din revizia 5, dar cere un vizualizator capabil de PDF 2.0; alegerea dintre ele este o decizie de compatibilitate, nu una de comoditate
Suportul pentru semnături digitale din HotPDF acoperă profilurile de bază PAdES, deci este potrivit pentru fluxuri în care semnătura trebuie să respecte cerințele ETSI EN 319 142. Dacă nevoia dumneavoastră este doar de a genera documente, HotPDF este biblioteca la care să apelați prima
PDFium Component: randarea, vizualizarea și citirea PDF-urilor existente
PDFium Component învelește motorul PDFium al Google ca o componentă VCL, ceea ce îi dă un rol fundamental diferit de al HotPDF. Acolo unde HotPDF scrie, PDFium Component citește și randează. Obiectul central este TPdf, un manager de documente care deschide un fișier prin setarea lui FileName și apoi Active := True. Eșecurile de încărcare nu sunt ridicate ca excepții; Active rămâne pur și simplu False, deci verificarea lui după atribuire nu este opțională
Randarea se face prin TPdfView, o componentă vizuală pe care o puneți pe un formular și o legați de o instanță TPdf prin PdfView.Pdf := Pdf. Zoomul și modul de încadrare stau pe vizualizare, nu pe document. O subtilitate care îi încurcă pe mulți: Pdf.PageNumber și PdfView.PageNumber sunt proprietăți independente. Setarea uneia nu o actualizează pe cealaltă, iar API-urile de extragere bazate pe vizualizare (casete de cuvinte, unități de citire) folosesc pagina curentă a vizualizării, nu pe cea a documentului
Extragerea de text este locul în care PDFium Component nu are niciun concurent direct în gama losLab. ReadablePageContent returnează text structurat, conștient de ordinea de citire, PageWordBoxes dă dreptunghiuri de încadrare la nivel de cuvânt, iar DocumentReadingUnits parcurge întregul document. Pentru munca de accesibilitate, IsTagged vă spune dacă este prezent un arbore de structură, iar ValidatePdfUa rulează o verificare de conformitate UA. Aceste API-uri fac din PDFium Component alegerea naturală pentru orice flux care trebuie să înțeleagă ce se află într-un PDF existent, nu să producă unul nou
Completarea formularelor funcționează și pe partea PDFium, prin același strat AcroForm pe care îl expune motorul subiacent. Este potrivită atunci când documentul-sursă există deja și automatizați completarea lui, nu construiți dumneavoastră câmpurile de formular
PDF Library for Delphi: manipulare, semnare de conformitate și acces direct la fișier
PDF Library for Delphi (versiunea 3.73.0) stă la celălalt capăt al spectrului de complexitate. Ea expune trei straturi de API deasupra aceluiași model de document: o fațadă plată bazată pe identificatori (TPDFlib), compatibilă cu convenția de apelare Quick-PDF, un strat complet de arbore de obiecte (TPDFDocument) și un analizor în flux (TSmartPDFReader / TSmartPDFWriter) care operează direct pe octeții fișierului, fără să încarce graful complet de obiecte
Stratul în flux este cel care face din PDF Library for Delphi alegerea potrivită pentru documente mari. TSmartPDFWriter poate adăuga o actualizare incrementală la un fișier de pe disc fără să reconstruiască întregul tabel de referințe încrucișate, mecanismul care stă în spatele resalvării eficiente și al ștampilelor PAdES de validare pe termen lung. Pentru fluxuri de semnare de nivel de conformitate, în care hashul semnat trebuie să acopere un interval precis de octeți, iar semnătura se aplică fără rescrierea documentului, acest strat este singura cale viabilă
Manipularea documentelor la nivelul TPDFDocument include îmbinarea cu Merge, copierea selectivă de pagini prin CopyPagesFromDoc cu un șir de interval și guvernarea versiunii prin SetMinimumVersion și LockSaveVersion. Blocarea versiunii ridică eroarea 602 dacă încercați să salvați o funcționalitate care ar împinge ieșirea peste versiunea blocată, ceea ce este util când trebuie să garantați că ieșirea rămâne într-o revizie PDF anume, pentru conformitate arhivistică
Suportul PDF/A (ISO 19005) stă în atelierul de conformitate al PDF Library for Delphi. Rețineți că criptarea și PDF/A se exclud reciproc prin specificație: nu le puteți avea pe amândouă într-un singur fișier. Fluxurile care au nevoie de o copie de distribuție criptată și de o copie de arhivă PDF/A trebuie să producă două artefacte separate
Alegerea între ele
Arborele de decizie tipic este scurt. Dacă generați un document nou din date, folosiți HotPDF. Dacă randați sau extrageți text dintr-un document existent într-o aplicație Delphi VCL, folosiți PDFium Component. Dacă manipulați, îmbinați sau semnați pentru conformitate PDF-uri existente, la scară sau cu semantică de salvare incrementală, folosiți PDF Library for Delphi. Multe sisteme de producție folosesc două din cele trei: HotPDF pentru a genera documentele și PDF Library for Delphi pentru a le aplica o ștampilă de validare pe termen lung înainte de arhivare, de pildă, sau PDFium Component pentru a previzualiza ce a produs HotPDF înainte de a-l trimite mai departe
Toate trei sunt livrate ca sursă Pascal nativă pentru Delphi și C++Builder, fără dependențe la execuție dincolo de VCL. PDFium Component include în plus DLL-ul PDFium, care acoperă munca de randare și de analiză a motorului. Pagina de produs a fiecărei biblioteci poartă referința completă de API și istoricul curent de versiuni
Detalii despre bibliotecile individuale: HotPDF Delphi Component, PDFium Component și PDF Library for Delphi