|
Suport pentru filtre PDF
Prezentare generală
Fluxurile PDF și imaginile încorporate își identifică codarea prin nume de filtru. HotPDF
lucrează în principal cu următoarele familii de filtre la generarea documentelor sau la decodarea
conținutului extern
Filtre comune
- FlateDecode: filtrul principal de compresie pentru fluxurile generate și calea principală de decompresie bazată pe zlib
- LZWDecode: suportat pentru scenarii de moștenire și compatibilitate prin HPDFLZW.pas
- DCTDecode: folosit pentru datele standard ale imaginilor JPEG tratate de căile de încărcare a imaginilor ale HotPDF
- CCITTFaxDecode: comun în TIFF monocrom și în datele de imagine de tip fax
- ASCIIHexDecode / ASCII85Decode / RunLengthDecode: helperi de codificare expuși în HPDFTypes.pas (
_ASCIIHexEncode, _ASCII85Encode, _RunLengthEncode) încă din HotPDF v2.4.0. Sunt utili când împachetați conținut binar arbitrar pentru canale pe 7 biți sau pentru suport explicit de tip round-trip PDF 1.7 7.4
- JBIG2Decode / JPXDecode: nume de filtre definite de PDF 1.7 7.4.7 / 7.4.9. Helperii JBIG2 și JPEG 2000 incluși în HotPDF sunt stub-uri care raportează nesuportat (returnează
False) până când este legat un backend OpenJPEG / JBIG2 real. Buildurile anterioare returnau un succes fals 100×100 care producea imagini ilizibile; acest lucru este acum corectat
Note practice
- Nu fiecare filtru este expus printr-un singur API generic; unele sunt accesate prin unități helper dedicate pentru imagini sau fluxuri
- Pentru conținutul PDF generat, THotPDF.Compression rămâne setarea centrală vizibilă utilizatorului
- Când se încarcă date externe, filtrul aplicabil depinde de formatul fișierului sursă și de clasa helper folosită
- PDF-urile criptate combină aceste filtre cu security handler-ul; vezi CryptKeyLength pentru opțiunile suportate AES‑128 (V=4 R=4 / CFM=AESV2) și RC4 (V=1/V=2)
- Câmpurile interactive de formular sunt emise ca adnotări Widget pe care viewer-ul le desenează; vezi AcroForm Support
- Adnotările de text-markup (Highlight, Underline, Squiggly, StrikeOut) și linkurile interne de tip jump (
GoTo, GoToR, Launch) sunt expuse ca metode noi THPDFPage.Add*Annotation / AddGoToLink / AddGoToRLink / AddLaunchLink încă din HotPDF v2.6.0
- Ieșirea DeviceCMYK este disponibilă prin
THPDFPage.SetCMYKColor / SetCMYKFillColor / SetCMYKStrokeColor; spațiile de culoare gestionate ICC sunt înregistrate cu THotPDF.RegisterICCProfile și aplicate prin SetFillColorSpace / SetStrokeColorSpace + SetFillColor / SetStrokeColor încă din HotPDF v2.7.0
- Setați
THotPDF.UseXRefStream la true înainte de salvare pentru a emite un singur flux cross-reference comprimat /Type /XRef în locul secvenței textuale xref / trailer / startxref (PDF 1.7 7.5.8); disponibil din HotPDF v2.8.0
- Setați
THotPDF.EnableXMPMetadata la true pentru a atașa un flux XMP /Type /Metadata /Subtype /XML la Catalog (PDF 1.7 14.3.2); construit automat din câmpurile Info dict sau furnizat printr-un pachet scris manual cu CustomXMP. Disponibil din HotPDF v2.9.0
- Verificare a versiunii PDF per metodă (din HotPDF v2.24.0). Fiecare metodă de funcție introdusă în v2.4.0+ consultă
RequirePDFVersion înainte de emitere; cu StrictVersionLock=false (valoarea implicită) documentul Version este crescut automat la minimul cerut de funcție, iar cu StrictVersionLock=true apelul este refuzat astfel încât fișierul salvat să respecte strict specificația de referință 1.3 / 1.4 / 1.5 / 1.6 / 1.7 aleasă
- Codificatoarele predictor PNG și TIFF pentru datele de imagine comprimate FlateDecode (PDF 1.7 7.4.4.4):
_PNGPredictorEncode aplică euristica de filtrare a diferenței absolute minime din libpng (Predictor=15), iar _TIFFPredictor2Encode aplică diferențierea orizontală (Predictor=2). Disponibil din HotPDF v2.10.0
- Puncte de intrare Tagged PDF (PDF 1.7 14.7-14.8):
THotPDF.Lang populează /Lang în Catalog, EnableTaggedPDF emite /MarkInfo <</Marked true>> și un /StructTreeRoot stub, iar noile metode THPDFPage.BeginMarkedContent / BeginMarkedContentMCID / EndMarkedContent scriu operatorii de content-stream BMC / BDC / EMC. Disponibil din HotPDF v2.11.0
- Degradate axiale și radiale (PDF 1.7 7.10 / 8.7):
THotPDF.RegisterAxialGradient / RegisterRadialGradient construiesc întregul stack Function Type 2 / Shading Type 2-3 / Pattern Type 2 și returnează un nume stabil de pattern; THPDFPage.SetFillPattern / SetStrokePattern îl instalează pe pagină. Numărul de componente al culorii de început / sfârșit selectează DeviceGray (1) / DeviceRGB (3) / DeviceCMYK (4). Disponibil din HotPDF v2.13.0; degradatele axiale cu mai multe opriri prin Function Type 3 sunt expuse prin RegisterMultiStopAxialGradient din v2.18.0
- Imagini inline (PDF 1.7 8.9.7) prin
THPDFPage.DrawInlineImage; bytes-urile brute sunt împachetate automat cu ASCIIHex când nu este furnizat niciun Filter, astfel încât stream-ul de content rămâne curat pe 7 biți. Disponibil din HotPDF v2.18.0
- OutputIntents (PDF 1.7 14.11) prin
THotPDF.AddOutputIntent; fiecare apel adaugă în Catalog un dicționar /Type /OutputIntent cu /DestOutputProfile opțional care face referință la un profil ICC înregistrat. Disponibil din HotPDF v2.18.0
- Generare automată a stream-urilor de appearance AcroForm (PDF 1.7 12.5.5 / 12.7.3.3 / 8.10): setați
THotPDF.AutoFormAppearances la true înainte de a adăuga câmpuri interactive, iar HotPDF va preconstrui pentru fiecare intrare /AP /N a widgetului un Form XObject /Subtype /Form (subdicționare Yes / Off pentru butoane), va popula resursele implicite AcroForm /DR cu dicționare de font indirecte Helvetica / ZapfDingbats și va comuta /NeedAppearances la false astfel încât randerele să respecte stream-urile încorporate. Disponibil din HotPDF v2.28.0
- ViewerPreferences /ViewArea și /ViewClip (PDF 1.4 12.2 Table 152) sunt acum expuse prin proprietățile
THotPDF.ViewArea / THotPDF.ViewClip (cu seturile corespunzătoare vpViewArea / vpViewClip). Ambele acceptă valorile THPDFPageBoundary (MediaBox / CropBox / BleedBox / TrimBox / ArtBox) și completează acoperirea HotPDF pentru cele patru ViewerPreferences de margine de pagină din PDF 1.4. Disponibil din HotPDF v2.29.0
- Tranziții de pagină (PDF 1.1 / 1.5 12.4.4):
THPDFPage.SetPageTransition scrie un dicționar /Trans pe pagină, astfel încât cititoarele PDF din /PageMode /FullScreen să animeze navigarea. Stilurile PDF 1.1 (Split, Blinds, Box, Wipe, Dissolve, Glitter, R) și stilurile PDF 1.5 (Fly, Push, Cover, Uncover, Fade) sunt expuse prin enumerația THPDFTransitionStyle; sunt expuse și subopțiunile /Dm, /M și /Di. THPDFPage.SetPageDuration scrie întârzierea de auto-avans /Dur în secunde. Disponibil din HotPDF v2.30.0
- Grup de transparență la nivel de pagină (PDF 1.4 11.6.6 / 7.5.5):
THPDFPage.SetTransparencyGroup atașează un dicționar /Group (/Type /Group /S /Transparency) astfel încât randerele să compună predictibil conținutul cu alpha. Alegeți un spațiu de culoare device prin enumerația THPDFGroupColorSpace (DeviceGray / DeviceRGB / DeviceCMYK sau omis), ori apelați THPDFPage.SetTransparencyGroupICC cu numele unui profil ICC înregistrat anterior prin THotPDF.RegisterICCProfile. Flag-urile opționale /I (Isolated) și /K (Knockout) controlează compozitorul; THPDFPage.ClearTransparencyGroup elimină o intrare atașată anterior. Disponibil din HotPDF v2.32.0
- Actualizare incrementală (PDF 1.7 ISO 32000-1 7.5.6):
THotPDF.BeginIncrementalUpdate(SourceFile) încarcă un PDF existent în mod append-only; apelurile ulterioare CreateIndirect* marchează automat noile obiecte ca dirty, iar THotPDF.MarkDirty(Obj) etichetează obiectele încărcate preexistente pentru re-emisie. THotPDF.SaveIncrementalUpdate(TargetFile) scrie bytes-urile sursă originale verbatim, adaugă doar obiectele dirty cu numerele lor de obiect păstrate, emite o nouă subsecțiune xref și se încheie cu un trailer care conține /Prev către xref-ul anterior. Combinați cu pipeline-ul existent AddSignedSignatureField + PreparePDFForSigning + InsertSignatureHex pentru a adăuga câmpuri de semnătură ulterioare într-un document deja semnat fără a invalida semnăturile anterioare (digest-urile lor /ByteRange rămân valide deoarece niciun byte original nu se modifică). Disponibil din HotPDF v2.35.0
- Normalizarea numelui fontului TrueType încorporat: HotPDF citește tabela name a fontului TrueType încorporat și aliniază
/BaseFont, /FontDescriptor /FontName, /FontFamily și numele fonturilor CID descendente cu numele PostScript al programului de font. Aceasta evită erorile Adobe Acrobat Font Capture cauzate de o nepotrivire între dicționarul de font PDF și payload-ul TTF încorporat. Disponibil din HotPDF v2.35.1
- Shading tensor product patch mesh (PDF 1.3+ ISO 32000-1 8.7.4.5.7):
THotPDF.RegisterTensorProductPatchMesh(XMin, YMin, XMax, YMax, NumComponents, Patches) declară un stream /ShadingType 7 de patch-uri tensor-product, fiecare definit de o grilă completă 4 x 4 de puncte de control Bezier cubice p[i][j] plus câte o culoare pentru fiecare colț. Extinde RegisterCoonsPatchMesh (Type 6) adăugând 4 puncte de control interioare explicite (p[1][1], p[1][2], p[2][2], p[2][1]) peste cele 12 puncte de margine, oferind un control mai fin al interiorului patch-ului decât poate exprima potrivirea Coons-blended. Util pentru round-trip-uri SVG mesh-gradient și pentru orice grafică ce are nevoie de o suprafață Bezier tensor-product. Fiecare patch contribuie cu 16 puncte de control (32 de valori Extended X+Y, ordonate conform stream order din Tabelul 88: p[0][0..3], p[1][3], p[2][3], p[3][3], p[3][2..0], p[2][0], p[1][0], apoi cele 4 puncte interioare p[1][1], p[1][2], p[2][2], p[2][1]), urmate de 4 culori de colț (4 * NumComponents valori Extended la p[0][0] / p[0][3] / p[3][3] / p[3][0]), astfel încât pasul Patches este 32 + 4 * NumComponents. Fiecare patch emis poartă flag = 0 (patch independent). Cu această versiune, întreaga familie de mesh shading ISO 32000-1 8.7.4.5 (Type 4 / 5 / 6 / 7) este acum acoperită. Disponibil din HotPDF v2.51.0
- Stil de bordură pentru adnotări și legătură Popup (PDF 1.7 12.5.4 / 12.5.6.14):
THPDFPage.SetAnnotationBorderStyle(Annot, Width, Style, DashPattern) atașează un dicționar /BS cu THPDFAnnotBorderStyle ales (absSolid / absDashed / absBeveled / absInset / absUnderline). THPDFPage.AddPopupAnnotationFor(ParentAnnot, Rect, Open) emite o adnotare /Popup conectată în ambele direcții (parent /Popup -> popup, popup /Parent -> parent), astfel încât viewer-ul să poată reda conectorul de tip speech-balloon. Noua proprietate THPDFPage.LastAnnotation alimentează oricare dintre helperi fără a schimba semnătura procedurilor Add*Annotation existente. Disponibil din HotPDF v2.34.0
- Handler de securitate Public-Key (PDF 1.7 7.6.5):
THotPDF.EnablePubKeyEncryption(seed, KeyType, EncryptMetadata) + THotPDF.AddPubKeyRecipient(envelope) emit un dicționar de criptare /Filter /Adobe.PubSec (/SubFilter /adbe.pkcs7.s4 pentru V=1 RC4-40 / /adbe.pkcs7.s5 pentru V=2 RC4-128 / V=4 AESV2). Apelantul furnizează seed-ul aleator de 20 de bytes și câte un blob binar PKCS#7 envelopedData pentru fiecare destinatar (construit extern cu Windows CryptoAPI, OpenSSL sau pycryptodome). HotPDF derivă cheia de criptare a fișierului prin algoritmul 9 (SHA-1 al seed-ului concatenat cu fiecare envelope) și reutilizează derivarea standard per obiect pentru stream-urile AES-128 / RC4. Disponibil din HotPDF v2.33.0
Vezi și
|