Podrška za PDF filtre

Pregled

PDF tokovi i ugrađene slike identificiraju svoje kodiranje kroz nazive filtara. HotPDF primarno radi sa sljedećim obiteljima filtera pri generiranju dokumenata ili dekodiranju vanjskog sadržaja

Uobičajeni filtri

  • FlateDecode: glavni filter kompresije za generirane tokove i primarna putanja dekompresije temeljena na zlib-u
  • LZWDecode: podržan za starije scenarije i kompatibilnost kroz HPDFLZW.pas
  • DCTDecode: koristi se za standardne JPEG slikovne podatke koje obrađuju HotPDF putanje za učitavanje slika
  • CCITTFaxDecode: čest u monokromatskom TIFF-u i fax-stilu slikovnih podataka
  • ASCIIHexDecode / ASCII85Decode / RunLengthDecode: pomoćne funkcije enkodera izložene u HPDFTypes.pas (_ASCIIHexEncode, _ASCII85Encode, _RunLengthEncode) od HotPDF v2.4.0. Korisno pri omatanju proizvoljnog binarnog sadržaja za 7-bitne kanale ili za eksplicitnu PDF 1.7 7.4 round-trip podršku
  • JBIG2Decode / JPXDecode: nazivi filtara definirani PDF 1.7 7.4.7 / 7.4.9. Ugrađene HotPDF-ove pomoćne funkcije za JBIG2 i JPEG 2000 su stubovi koji prijavljuju nepodržano (vraćaju False) dok se ne poveže stvarni OpenJPEG / JBIG2 backend. Ranije su izdanja vraćala lažni uspjeh 100×100, što je proizvodilo nečitljive slike; to je sada ispravljeno

Praktične napomene

  • Ne izlaže se svaki filter kroz jedan generički API; do nekih se dolazi kroz namjenske pomoćne jedinice za slike ili tokove
  • Za generirani PDF sadržaj, THotPDF.Compression ostaje središnja postavka vidljiva korisniku
  • Pri učitavanju vanjskih podataka primjenjivi filter ovisi o formatu izvorne datoteke i pomoćnoj klasi koja se koristi
  • Šifrirani PDF-ovi kombiniraju ove filtre sa security handlerom; pogledajte CryptKeyLength za podržane AES‑128 (V=4 R=4 / CFM=AESV2) i RC4 (V=1/V=2) opcije
  • Interaktivna polja obrasca emitiraju se kao Widget anotacije koje preglednik prikazuje; pogledajte Podrška za AcroForm
  • Anotacije za označavanje teksta (Highlight, Underline, Squiggly, StrikeOut) i skokove unutar dokumenta (GoTo, GoToR, Launch) izloženi su kao nove metode THPDFPage.Add*Annotation / AddGoToLink / AddGoToRLink / AddLaunchLink od HotPDF v2.6.0
  • DeviceCMYK izlaz dostupan je kroz THPDFPage.SetCMYKColor / SetCMYKFillColor / SetCMYKStrokeColor; ICC-upravljani color spaceovi registriraju se s THotPDF.RegisterICCProfile i primjenjuju kroz SetFillColorSpace / SetStrokeColorSpace + SetFillColor / SetStrokeColor od HotPDF v2.7.0
  • Postavite THotPDF.UseXRefStream na true prije spremanja kako biste emitirali jedan FlateDecode-komprimirani cross-reference stream /Type /XRef umjesto tekstualnog niza xref / trailer / startxref (PDF 1.7 7.5.8); dostupno od HotPDF v2.8.0
  • Postavite THotPDF.EnableXMPMetadata na true kako biste priložili XMP stream /Type /Metadata /Subtype /XML Catalogu (PDF 1.7 14.3.2); automatski se gradi iz polja Info rječnika ili se može dobaviti ručno izrađen paket putem CustomXMP Dostupno od HotPDF v2.9.0
  • Provjera PDF verzije po metodi (od HotPDF v2.24.0). Svaka metoda značajke uvedena u v2.4.0+ prije emitiranja provjerava RequirePDFVersion; s StrictVersionLock=false (zadano) Version dokumenta tiho se automatski podiže na minimum koji značajka zahtijeva, a s StrictVersionLock=true poziv se odbija tako da spremljena datoteka strogo odgovara odabranoj referentnoj specifikaciji 1.3 / 1.4 / 1.5 / 1.6 / 1.7
  • PNG i TIFF predictor enkoderi za FlateDecode komprimirane podatke slike (PDF 1.7 7.4.4.4): _PNGPredictorEncode primjenjuje heuristiku filtra libpng minimum-absolute-difference (Predictor=15), a _TIFFPredictor2Encode primjenjuje horizontalno diferenciranje (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) putem THPDFPage.DrawInlineImage; sirovi bajtovi automatski se omataju ASCIIHexom kada nije naveden Filter kako bi sadržajni tok ostao 7-bitno čist. Dostupno od HotPDF v2.18.0
  • OutputIntents (PDF 1.7 14.11) putem THotPDF.AddOutputIntent; svaki poziv dodaje /Type /OutputIntent rječnik u Catalog s opcionalnim /DestOutputProfile koji upućuje na registrirani ICC profil. Dostupno od HotPDF v2.18.0
  • Automatsko generiranje appearance streamova za AcroForm (PDF 1.7 12.5.5 / 12.7.3.3 / 8.10): postavite THotPDF.AutoFormAppearances na true prije dodavanja interaktivnih obrazaca i HotPDF će unaprijed izraditi /Subtype /Form Form XObject za svaki widgetov unos /AP /N (podrječnici Yes / Off za gumbe), popuniti AcroForm /DR zadane resurse neizravnim font-rječnicima Helvetica / ZapfDingbats i postaviti /NeedAppearances na false kako bi rendereri uvažili ugrađene tokove. Dostupno od HotPDF v2.28.0
  • ViewerPreferences /ViewArea i /ViewClip (PDF 1.4 12.2 Tablica 152) sada su izloženi kroz svojstva THotPDF.ViewArea / THotPDF.ViewClip (s odgovarajućim članovima skupa vpViewArea / vpViewClip). Oba prihvaćaju vrijednosti THPDFPageBoundary (MediaBox / CropBox / BleedBox / TrimBox / ArtBox) i zaokružuju HotPDF-ovu podršku za četiri PDF 1.4 page-boundary ViewerPreferences. Dostupno od HotPDF v2.29.0
  • Prijelazi stranica (PDF 1.1 / 1.5 12.4.4): THPDFPage.SetPageTransition zapisuje /Trans rječ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 enumeraciju THPDFTransitionStyle; izložene su i popratne /Dm, /M i /Di podopcije. THPDFPage.SetPageDuration zapisuje /Dur odgodu automatskog napredovanja u sekundama. Dostupno od HotPDF v2.30.0
  • Grupa prozirnosti na razini stranice (PDF 1.4 11.6.6 / 7.5.5): THPDFPage.SetTransparencyGroup dodaje /Group rječnik (/Type /Group /S /Transparency) kako bi rendereri predvidljivo kompozitirali sadržaj s alfom. Odaberite prostorni model boja uređaja kroz enumeraciju THPDFGroupColorSpace (DeviceGray / DeviceRGB / DeviceCMYK ili izostavite), ili pozovite THPDFPage.SetTransparencyGroupICC s nazivom ICC profila prethodno registriranog putem THotPDF.RegisterICCProfile. Opcionalne zastavice /I (Isolated) i /K (Knockout) upravljaju kompozitorom; THPDFPage.ClearTransparencyGroup uklanja prethodno dodani 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 načinu samo dodavanja; naknadni CreateIndirect* pozivi automatski označavaju nove objekte kao prljave, a THotPDF.MarkDirty(Obj) označava već učitane objekte za ponovno emitiranje. THotPDF.SaveIncrementalUpdate(TargetFile) zapisuje izvorne bajtove doslovno, dodaje samo prljave objekte uz očuvane brojeve objekata, emitira novu xref podsekciju i završava trailerom koji nosi /Prev koji upućuje na prethodni xref. Kombinirajte s postojećim cjevovodom AddSignedSignatureField + PreparePDFForSigning + InsertSignatureHex za dodavanje naknadnih polja potpisa već potpisanom dokumentu bez poništavanja ranijih potpisa (njihovi /ByteRange sažeci ostaju valjani jer se nijedan izvorni bajt ne mijenja). Dostupno od HotPDF v2.35.0
  • Normalizacija imena ugrađenih TrueType fontova: HotPDF čita ugrađenu TrueType name tablicu i usklađuje /BaseFont, /FontDescriptor /FontName, /FontFamily i potomke CID imena fontova s PostScript imenom programskog fonta. Time se izbjegavaju Adobe Acrobat Font Capture pogreške uzrokovane neskladom između PDF font rječ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.
  • Put ugradnje OpenType-CFF (.otf) fonta povezan je sa StoreFont (PDF 1.6+ 9.7.4 Tablica 117). Kada je binarna datoteka fonta učitana preko GDI-ja sfnt OTTO spremnik, HotPDF podskupira ugrađenu podtablicu 'CFF ' kroz HPDFSubsetOTFContainer, ispisuje program fonta putem /FontFile3 /Subtype /OpenType i zapisuje izvedeni font-rječnik sa /Subtype /CIDFontType0 umjesto /CIDFontType2. TrueType fontovi i dalje prolaze kroz postojeći put /FontFile2 + /CIDFontType2 bez promjene ponašanja. Dostupno od HotPDF v2.38.0
  • CFF podskupiranje potprograma od početka do kraja (PDF 1.7 9.7.4 §6 / Adobe Tech Note #5177 §3.1): CFF podskupivač sada uklanja neiskorištene unose iz OBA indeksa Global Subr INDEX (smještenog odmah nakon String INDEX u CFF binarnoj datoteci) i Local Subr INDEX (ugniježđenog pod Private DICT, dostupnog preko Top DICT operatora 18 + Private DICT operatora 19). Jedno zatvaranje fiksne točke transitive prati lance callsubr (op 0x0A) I callgsubr (op 0x1D), pa se CharString koji pozove Local Subr koji poziva Global Subr koji poziva drugi Local Subr hvata u jednom prolazu. Svaki neiskorišteni unos zamjenjuje se 1-bajtnim return stubbom, a INDEX se prepisuje na mjestu uz nulto popunjavanje zaostalog prostora. To je izloženo kroz javne pomoćnike HPDFSubsetCFF i HPDFSubsetOTFContainer; nižerazinski CFF skeneri ostaju unutarnji. Dostupno od HotPDF v2.39.0
  • CID-keyed CFF podskupiranje (PDF 1.7 ISO 32000-1 9.7.4 / Adobe Tech Note #5176 §18-19): CFF podskupivač sada prepoznaje Top DICT ROS operator (12-30) koji označava CID-keyed OpenType-CFF font i prolazi kroz FDArray (12-36) INDEX font-rječnika, pri čemu svaki nosi vlastiti Private DICT + Local Subr INDEX. FDSelect (12-37) mapa glifova u FD čuva se bajt za bajt. Skeniranje zatvaranja potprograma prati FD kontekst svakog zadržanog CharStringa tako da glif u FD #5 označava samo Local Subrs u FD #5 - globalni subr ostaju zajednički svim FD-ovima. Local Subr INDEX svakog FD-a prepisuje se na mjestu uz spajanje neiskorištenih unosa u 1-bajtne return 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 podskupiranja umjesto da se ugrađuju takvi kakvi jesu. Dostupno od HotPDF v2.40.0
  • Objektni tokovi (PDF 1.5 ISO 32000-1 7.5.7): postavite THotPDF.UseObjectStreams na true uz UseXRefStream i SaveToStream kako bi se neizravni objekti koji se smiju spakirati spakirali u jedan ili više spremnika xref toka /Type /ObjStm. xref tok zatim referencira zapakirane objekte kroz unos tipa 2 (field-2 = broj host ObjStm objekta; field-3 = indeks unosa unutar toka). Time se znatno smanjuje veličina datoteke na PDF-ovima s mnogo malih rječnika (dokumenti s više stranica, anotacije, AcroForm widgeti, elementi tree strukture, Optional Content slojevi) - smoke test od 30 stranica samo s grafikom smanjuje se s 14502 na 8488 bajtova (41,5 % manje). Značajka se prešutno spušta na false kada je UseXRefStream isključen (unosi tipa 2 nisu prikazivi u tekstualnoj xref tablici prema 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) ispisuje color image XObject plus 8-bit DeviceGray soft-mask image XObject i automatski povezuje /SMask referencu, tako da svaki piksel može nositi punu prozirnost po kanalu umjesto binarnog on/off ograničenja starog /ImageMask puta. Praktično preopterećenje THotPDF.AddImageWithSMask32(Bitmap32) izvlači RGB i alfa ravnine iz 32-bitnog BGRA TBitmapa za ugradnju PNG-a s alfom jednim pozivom. Oba poziva prolaze kroz RequirePDFVersion(pdf14) kako bi strogi izlaz 1.3 ostao usklađen. Dostupno od HotPDF v2.42.0
  • Neobojano slikanje Tiling Patterna (PDF 1.7 ISO 32000-1 8.6.6.1): THotPDF.RegisterTilingPattern od v2.19.0 ispisuje i /PaintType 1 (obojani) i /PaintType 2 (neobojani), ali odgovarajući slijed operatora na strani bio je ispravan samo za obojanu varijantu. Šest novih THPDFPage metoda - SetFillPatternRGB / SetStrokePatternRGB / SetFillPatternGray / SetStrokePatternGray / SetFillPatternCMYK / SetStrokePatternCMYK - sada vode neobojani put automatskom registracijom odgovarajućeg color spacea [/Pattern /BaseCS] na page Resources/ColorSpace rječniku i ispisom slijeda tint_components /Pn scn koji zahtijeva specifikacija. Za obojanu varijantu koristite izvorni SetFillPattern / SetStrokePattern, gdje pločica nosi vlastitu 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) definira jedno-komponentnu spot tintu čiji jedan tint operand u [0..1] pokreće linearni Function Type 2 tint transform izgrađen interno. Vraćeni naziv (Sep1, Sep2, ...) koristite s uobičajenim SetFillColorSpace / SetStrokeColorSpace + SetFillColor([tint]) / SetStrokeColor([tint]) tijekom rada. AlternateCS prihvaća DeviceGray, DeviceRGB ili DeviceCMYK; TintC1 daje komponente alternativnog color spacea pri tint = 1.0. Pantone i druga imena boja sa razmacima prihvaćaju se izravno - HotPDF ih pri upisu color-space naziva escapira u #20 prema PDF 1.7 7.3.5. Dostupno od HotPDF v2.45.0
  • Višeredni i comb appearance streamovi za AcroForm tekst (PDF 1.7 ISO 32000-1 12.7.4.3): kada je THotPDF.AutoFormAppearances uključen, tekstualna polja čije Flags uključuju ffMultiline dobivaju /AP /N Form XObject s prijelomom riječi (Td + T* + /TL raspored, uz poštovanje CR / LF / CRLF razdjelnika i skraćivanje na vidljivi broj redaka). Polja čije Flags uključuju ffComb zajedno s pozitivnim MaxLen prikazuju svaki znak u vlastitoj jednako širokoj ćeliji koristeći apsolutnu Tm matricu po glifu. Jednoredni raspored iz v2.28.0 čuva se bajt za bajt za polja bez takvih zastavica. Međunarodni znakovi u početnoj vrijednosti i dalje prelaze na put ponovnog izračuna /NeedAppearances u pregledniku - potpuno generiranje appearance streamova s ugrađenim CID fontovima ostaje budući rad. 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]) ispisuje tekstualni widget s /RV (XHTML tijelo obogaćenog teksta), /DS (CSS-like zadani stil), automatski uključenom zastavicom ffRichText /Ff bit 26, te plain-text /V + /DV rezervom koju koriste čitači koji ne obrađuju /RV. Acrobat i Foxit izravno renderiraju iz /RV kada je RichText bit uključen i preuzimaju font fallback iz Unicode fontova instaliranih u čitaču - pa se višebajtni sadržaj (CJK / ćirilica / arapski / naglašeni latinčni znakovi) prikazuje ispravno bez ugrađivanja CID fonta u /DR Resources. I /V i /RV automatski otkrivaju višebajtni unos i po potrebi prelaze na UTF-16BE hex-string kodiranje (FE FF BOM + big-endian code units). Generiranje appearance streamova s CID fontovima za HotPDF-ov vlastiti /AP put ostaje budući rad; vieweri svjesni rich teksta to ne trebaju. 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-shaded triangle mesh (PDF 1.3+ ISO 32000-1 8.7.4.5.5): THotPDF.RegisterLatticeFormGouraudShading(XMin, YMin, XMax, YMax, NumComponents, VerticesPerRow, Vertices) definira /ShadingType 5 tok koji raspoređuje vrhove u M-redni x N-stupčasti raster i dopušta rendereru da automatski triangulira svaki par susjednih redaka u triangle strip. Za razliku od RegisterFreeFormGouraudShading (Type 4), nema bajta zastavice po vrhu; /BitsPerFlag ne postoji u shading rječniku i svaki vrh zauzima samo 4 + NumComponents bajta (2 big-endian X + 2 big-endian Y + N komponenti boje). Shading rječnik umjesto toga nosi obavezni unos /VerticesPerRow N. Koristite ga za izvorne podatke koji su već na pravilnoj mreži uzoraka (tereni, FEA rezultati, znanstveni heatmapovi) - aplikacija isporučuje vrhove row-major, a rendererski pipeline automatski sastavlja topologiju triangle stripa. VerticesPerRow mora biti barem 2, a ukupan broj vrhova mora biti višekratnik VerticesPerRow uz barem dva retka. 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) definira /ShadingType 6 tok Coons zakrpa, pri čemu je svaka omeđena četirima kubičnim Bezierovim krivuljama i nosi jednu boju po kutu. Rendererski engine uklapa Coonsovu površinu između četiri ruba, dajući proizvoljno zakrivljen obojeni četverokut - korisno za folijske i metalne gradijente na savijenim putanjama, SVG-om izvedene gradient meshove i svaki četverokut sa zakrivljenim rubovima koji bi inače zahtijevao mnogo malih trokuta za aproksimaciju. Svaka zakrpa doprinosi 12 kontrolnih točaka (24 X+Y Extended vrijednosti, poredane c1..c12 u smjeru kazaljke na satu po obodu, s c1 / c4 / c7 / c10 na četiri kuta i preostalih 8 kao unutarnje Bezierove ručke), nakon čega slijede 4 kutne boje (4 * NumComponents Extended vrijednosti), pa je stride za Patches 24 + 4 * NumComponents. Shading rječnik nosi iste /BitsPerCoordinate 16 + /BitsPerComponent 8 + /BitsPerFlag 8 kao Type 4 (i za razliku od Type 5, /VerticesPerRow nedostaje). Svaka ispisana zakrpa nosi flag = 0 (neovisna zakrpa); nastavne zastavice 1 / 2 / 3 (dijeljenje ruba) nisu izložene u ovom praktičnom preopterećenju. 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) definira /ShadingType 7 tok tensor-product zakrpa, pri čemu je svaka definirana potpunom 4 x 4 mrežom bicubičnih Bezierovih kontrolnih točaka p[i][j] plus jedna boja po kutu. Proširuje RegisterCoonsPatchMesh (Type 6) dodavanjem 4 eksplicitne unutarnje kontrolne točke (p[1][1], p[1][2], p[2][2], p[2][1]) na vrh 12 rubnih točaka, dajući finiju kontrolu unutrašnjosti zakrpe nego što to može izraziti Coons-blend fit. Korisno za SVG mesh-gradient round-tripove i svako djelo koje treba tensor-product Bezierovu površinu. Svaka zakrpa doprinosi 16 kontrolnih točaka (32 X+Y Extended vrijednosti, poredane prema spec Tablici 88 stream redoslijeda: 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 unutarnje točke p[1][1], p[1][2], p[2][2], p[2][1]) nakon čega slijede 4 kutne boje (4 * NumComponents Extended vrijednosti na p[0][0] / p[0][3] / p[3][3] / p[3][0]), pa je stride za Patches 32 + 4 * NumComponents. Svaka ispisana zakrpa nosi flag = 0 (neovisna zakrpa). Ovim izdanjem cijela ISO 32000-1 8.7.4.5 obitelj mesh shadinga (Types 4 / 5 / 6 / 7) sada 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) ispisuju /Filter /Adobe.PubSec encrypt rječnik (/SubFilter /adbe.pkcs7.s4 za V=1 RC4-40 / /adbe.pkcs7.s5 za V=2 RC4-128 / V=4 AESV2). Pozivatelj isporučuje 20-bajtni slučajni seed i jedan PKCS#7 envelopedData binarni blob po primatelju (izrađen izvana pomoću Windows CryptoAPI, OpenSSL-a ili pycryptodome). HotPDF izvodi ključ za šifriranje datoteke kroz algoritam 9 (SHA-1 seed-a spojenog sa svakim envelopeom) i ponovno koristi standardno izvođenje ključa po objektu za AES-128 / RC4 tokove. Dostupno od HotPDF v2.33.0

See Also