PDF Filter podrška

Pregled

PDF strimovi i ugrađene slike identifikuju svoje kodiranje preko naziva filtera. HotPDF primarno radi sa sledećim porodicama filtera pri generisanju dokumenata ili dekodiranju spoljnog sadržaja

Common Filters

  • FlateDecode: glavni filter kompresije za generisane strimove i primarna zlib-bazirana putanja dekompresije
  • LZWDecode je podržan za legacy i scenarios kompatibilnosti preko HPDFLZW.pas
  • DCTDecode: Used for standard JPEG image data handled by HotPDF image loading paths
  • CCITTFaxDecode: Common in monochrome TIFF and fax-style image data
  • ASCIIHexDecode / ASCII85Decode / RunLengthDecode: pomoćnici za kodiranje izloženi u HPDFTypes.pas (_ASCIIHexEncode, _ASCII85Encode, _RunLengthEncode) od HotPDF v2.4.0. Korisni su kada se proizvoljan binarni sadržaj obavija za 7-bitne kanale ili za eksplicitnu PDF 1.7 7.4 round-trip podršku
  • JBIG2Decode / JPXDecode: Filter names defined by PDF 1.7 7.4.7 / 7.4.9. HotPDF's bundled JBIG2 and JPEG 2000 helpers are stubs that report unsupported (return False) until a real OpenJPEG / JBIG2 backend is linked. Earlier builds returned a fake 100×100 success which produced unreadable images; this is now corrected

Praktične napomene

  • Not every filter is exposed through a single generic API; some are reached through dedicated image or stream helper units
  • Za generisani PDF sadržaj, THotPDF.Compression ostaje centralno korisničko podešavanje
  • Prilikom učitavanja spoljašnjih podataka, primenljivi filter zavisi od formata izvorne datoteke i pomoćne klase koja se koristi
  • Encrypted PDFs combine these filters with the security handler; see CryptKeyLength for the supported AES‑128 (V=4 R=4 / CFM=AESV2) and RC4 (V=1/V=2) options
  • Interaktivna polja obrasca emituju se kao Widget anotacije koje pregledač iscrtava; videti AcroForm Support
  • Text-markup annotations (Highlight, Underline, Squiggly, StrikeOut) and intra-document jump links (GoTo, GoToR, Launch) are exposed as new THPDFPage.Add*Annotation / AddGoToLink / AddGoToRLink / AddLaunchLink methods since HotPDF v2.6.0
  • DeviceCMYK izlaz je dostupan kroz THPDFPage.SetCMYKColor / SetCMYKFillColor / SetCMYKStrokeColor; ICC-upravljani color space-ovi registruju se preko THotPDF.RegisterICCProfile i primenjuju kroz SetFillColorSpace / SetStrokeColorSpace + SetFillColor / SetStrokeColor od HotPDF v2.7.0
  • Postavite THotPDF.UseXRefStream na true pre čuvanja da biste emitovali jedan /Type /XRef FlateDecode-komprimovani tok unakrsnih referenci umesto tekstualnog niza xref / trailer / startxref (PDF 1.7 7.5.8); dostupno od HotPDF v2.8.0
  • Postavite THotPDF.EnableXMPMetadata na true da biste prikačili XMP /Type /Metadata /Subtype /XML tok katalogu (PDF 1.7 14.3.2); automatski se gradi iz Info polja, ili prosledite ručno napravljen paket preko CustomXMP. Dostupno od HotPDF v2.9.0
  • PDF verzijsko ograničavanje po metodi (od HotPDF v2.24.0). Svaka funkcijska metoda uvedena u v2.4.0+ proverava RequirePDFVersion pre emitovanja; sa StrictVersionLock=false (podrazumevano) Version dokumenta se neprimetno automatski podiže na minimum koji funkcija zahteva, a sa StrictVersionLock=true poziv se odbija tako da sačuvani fajl strogo odgovara izabranoj 1.3 / 1.4 / 1.5 / 1.6 / 1.7 referentnoj specifikaciji
  • PNG i TIFF predictor koderi za FlateDecode-komprimovane slikovne podatke (PDF 1.7 7.4.4.4): _PNGPredictorEncode primenjuje libpng heuristiku filtera minimalne apsolutne razlike (Predictor=15), a _TIFFPredictor2Encode primenjuje horizontalno razlikovanje (Predictor=2). Dostupno od HotPDF v2.10.0
  • Tagged PDF entry points (PDF 1.7 14.7-14.8): THotPDF.Lang populates /Lang in the Catalog, EnableTaggedPDF emits /MarkInfo <</Marked true>> and a stub /StructTreeRoot, and the new THPDFPage.BeginMarkedContent / BeginMarkedContentMCID / EndMarkedContent methods write the BMC / BDC / EMC content-stream operators. Available since HotPDF v2.11.0
  • Axial and radial gradients (PDF 1.7 7.10 / 8.7): THotPDF.RegisterAxialGradient / RegisterRadialGradient build the full Function Type 2 / Shading Type 2-3 / Pattern Type 2 stack and return a stable pattern name; THPDFPage.SetFillPattern / SetStrokePattern install it onto the page. Component count of the start / end color selects DeviceGray (1) / DeviceRGB (3) / DeviceCMYK (4). Available since HotPDF v2.13.0; multi-stop axial gradients via Function Type 3 are exposed through RegisterMultiStopAxialGradient since v2.18.0
  • Inline slike (PDF 1.7 8.9.7) preko THPDFPage.DrawInlineImage; sirovi bajtovi se automatski obavijaju ASCIIHex kada nije zadat Filter, tako da sadržajni strim ostaje 7-bitno čist. Dostupno od HotPDF v2.18.0
  • OutputIntents (PDF 1.7 14.11) preko THotPDF.AddOutputIntent; svaki poziv dodaje /Type /OutputIntent rečnik u Catalog sa opcionim /DestOutputProfile koje upućuje na registrovani ICC profil. Dostupno od HotPDF v2.18.0
  • Automatsko generisanje appearance strimova za AcroForm (PDF 1.7 12.5.5 / 12.7.3.3 / 8.10): postavite THotPDF.AutoFormAppearances na true pre dodavanja interaktivnih polja obrasca i HotPDF će unapred napraviti /Subtype /Form Form XObject za svaki /AP /N unos widgeta (Yes / Off podrečnike za dugmad), popuniti AcroForm /DR podrazumevane resurse indirektnim font rečnicima Helvetica / ZapfDingbats i prebaciti /NeedAppearances na false tako da rendereri poštuju ugrađene strimove. Dostupno od HotPDF v2.28.0
  • ViewerPreferences /ViewArea i /ViewClip (PDF 1.4 12.2 Table 152) sada su izloženi kroz THotPDF.ViewArea / THotPDF.ViewClip svojstva (sa odgovarajućim vpViewArea / vpViewClip skup članovima). Obe prihvataju THPDFPageBoundary vrednosti (MediaBox / CropBox / BleedBox / TrimBox / ArtBox) i zaokružuju HotPDF pokrivenost sva četiri PDF 1.4 page-boundary ViewerPreferences. Dostupno od HotPDF v2.29.0
  • Prelazi stranica (PDF 1.1 / 1.5 12.4.4): THPDFPage.SetPageTransition upisuje /Trans rečnik na stranicu tako da PDF čitači u /PageMode /FullScreen animiraju navigaciju. PDF 1.1 stilovi (Split, Blinds, Box, Wipe, Dissolve, Glitter, R) i PDF 1.5 stilovi (Fly, Push, Cover, Uncover, Fade) izloženi su kroz THPDFTransitionStyle enumeraciju; izložene su i prateće /Dm, /M i /Di podopcije. THPDFPage.SetPageDuration upisuje /Dur kašnjenje automatskog napredovanja u sekundama. Dostupno od HotPDF v2.30.0
  • Transparentna grupa na nivou stranice (PDF 1.4 11.6.6 / 7.5.5): THPDFPage.SetTransparencyGroup kači /Group rečnik (/Type /Group /S /Transparency) tako da rendereri predvidljivo kompozituju sadržaj sa alfom. Izaberite device color space kroz THPDFGroupColorSpace enumeraciju (DeviceGray / DeviceRGB / DeviceCMYK ili izostavite), ili pozovite THPDFPage.SetTransparencyGroupICC sa imenom ICC profila prethodno registrovanog preko THotPDF.RegisterICCProfile. Opcionе /I (Isolated) i /K (Knockout) zastavice upravljaju kompozitorom; THPDFPage.ClearTransparencyGroup uklanja prethodno prikačen unos. Dostupno od HotPDF v2.32.0
  • Inkrementalno ažuriranje (PDF 1.7 ISO 32000-1 7.5.6): THotPDF.BeginIncrementalUpdate(SourceFile) učitava postojeći PDF u append-only režimu; naredni CreateIndirect* pozivi automatski označavaju nove objekte kao prljave, a THotPDF.MarkDirty(Obj) označava ranije učitane objekte za ponovno emitovanje. THotPDF.SaveIncrementalUpdate(TargetFile) zapisuje originalne izvorne bajtove doslovno, dodaje samo prljave objekte uz očuvane brojeve objekata, emituje novu xref podsekciju i završava trailerom koji nosi /Prev i pokazuje na prethodni xref. Kombinujte sa postojećim AddSignedSignatureField + PreparePDFForSigning + InsertSignatureHex nizom da biste dodali naredna signature polja već potpisanom dokumentu bez poništavanja ranijih potpisa (njihovi /ByteRange digesti ostaju važeći jer se nijedan originalni bajt ne menja). Dostupno od HotPDF v2.35.0
  • Normalizacija naziva ugrađenog TrueType fonta: HotPDF čita ugrađenu TrueType name tabelu i usklađuje /BaseFont, /FontDescriptor /FontName, /FontFamily i imena descendant CID fontova sa PostScript imenom font programa. Time se izbegavaju Adobe Acrobat Font Capture greške izazvane neskladom između PDF font rečnika i ugrađenog TTF sadržaja. Dostupno od HotPDF v2.35.1
  • TrueType font subsetting (PDF 1.7 ISO 32000-1 9.6.4 / 9.8.2): set THotPDF.EnableFontSubsetting to true before BeginDoc and HotPDF rebuilds the embedded TrueType payload to contain only the glyphs actually used by the document. Typical Latin documents see ~90% reduction in embedded font weight (1 MB Arial -> ~70 KB on a one-line "Hello, world."). Composite-glyph dependencies are tracked recursively, GID numbering is preserved (so existing Type0 / Identity-H content streams keep working), and the new /BaseFont automatically gains the spec-mandated six-letter "+"-suffixed prefix (e.g. /BaseFont /AAAAAA+ArialMT). Off by default; enable opt-in to keep full-font embedding for editing workflows. Available since HotPDF v2.36.0
  • Compact Font Format (CFF) subsetter (PDF 1.7 ISO 32000-1 9.7.4 / 9.9): companion to the TrueType subsetter for OpenType-CFF (.otf, sfntVersion OTTO) and Type 1 / Type 1C fonts. The unit-exported HPDFSubsetCFF(CFFBytes, KeepGlyph) function rebuilds the CharStrings INDEX with un-kept glyphs replaced by the minimal 1-byte endchar stub, preserving GID numbering byte-for-byte. Available since HotPDF v2.37.0.
  • OpenType-CFF (.otf) putanja za ugrađivanje povezana u StoreFont (PDF 1.6+ 9.7.4 Table 117). Kada je GDI-učitani binarni font sfnt OTTO kontejner, HotPDF pravi podskup ugrađene 'CFF ' podtabele kroz HPDFSubsetOTFContainer, emituje font program preko /FontFile3 /Subtype /OpenType i upisuje descendant font rečnik sa /Subtype /CIDFontType0 umesto /CIDFontType2. TrueType fontovi nastavljaju kroz postojeću /FontFile2 + /CIDFontType2 putanju bez promene ponašanja. Dostupno od HotPDF v2.38.0
  • End-to-end podskup CFF subrutina (PDF 1.7 9.7.4 §6 / Adobe Tech Note #5177 §3.1): CFF alat za podskup sada uklanja neiskorišćene unose iz OBA INDEX-a, Global Subr INDEX-a (odmah nakon String INDEX u CFF binarnom formatu) i Local Subr INDEX-a (ugnježdenog pod Private DICT, dostupan preko Top DICT operatora 18 + Private DICT operatora 19). Jedna zatvorena iteracija sa fiksnom tačkom transitive prati callsubr (op 0x0A) I callgsubr (op 0x1D) lance, tako da CharString koji poziva Local Subr koji poziva Global Subr koji poziva drugi Local Subr biva obuhvaćen u jednoj iteraciji. Svaki neiskorišćen unos zamenjuje se 1-bajt stubom za povratak, a INDEX se prepisuje na mestu uz nulto popunjen preostali prostor. Ovo ponašanje je izloženo kroz javne HPDFSubsetCFF i HPDFSubsetOTFContainer pomoćnike; CFF skeneri nižeg nivoa ostaju interni. Dostupno od HotPDF v2.39.0
  • CID-keyed CFF podskup (PDF 1.7 ISO 32000-1 9.7.4 / Adobe Tech Note #5176 §18-19): CFF alat za podskup sada prepoznaje Top DICT ROS operator (12-30) koji označava CID-keyed OpenType-CFF font i prolazi kroz FDArray (12-36) INDEX Font DICT-ova, pri čemu svaki nosi sopstveni Private DICT + Local Subr INDEX. FDSelect (12-37) mapa glif-to-FD čuva se byte-for-byte. Skeniranje zatvaranja podrutina prati FD kontekst svakog sačuvanog CharString-a tako da glif u FD #5 označava samo Local Subrs u FD #5 - globalni subr-ovi ostaju deljeni između FD-ova. Local Subr INDEX svakog FD-a prepisuje se na mestu tako da se neiskorišćeni unosi sabijaju u 1-bajtne povratne stubove. CJK / Indic / Arabic OTF fontovi (Adobe Fan/Gothic/Heiti/Ming/Myungjo/Song Std, Kozuka Pr6N, Source Han Sans, itd.) sada prolaze kroz puni pipeline za podskup umesto da budu ugrađeni kao što jesu. Dostupno od HotPDF v2.40.0
  • Object Streams (PDF 1.5 ISO 32000-1 7.5.7): postavite THotPDF.UseObjectStreams na true uz UseXRefStream i SaveToStream; time se podobni indirektni objekti (sve osim strimova, encryption rečnika i Catalog i Info rečnika na koje pokazuje trailer) pakuju u jedan ili više /Type /ObjStm kontejnerskih strimova. Cross-reference strim zatim referencira upakovane objekte kroz type-2 unose (field-2 = broj host ObjStm objekta; field-3 = indeks unosa unutar strima). Značajno smanjuje veličinu fajla na PDF-ovima sa mnogo malih rečnika (višestrani dokumenti, anotacije, AcroForm widgeti, elementi stabla strukture, Optional Content slojevi) - 30-strani smoke samo sa grafikom smanjuje se sa 14502 na 8488 bajtova (41.5% manje). Tiho se spušta na false kada je UseXRefStream isključen (type-2 unosi nisu predstavljivi u tekstualnoj xref tabeli po specifikaciji) ili kada je Version ispod PDF 1.5. Dostupno od HotPDF v2.41.0
  • Soft-mask slika / SMask (PDF 1.4 ISO 32000-1 8.9.5.4): THotPDF.AddImageWithSMask(Width, Height, RGB, Alpha) emituje color image XObject plus 8-bitni DeviceGray soft-mask image XObject i automatski povezuje /SMask unakrsnu referencu, tako da svaki piksel može da nosi punu transparentnost po kanalu umesto binarnog on/off ograničenja starog /ImageMask puta. Pomoćni overload THotPDF.AddImageWithSMask32(Bitmap32) izvlači RGB i alpha ravni iz 32-bitnog BGRA TBitmap-a za jednokratno PNG-with-alpha ugrađivanje. Oba poziva prolaze kroz RequirePDFVersion(pdf14) tako da strict-mode 1.3 izlaz ostane usklađen. Dostupno od HotPDF v2.42.0
  • Neobojeno Tiling Pattern bojenje (PDF 1.7 ISO 32000-1 8.6.6.1): THotPDF.RegisterTilingPattern emituje i /PaintType 1 (colored) i /PaintType 2 (uncolored) od v2.19.0, ali je odgovarajući niz operatora na strani stranice bio ispravan samo za obojenu varijantu. Šest novih THPDFPage metoda - SetFillPatternRGB / SetStrokePatternRGB / SetFillPatternGray / SetStrokePatternGray / SetFillPatternCMYK / SetStrokePatternCMYK - sada pokreću neobojenu putanju automatskom registracijom odgovarajućeg [/Pattern /BaseCS] tinting color space-a u page Resources/ColorSpace rečniku i emitovanjem propisanog tint_components /Pn scn niza. Koristite originalne SetFillPattern / SetStrokePattern za obojenu varijantu gde pločica nosi sopstvenu boju. Dostupno od HotPDF v2.43.0
  • CIELab color space (PDF 1.3+ ISO 32000-1 8.6.5.3): THotPDF.RegisterLabColorSpace(Xw, Yw, Zw, aMin, aMax, bMin, bMax) builds an inline [/Lab << /WhitePoint /BlackPoint /Range >>] color space array, stores it under an auto-generated name (Lab1, Lab2, ...) and returns that name for use with the regular THPDFPage.SetFillColorSpace / SetStrokeColorSpace + SetFillColor([L, a, b]) / SetStrokeColor([L, a, b]) pipeline. Drop in a D50 illuminant [0.9505, 1.0, 1.089] for ICC print workflows or a D65 illuminant [0.95047, 1.0, 1.08883] for sRGB-equivalent display, then paint with L* in [0..100] and a*, b* in the chosen range (typically [-128..127]). Available since HotPDF v2.44.0.
  • Separation color space za spot boje (PDF 1.3+ ISO 32000-1 8.6.6.4): THotPDF.RegisterSeparation(ColorantName, AlternateCS, TintC1) definiše jednokomponentnu spot boju čiji jedan tint operand u [0..1] upravlja linearnim Function Type 2 tint transformom koji se interno gradi. Koristite vraćeno ime (Sep1, Sep2, ...) sa uobičajenim SetFillColorSpace / SetStrokeColorSpace + SetFillColor([tint]) / SetStrokeColor([tint]) tokom rada. AlternateCS prihvata DeviceGray, DeviceRGB ili DeviceCMYK; TintC1 daje alt-CS komponente pri tint = 1.0. Pantone i druga imena boja sa razmacima prihvataju se direktno - HotPDF ih pri pisanju imena color-space-a pretvara u #20 prema PDF 1.7 7.3.5. Dostupno od HotPDF v2.45.0
  • AcroForm višeredni i comb appearance strimovi teksta (PDF 1.7 ISO 32000-1 12.7.4.3): kada je THotPDF.AutoFormAppearances uključen, tekst polja čije Flags uključuju ffMultiline dobijaju word-wrapped /AP /N Form XObject (Td + T* + /TL leading raspored, uz poštovanje CR / LF / CRLF razdvajanja i skraćivanje na vidljiv broj redova). Polja čije Flags uključuju ffComb zajedno sa pozitivnim MaxLen prikazuju svaki znak u sopstvenu ćeliju iste širine koristeći apsolutnu Tm matricu po glifu. Jednolinijski raspored iz v2.28.0 ostaje byte-for-byte očuvan za polja bez takvih zastavica. Međunarodni znakovi u početnoj vrednosti i dalje padaju na viewer-ovu /NeedAppearances recomputation putanju - potpuno generisanje appearance sa ugrađenim CID fontom ostaje budući posao. Dostupno od HotPDF v2.46.0
  • AcroForm /AP Unicode font (PDF 1.7 ISO 32000-1 12.7.2 + 12.7.4.3): THotPDF.SetFormUnicodeFontDict(LogicalName, FontDict) registers a caller-supplied Type 0 / CIDFontType2 + Identity-H composite font in the AcroForm /DR/Font default-resources dict. Once registered, the AcroForm-level /DA, every Tx widget's /DA, and the /AP /N stream produced by AutoFormAppearances for non-ASCII Tx initial values all switch to the logical name; the Form XObject's /Resources/Font sub-dict also references the same indirect font so the AP is self-contained without depending on /DR resolution at render time. The companion helper THotPDF.CreateIndirectFontDict returns a fresh empty THPDFDictionaryObject registered as an indirect PDF object so callers can build custom font dicts (or any other dict requiring "N G R" indirect serialization) without touching internal helpers. Pass empty LogicalName and nil FontDict to revert to the v2.46.0 ASCII-only /Helv behavior. ASCII Tx fields continue to use /Helv with byte-identical output to v2.46.0 / v2.55.0. Multi-line + comb non-ASCII /AP and RTL bidi shaping (UAX #9 + Arabic contextual joining) remain future work. Available since HotPDF v2.56.0; ffMultiline non-ASCII /AP support (per-line UTF-16BE hex Tj with Td / T* / /TL leading and CJK-aware word-wrap) since v2.57.0; ffComb non-ASCII /AP support (per-CID equal-width absolute Tm cells + single-cell Tj per code point with UTF-16 surrogate-pair handling) since v2.58.0; THotPDF.FormUnicodeRTL property for right-to-left direction (reverses UTF-16 order in /AP Tj hex while keeping /V in logical order; caller pre-shapes Arabic to Unicode presentation forms U+FB50..U+FDFF + U+FE70..U+FEFF; full UAX #9 + automatic GSUB shaping pending) since v2.59.0.
  • AcroForm rich-text Tx widget (PDF 1.5+ ISO 32000-1 12.7.4.3 + Annex L): THPDFPage.AddRichTextField(FieldName, InitialValue, RichValue, DefaultStyle, Rectangle, [MaxLen], [Flags]) emituje tekst widget sa /RV (rich-text XHTML telo), /DS (CSS-like podrazumevani stil), ffRichText /Ff bit 26 zastavicom automatski OR-ovanom, plus plain-text /V + /DV rezervnim izlazom koji koriste čitači koji ne parsiraju /RV. Acrobat i Foxit renderuju direktno iz /RV kada je RichText bit uključen, preuzimajući fallback fontove iz Unicode fontova instaliranih na čitaču - tako da višebajtni sadržaj (CJK / Cyrillic / Arabic / naglašeni Latin) prikazuje ispravno bez HotPDF ugradnje CID fonta u /DR Resources. I /V i /RV automatski detektuju višebajtni ulaz i prelaze na UTF-16BE heksadekadno string kodiranje (FE FF BOM + big-endian code units) kada je potrebno. Generisanje appearance strima za CID font za HotPDF-ovu sopstvenu /AP putanju ostaje budući posao; viewer-i koji razumeju rich-text to ne zahtevaju. Dostupno od HotPDF v2.55.0
  • DeviceN color space for multi-colorant spot-ink workflows (PDF 1.3+ ISO 32000-1 8.6.6.5): THotPDF.RegisterDeviceN(ColorantNames, AlternateCS, TintC1Matrix) generalises RegisterSeparation from a single spot ink to N. The tint transform is a PostScript-calculator Function Type 4 emitting a linear weighted-blend over the supplied N x M matrix (row n column m is colorant n's contribution to AlternateCS channel m when colorant n is 1.0 alone). Returns a color-space name (DevN1, DevN2, ...) that drives the regular SetFillColorSpace + SetFillColor([t0, t1, ..., t_{N-1}]) pipeline. AlternateCS accepts DeviceGray, DeviceRGB or DeviceCMYK; ink names with spaces are escaped to #20 per PDF 1.7 7.3.5; the special name None marks an unused colorant slot. Available since HotPDF v2.47.0.
  • Free-form Gouraud-shaded triangle mesh (PDF 1.3+ ISO 32000-1 8.7.4.5.4): THotPDF.RegisterFreeFormGouraudShading(XMin, YMin, XMax, YMax, NumComponents, Vertices) declares a /ShadingType 4 stream with /BitsPerCoordinate 16 + /BitsPerComponent 8 + /BitsPerFlag 8, wraps it in an inline Pattern Type 2 entry on the page Resources/Pattern dict, and returns the auto-generated pattern name (Sh1, Sh2, ...) for the regular SetFillPattern / SetStrokePattern pipeline. Each vertex is packed as 1 flag byte (always 0 for independent triangles) + 2 big-endian X bytes + 2 big-endian Y bytes + NumComponents 8-bit color components. The NumComponents argument accepts 1 (DeviceGray), 3 (DeviceRGB) or 4 (DeviceCMYK); each vertex contributes 2 + NumComponents Extended values to Vertices in (X, Y, c1...cN) order; vertex count must be a multiple of 3. /Decode maps the 16-bit coordinates back to [XMin, XMax] x [YMin, YMax] and the color components to [0, 1]. Type 5 (lattice), Type 6 (Coons patch) and Type 7 (tensor product) mesh shadings remain future work. Available since HotPDF v2.48.0.
  • Lattice-form Gouraud senčeno trougaono mreženje (PDF 1.3+ ISO 32000-1 8.7.4.5.5): THotPDF.RegisterLatticeFormGouraudShading(XMin, YMin, XMax, YMax, NumComponents, VerticesPerRow, Vertices) definiše /ShadingType 5 strim koji raspoređuje vrhove u M-red x N-kolona mrežu i omogućava rendereru da automatski trianguliše svaki par susednih redova u triangle strip. Za razliku od RegisterFreeFormGouraudShading (Type 4), nema bajta zastavice po vrhu; /BitsPerFlag nedostaje iz shading rečnika i svaki vrh zauzima samo 4 + NumComponents bajta (2 big-endian X + 2 big-endian Y + N komponenti boje). Shading rečnik umesto toga nosi obavezni /VerticesPerRow N unos. Koristite ga za izvorne podatke koji su već na pravilnoj uzorkovnoj mreži (teren, FEA rezultati, naučni heatmap-ovi) - aplikacija prosleđuje vrhove row-major redosledom, a render pipeline automatski sklapa triangle strip topologiju. VerticesPerRow mora biti najmanje 2, a ukupan broj vrhova mora biti višekratnik VerticesPerRow sa najmanje dva reda. Dostupno od HotPDF v2.49.0
  • Coons patch mesh shading (PDF 1.3+ ISO 32000-1 8.7.4.5.6): THotPDF.RegisterCoonsPatchMesh(XMin, YMin, XMax, YMax, NumComponents, Patches) definiše /ShadingType 6 strim Coons patch-eva, gde je svaki ograničen sa četiri kubne Bezier krive i nosi jednu boju po uglu. Renderer uklapa Coons površinu između četiri ivice, dajući proizvoljno zakrivljen četvorougao sa bojom - korisno za folijske i metalik gradijente na savijenim putanjama, gradient mreže izvedene iz SVG-a i bilo koji četvorougao sa zakrivljenim ivicama koji bi inače zahtevao mnogo malih trouglova za aproksimaciju. Svaki patch doprinosi sa 12 kontrolnih tačaka (24 X+Y Extended vrednosti, raspoređene c1..c12 u smeru kazaljke na satu duž granice sa c1 / c4 / c7 / c10 na četiri ugla i preostalih 8 kao unutrašnje Bezier ručke) nakon čega slede 4 boje uglova (4 * NumComponents Extended vrednosti), pa je Patches korak 24 + 4 * NumComponents. Shading rečnik nosi isto /BitsPerCoordinate 16 + /BitsPerComponent 8 + /BitsPerFlag 8 kao Type 4 (a za razliku od Type 5, /VerticesPerRow nedostaje). Svaki emitovani patch nosi flag = 0 (nezavisni patch); nastavne zastavice 1 / 2 / 3 (deljenje ivica) nisu izložene u ovom pomoćnom overload-u. Dostupno od HotPDF v2.50.0
  • Separation color space with sampled LUT tint transform (PDF 1.3+ ISO 32000-1 8.6.6.4 + 7.10.2): THotPDF.RegisterSeparationLUT(ColorantName, AlternateCS, Samples) wraps RegisterSampledFunction so callers can express a full non-linear tint -> alt-CS curve as a flat byte stream of 8-bit (M-tuple) samples without manually constructing a Function Type 0 dictionary. Use the LUT variant when the color transition is non-linear - PANTONE Hexachrome-style tint ramps, gamma-corrected density curves, hand-drawn tone curves matching a press characterisation, sRGB-to-spot conversion ICC LUTs without the full ICC profile machinery; the v2.45.0 RegisterSeparation entry point still covers the linear single-endpoint case. AlternateCS accepts DeviceGray, DeviceRGB or DeviceCMYK; Samples length must be a positive multiple of M with at least 2 * M bytes so the function has interpolable range, and the grid-point count S is inferred from Length(Samples) / M. Linear interpolation is the default per PDF 1.7 /Order 1. Returns the registered color-space name (Sep1, Sep2, ...) for use with the regular SetFillColorSpace + SetFillColor([tint]) pipeline. Available since HotPDF v2.53.0.
  • Function Type 0 (Sampled) registration (PDF 1.3+ ISO 32000-1 7.10.2): THotPDF.RegisterSampledFunction(Domain, Range, Size, BitsPerSample, Samples, [Order]) declares an indirect /FunctionType 0 stream that expresses an arbitrary input-to-output mapping as a regular N-dimensional grid of M-dimensional output samples, interpolated between grid points. Use it where ICC profile machinery is overkill but a hand-tuned color LUT is desired - tone curves for /TransferFunction (ExtGState /TR), sampled tint transforms for /Separation / /DeviceN beyond the linear Type 2 / arithmetic Type 4 paths, halftone threshold curves, or any other PDF construct that takes a Function dictionary. Domain is 2N entries (one [min, max] pair per input dimension); Range is 2M entries (one pair per output dimension); Size is N grid-point counts; BitsPerSample accepts 1, 2, 4, 8, 12, 16, 24, or 32 per PDF 1.7 Table 38; Samples is the raw bit-packed sample stream (MSB-first within each sample, no padding between samples beyond the final-byte zero-fill, with input 0 varying fastest per spec sample-order rules); Order defaults to 1 (linear) and accepts 3 (cubic-spline interpolation, since v2.54.0) per PDF 1.7 Table 38. HotPDF validates the sample-byte count against ceil(GridPoints * M * BitsPerSample / 8). Returns the indirect THPDFStreamObject so callers can attach it wherever a Function dictionary is expected. Available since HotPDF v2.52.0; cubic /Order 3 + end-to-end multi-input / multi-output coverage since v2.54.0.
  • Tensor product patch mesh shading (PDF 1.3+ ISO 32000-1 8.7.4.5.7): THotPDF.RegisterTensorProductPatchMesh(XMin, YMin, XMax, YMax, NumComponents, Patches) definiše /ShadingType 7 strim tensor-product patch-eva, gde je svaki definisan punom 4 x 4 mrežom bicubic Bezier kontrolnih tačaka p[i][j] plus jednom bojom po uglu. Proširuje RegisterCoonsPatchMesh (Type 6) tako što dodaje 4 eksplicitne unutrašnje kontrolne tačke (p[1][1], p[1][2], p[2][2], p[2][1]) na vrh 12 graničnih tačaka, dajući finiju kontrolu unutrašnjosti patch-a nego što Coons-blended fit može da izrazi. Korisno za SVG mesh-gradient round-tripove i bilo koje umetničko delo kome je potrebna tensor-product Bezier površina. Svaki patch doprinosi sa 16 kontrolnih tačaka (32 X+Y Extended vrednosti, po redosledu iz specifikacije Table 88 stream order: p[0][0..3], p[1][3], p[2][3], p[3][3], p[3][2..0], p[2][0], p[1][0], zatim 4 unutrašnje tačke p[1][1], p[1][2], p[2][2], p[2][1]) nakon čega slede 4 boje uglova (4 * NumComponents Extended vrednosti na p[0][0] / p[0][3] / p[3][3] / p[3][0]), pa je Patches korak 32 + 4 * NumComponents. Svaki emitovani patch nosi flag = 0 (nezavisni patch). Ovim izdanjem cela ISO 32000-1 8.7.4.5 family mesh shading-a (Types 4 / 5 / 6 / 7) je pokrivena. Dostupno od HotPDF v2.51.0
  • Annotation border style and Popup linkage (PDF 1.7 12.5.4 / 12.5.6.14): THPDFPage.SetAnnotationBorderStyle(Annot, Width, Style, DashPattern) attaches a /BS dictionary with the chosen THPDFAnnotBorderStyle (absSolid / absDashed / absBeveled / absInset / absUnderline). THPDFPage.AddPopupAnnotationFor(ParentAnnot, Rect, Open) emits a /Popup annotation that is wired in both directions (parent /Popup -> popup, popup /Parent -> parent) so the viewer can render the speech-balloon connector. The new THPDFPage.LastAnnotation property feeds either helper without changing the signature of the existing Add*Annotation procedures. Available since HotPDF v2.34.0
  • Public-Key Security Handler (PDF 1.7 7.6.5): THotPDF.EnablePubKeyEncryption(seed, KeyType, EncryptMetadata) + THotPDF.AddPubKeyRecipient(envelope) emituju /Filter /Adobe.PubSec encrypt rečnik (/SubFilter /adbe.pkcs7.s4 za V=1 RC4-40 / /adbe.pkcs7.s5 za V=2 RC4-128 / V=4 AESV2). Pozivalac prosleđuje 20-bajtni slučajni seed i po jedan PKCS#7 envelopedData binarni blob za svakog primaoca (izrađen eksterno pomoću Windows CryptoAPI, OpenSSL ili pycryptodome). HotPDF izvodi ključ za šifrovanje fajla kroz algoritam 9 (SHA-1 od seed-a spojenog sa svakim envelope-om) i ponovo koristi standardno izvođenje ključa po objektu za AES-128 / RC4 strimove. Dostupno od HotPDF v2.33.0

Vidi i