|
PDF Filter Support
Pregled
Tokovi PDF in vdelane slike svojo kodiranje identificirajo prek imen filtrov. HotPDF pri ustvarjanju dokumentov ali razkodiranju zunanje vsebine predvsem uporablja naslednje družine filtrov
Common Filters
- FlateDecode: glavni filter stiskanja za ustvarjene tokove in glavna pot razstiskanja na osnovi zlib
- LZWDecode: Podprt za starejše in scenarije združljivosti 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žni kodirniki, izpostavljeni v HPDFTypes.pas (_ASCIIHexEncode, _ASCII85Encode, _RunLengthEncode) od HotPDF v2.4.0 naprej. Uporabni so pri ovijanju poljubne binarne vsebine za 7-bitne kanale ali za izrecno podporo povratnega poteka PDF 1.7 7.4
- 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
Practical Notes
- Not every filter is exposed through a single generic API; some are reached through dedicated image or stream helper units
- Za ustvarjeno PDF-vsebino ostaja THotPDF.Compression osrednja uporabniško vidna nastavitev
- Pri nalaganju zunanjih podatkov je uporabljen filter odvisen od oblike izvorne datoteke in uporabljanega pomožnega razreda
- 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 obrazcev se izpisujejo kot opombe Widget, ki jih pregledovalnik nariše; glejte 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
- Izhod DeviceCMYK je na voljo prek THPDFPage.SetCMYKColor / SetCMYKFillColor / SetCMYKStrokeColor; barvni prostori, upravljani prek ICC, se registrirajo s THotPDF.RegisterICCProfile in uporabijo prek SetFillColorSpace / SetStrokeColorSpace + SetFillColor / SetStrokeColor od HotPDF v2.7.0 naprej
- Pred shranjevanjem nastavite
THotPDF.UseXRefStream na true, da namesto besedilnega zaporedja xref / trailer / startxref izpišete en sam s FlateDecode stisnjen navzkrižni referenčni tok /Type /XRef (PDF 1.7 7.5.8); na voljo od HotPDF v2.8.0
- Nastavite
THotPDF.EnableXMPMetadata na true, da v Catalog priložite tok XMP /Type /Metadata /Subtype /XML (PDF 1.7 14.3.2); samodejno se izdela iz polj slovarja Info ali pa prek CustomXMP posredujete ročno sestavljen paket. Na voljo od HotPDF v2.9.0
- Nadzor različice PDF po posamezni metodi (od HotPDF v2.24.0 naprej). Vsaka metoda funkcije, uvedena v v2.4.0+, pred izpisom pokliče RequirePDFVersion; pri StrictVersionLock=false (privzeto) se Version dokumenta tiho samodejno poviša na najmanjšo zahtevano vrednost, pri StrictVersionLock=true pa se klic zavrne, tako da shranjena datoteka strogo ustreza izbrani referenčni specifikaciji 1.3 / 1.4 / 1.5 / 1.6 / 1.7
- Kodirniki napovedovalca PNG in TIFF za slikovne podatke, stisnjene s FlateDecode (PDF 1.7 7.4.4.4): _PNGPredictorEncode uporabi hevristiko najmanjših absolutnih razlik iz libpng (Predictor=15), _TIFFPredictor2Encode uporabi horizontalno razlikovanje (Predictor=2). Na voljo od HotPDF v2.10.0 naprej
- 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
- Vgrajene slike (PDF 1.7 8.9.7) prek THPDFPage.DrawInlineImage; surovi bajti se samodejno ovijejo z ASCIIHex, kadar ni podan Filter, tako da ostane vsebnostni tok 7-bitno čist. Na voljo od HotPDF v2.18.0 naprej
- OutputIntents (PDF 1.7 14.11) prek THotPDF.AddOutputIntent; vsak klic doda slovar /Type /OutputIntent v Catalog z neobveznim /DestOutputProfile, ki se sklicuje na registriran ICC profil. Na voljo od HotPDF v2.18.0 naprej
- Samodejno ustvarjanje appearance-stream za AcroForm (PDF 1.7 12.5.5 / 12.7.3.3 / 8.10): pred dodajanjem interaktivnih polj obrazca nastavite THotPDF.AutoFormAppearances na true in HotPDF bo za vsak vnos /AP /N gradnika vnaprej zgradil /Subtype /Form Form XObject (podslovarja Yes / Off za gumbe), v default resources AcroForm /DR dodal posredne slovarje pisav Helvetica / ZapfDingbats in preklopil /NeedAppearances na false, da bodo izrisovalniki upoštevali vdelane tokove. Na voljo od HotPDF v2.28.0 naprej
- ViewerPreferences /ViewArea in /ViewClip (PDF 1.4 12.2 tabela 152) sta zdaj izpostavljena prek lastnosti THotPDF.ViewArea / THotPDF.ViewClip (z ustreznima množicama vpViewArea / vpViewClip). Obe sprejemata vrednosti THPDFPageBoundary (MediaBox / CropBox / BleedBox / TrimBox / ArtBox) in dopolnjujeta HotPDFovo pokritost vseh štirih page-boundary ViewerPreferences PDF 1.4. Na voljo od HotPDF v2.29.0 naprej
- Prehodi strani (PDF 1.1 / 1.5 12.4.4): THPDFPage.SetPageTransition zapiše slovar /Trans na stran, da pregledovalniki PDF v načinu /PageMode /FullScreen animirajo navigacijo. Slogi PDF 1.1 (Split, Blinds, Box, Wipe, Dissolve, Glitter, R) in slogi PDF 1.5 (Fly, Push, Cover, Uncover, Fade) so izpostavljeni prek naštevalnika THPDFTransitionStyle; izpostavljeni so tudi spremljevalni podmožnosti /Dm, /M in /Di. THPDFPage.SetPageDuration zapiše zakasnitev samodejnega prehoda /Dur v sekundah. Na voljo od HotPDF v2.30.0 naprej
- Skupina preglednosti na ravni strani (PDF 1.4 11.6.6 / 7.5.5): THPDFPage.SetTransparencyGroup pripne slovar /Group (/Type /Group /S /Transparency), tako da izrisovalniki predvidljivo sestavljajo vsebino z alfa kanalom. Prek naštevalnika THPDFGroupColorSpace izberite barvni prostor naprave (DeviceGray / DeviceRGB / DeviceCMYK ali izpustite), ali pa pokličite THPDFPage.SetTransparencyGroupICC z imenom ICC profila, ki je bil prej registriran prek THotPDF.RegisterICCProfile. Neobvezni zastavici /I (Isolated) in /K (Knockout) usmerjata sestavljalnik; THPDFPage.ClearTransparencyGroup odstrani prej pripeto postavko. Na voljo od HotPDF v2.32.0 naprej
- Postopna posodobitev (PDF 1.7 ISO 32000-1 7.5.6): THotPDF.BeginIncrementalUpdate(SourceFile) naloži obstoječi PDF v načinu samo dodajanja; poznejši klici CreateIndirect* samodejno označijo nove objekte kot spremenjene, THotPDF.MarkDirty(Obj) pa označi že obstoječe naložene objekte za ponovno izpisovanje. THotPDF.SaveIncrementalUpdate(TargetFile) zapiše izvirne izvorne bajte nespremenjeno, doda le spremenjene objekte z ohranjenimi številkami objektov, izpiše nov podrazdelek xref in zaključi s trailerjem, ki vsebuje /Prev in kaže na prejšnji xref. V kombinaciji z obstoječo cevjo AddSignedSignatureField + PreparePDFForSigning + InsertSignatureHex lahko dokumentu, ki je že podpisan, dodate nadaljnja polja podpisa, ne da bi razveljavili prejšnje podpise (njihovi izračuni /ByteRange ostanejo veljavni, ker se noben od izvirnih bajtov ne spremeni). Na voljo od HotPDF v2.35.0 naprej
- Normalizacija imena vdelane pisave TrueType: HotPDF prebere tabelo imen vdelane pisave TrueType in uskladi /BaseFont, /FontDescriptor /FontName, /FontFamily in imena podrejenih CID pisav z imenom PostScript programa pisave. To preprečuje napake Adobe Acrobat Font Capture, ki nastanejo zaradi neskladja med slovarjem pisave PDF in vdelanim paketom TTF. Na voljo od HotPDF v2.35.1 naprej
- 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.
- Povezana pot vdelave OpenType-CFF (.otf) v StoreFont (PDF 1.6+ 9.7.4 tabela 117). Kadar je binarna pisava, naložena prek GDI, vsebnik sfnt OTTO, HotPDF vdelani podtabeli 'CFF ' pripravi podnabor prek HPDFSubsetOTFContainer, program pisave izpiše prek /FontFile3 /Subtype /OpenType in slovar podrejene pisave zapiše z /Subtype /CIDFontType0 namesto /CIDFontType2. Pisave TrueType nadaljujejo po obstoječi poti /FontFile2 + /CIDFontType2 brez spremembe vedenja. Na voljo od HotPDF v2.38.0 naprej
- Končni podnabor podprogramov CFF (PDF 1.7 9.7.4 §6 / Adobe Tech Note #5177 §3.1): podnaborovalnik CFF zdaj odstrani neuporabljene vnose iz OBEH indeksov Global Subr INDEX (ki se nahaja takoj za String INDEX v binarni datoteki CFF) in Local Subr INDEX (ugnezden pod Private DICT, dosegljiv prek operatorja Top DICT 18 + operatorja Private DICT 19). En sam fiksnotočkovni zaključek tranzitivno sledi verigam callsubr (op 0x0A) IN callgsubr (op 0x1D), tako da se CharString, ki kliče Local Subr, ta pa Global Subr, ki kliče še en Local Subr, zajame v enem prehodu. Vsak neuporabljen vnos se zamenja z 1-bajtno povratno šablono, INDEX pa se prepiše na mestu z ničlami v preostalem slaku. To vedenje je izpostavljeno prek javnih pomočnikov HPDFSubsetCFF in HPDFSubsetOTFContainer; nižjenivojski pregledovalniki CFF ostajajo notranji. Na voljo od HotPDF v2.39.0 naprej
- Podnaborovanje CID-keyed CFF (PDF 1.7 ISO 32000-1 9.7.4 / Adobe Tech Note #5176 §18-19): podnaborovalnik CFF zdaj prepozna operator Top DICT ROS (12-30), ki označuje font OpenType-CFF s kodiranjem CID, in pregleda FDArray (12-36) INDEX slovarjev Font DICT, od katerih vsak vsebuje svoj Private DICT + Local Subr INDEX. Preslikava FDSelect (12-37) glif-v-FD je ohranjena bajt za bajtom. Pregled zaključka podprogramov sledi kontekstu FD za vsak ohranjen CharString, tako da glif v FD #5 označi samo Local Subrs v FD #5 - globalni subroutines ostanejo deljeni med FD-ji. Local Subr INDEX vsakega FD se prepiše na mestu, neuporabljeni vnosi pa se zrušijo v 1-bajtne povratne šablone. Pisave CJK / Indic / Arabic OTF (Adobe Fan/Gothic/Heiti/Ming/Myungjo/Song Std, Kozuka Pr6N, Source Han Sans itd.) zdaj gredo skozi celoten cevovod podnaborovanja namesto da bi bile vdelane takšne, kot so. Na voljo od HotPDF v2.40.0 naprej
- Objektni tokovi (PDF 1.5 ISO 32000-1 7.5.7): nastavitev THotPDF.UseObjectStreams na true poleg UseXRefStream in SaveToStream zapakira primerne posredne objekte (vse razen tokov, šifrirnega slovarja in Catalog ter Info slovarjev, na katere kaže trailer) v enega ali več vsebniških tokov /Type /ObjStm. Tok navzkrižnih sklicev nato pakirane objekte naslavlja prek vnosov tipa 2 (field-2 = številka gostiteljskega objekta ObjStm; field-3 = indeks vnosa v toku). Pri PDF-jih z veliko majhnimi slovarji (večstranski dokumenti, opombe, gradniki AcroForm, elementi drevesa strukture, plasti Optional Content) velikost datoteke občutno zmanjša - 30-stranski preizkus samo z grafiko se skrči z 14502 na 8488 bajtov (41.5 % manj). Tiho se zniža na false, kadar je UseXRefStream izklopljen (polja tipa 2 po specifikaciji niso predstavljiva v besedilni xref tabeli) ali kadar je Version pod PDF 1.5. Na voljo od HotPDF v2.41.0 naprej
- Slika mehke maske / SMask (PDF 1.4 ISO 32000-1 8.9.5.4): THotPDF.AddImageWithSMask(Width, Height, RGB, Alpha) ustvari barvni slikovni XObject in 8-bitni slikovni XObject DeviceGray z mehko masko ter samodejno poveže navzkrižni sklic /SMask, tako da lahko vsak piksel nosi polno preglednost po posameznih kanalih namesto binarne omejitve stare poti /ImageMask. Priročna preobremenitev THotPDF.AddImageWithSMask32(Bitmap32) iz 32-bitnega BGRA TBitmap potegne ravnini RGB in alpha za enoklicno vdelavo PNG z alfa kanalom. Obe klicni mesti gresta skozi RequirePDFVersion(pdf14), tako da strogi izhod 1.3 ostane skladen. Na voljo od HotPDF v2.42.0 naprej
- Nepobarvano barvanje vzorca Tiling Pattern (PDF 1.7 ISO 32000-1 8.6.6.1): THotPDF.RegisterTilingPattern že od v2.19.0 izpisuje tako /PaintType 1 (barvni) kot /PaintType 2 (nepobarvani), vendar je bil ustrezen niz operatorjev na strani pravilen le za barvno različico. Šest novih metod THPDFPage - SetFillPatternRGB / SetStrokePatternRGB / SetFillPatternGray / SetStrokePatternGray / SetFillPatternCMYK / SetStrokePatternCMYK - zdaj vodí nepobarvano pot tako, da na strani Resources/ColorSpace samodejno registrirajo ustrezen tinting color space [/Pattern /BaseCS] in izpišejo po specifikaciji zahtevani niz tint_components /Pn scn. Za barvno različico, kjer ploščica nosi svojo barvo, uporabite izvirni SetFillPattern / SetStrokePattern. Na voljo od HotPDF v2.43.0 naprej
- 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.
- Barvni prostor Separation za spot barve (PDF 1.3+ ISO 32000-1 8.6.6.4): THotPDF.RegisterSeparation(ColorantName, AlternateCS, TintC1) razglasi enokomponentno spot črnilo, katerega en sam operand odtenka v [0..1] poganja linearno funkcijo preobrazbe odtenka Type 2, zgrajeno notranje. Vrnjenemu imenu (Sep1, Sep2, ...) sledite z običajnim cevovodom SetFillColorSpace / SetStrokeColorSpace + SetFillColor([tint]) / SetStrokeColor([tint]). AlternateCS sprejema DeviceGray, DeviceRGB ali DeviceCMYK; TintC1 poda komponente alt-CS pri tint = 1.0. Imena Pantone in druga črnila s presledki so sprejeta neposredno - HotPDF jih pri zapisu barvnega prostora pobegne v #20 po PDF 1.7 7.3.5. Na voljo od HotPDF v2.45.0 naprej
- Večvrstični in comb appearance streami za AcroForm (PDF 1.7 ISO 32000-1 12.7.4.3): kadar je THotPDF.AutoFormAppearances vklopljen, besedilna polja, katerih Flags vključujejo ffMultiline, dobijo besedo prelomljen /AP /N Form XObject (razporeditev Td + T* + /TL z upoštevanjem ločil CR / LF / CRLF in obrezovanjem pri vidnem številu vrstic). Polja, katerih Flags vključujejo ffComb skupaj s pozitivnim MaxLen, izrisujejo vsak znak v svojo enako široko celico z absolutno matriko Tm za vsak glif. Enovrstična postavitev iz v2.28.0 ostane bajt za bajtom ohranjena za polja brez takih zastavic. Mednarodni znaki v začetni vrednosti še vedno preidejo na pot ponovnega izračuna /NeedAppearances v pregledovalniku - popolno ustvarjanje appearance streamov z vdelanimi CID-pisavami ostaja prihodnje delo. Na voljo od HotPDF v2.46.0 naprej
- 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.
- Rich-text Tx gradnik AcroForm (PDF 1.5+ ISO 32000-1 12.7.4.3 + dodatek L): THPDFPage.AddRichTextField(FieldName, InitialValue, RichValue, DefaultStyle, Rectangle, [MaxLen], [Flags]) izpiše besedilni gradnik z /RV (rich-text XHTML telo), /DS (privzeti slog podoben CSS), samodejno OR-ano zastavico ffRichText /Ff bit 26 ter navadno besedilno nadomestilo /V + /DV za pregledovalnike, ki /RV ne razčlenjujejo. Acrobat in Foxit neposredno izrisujeta iz /RV, kadar je vklopljen bit RichText, pri čemer prevzemata nadomestne pisave iz pregledovalnikovih nameščenih Unicode pisav - zato se večbajtna vsebina (CJK / cirilica / arabščina / naglašen latin) prikaže pravilno brez vdelave CID pisave v /DR Resources. Tako /V kot /RV pri potrebi samodejno zaznata večbajtni vnos in preklopita na UTF-16BE hex-string kodiranje (FE FF BOM + big-endian kodne enote). Ustvarjanje appearance streamov za CID-pisave v HotPDFovi lastni poti /AP ostaja prihodnje delo; pregledovalnikom z zavedanjem o rich-textu to ni potrebno. Na voljo od HotPDF v2.55.0 naprej
- 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.
- Zasenčen trikotni mrežni vzorec v obliki mreže Lattice-form Gouraud (PDF 1.3+ ISO 32000-1 8.7.4.5.5): THotPDF.RegisterLatticeFormGouraudShading(XMin, YMin, XMax, YMax, NumComponents, VerticesPerRow, Vertices) razglasi tok /ShadingType 5, ki razporedi oglišča v M-rows x N-columns mrežo in izrisovalniku dovoli, da vsak par sosednjih vrst samodejno razgradi v trak trikotnikov. Za razliko od RegisterFreeFormGouraudShading (Type 4) ni bajta zastavice na oglišče; /BitsPerFlag ni prisoten v slovarju senčenja, vsako oglišče pa zasede le 4 + NumComponents bajte (2 big-endian X + 2 big-endian Y + N barvnih komponent). Slovar senčenja namesto tega vsebuje zahtevani vnos /VerticesPerRow N. Uporabite ga za izvorne podatke, ki so že na pravilni mreži vzorčenja (terens, rezultati FEA, znanstveni toplotni zemljevidi) - aplikacija poda oglišča po vrsticah, cevovod za izris pa samodejno sestavi topologijo trakov trikotnikov. VerticesPerRow mora biti najmanj 2, skupno število oglišč pa mora biti večkratnik VerticesPerRow in mora vsebovati vsaj dve vrstici. Na voljo od HotPDF v2.49.0 naprej
- Senčenje z mrežo zaplat Coons (PDF 1.3+ ISO 32000-1 8.7.4.5.6): THotPDF.RegisterCoonsPatchMesh(XMin, YMin, XMax, YMax, NumComponents, Patches) določi tok /ShadingType 6 z zaplatami Coons, od katerih je vsaka omejena s štirimi kubičnimi Bezierjevimi krivuljami in nosi eno barvo na vogal. Upodobljevalnik prilega površino Coons med štiri robove, zato dobi poljuben barvni štirikotnik z ukrivljenimi robovi - uporabno za folijske in kovinske prelaze na ukrivljenih poteh, mreže prelivov, povzete iz SVG, in vsak štirikotnik z ukrivljenimi robovi, ki bi sicer potreboval veliko majhnih trikotnikov za približek. Vsaka zaplata prispeva 12 kontrolnih točk (24 Extended vrednosti X+Y, urejenih c1..c12 v smeri urinega kazalca okoli meje, pri čemer so c1 / c4 / c7 / c10 v štirih vogalih, preostalih 8 pa notranji Bezierjevi ročaji), nato pa še 4 barve vogalov (4 * NumComponents Extended vrednosti), zato je korak Patches 24 + 4 * NumComponents. Slovar senčenja nosi enake /BitsPerCoordinate 16 + /BitsPerComponent 8 + /BitsPerFlag 8 kot Type 4 (in za razliko od Type 5 /VerticesPerRow manjka). Vsaka izpisana zaplata nosi flag = 0 (neodvisna zaplata); nadaljevalne zastavice 1 / 2 / 3 (deljenje roba) v tem priročnem preobremenjenem vmesniku niso na voljo. Na voljo 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.
- Senčenje mrežnega popravka tensor product (PDF 1.3+ ISO 32000-1 8.7.4.5.7): THotPDF.RegisterTensorProductPatchMesh(XMin, YMin, XMax, YMax, NumComponents, Patches) razglasi tok /ShadingType 7 tensor-product popravkov, pri katerih je vsak definiran s polno mrežo 4 x 4 bicubičnih Bezierjevih kontrolnih točk p[i][j] ter eno barvo na vogal. Razširja RegisterCoonsPatchMesh (Type 6) tako, da nad 12 robnih točk doda 4 izrecne notranje kontrolne točke (p[1][1], p[1][2], p[2][2], p[2][1]), s čimer daje natančnejši nadzor nad notranjostjo popravka, kot ga lahko izrazi Coonsova prilagojena prilepitev. Uporabno za povratne prenose gradientnih mrež SVG in za katero koli umetnino, ki potrebuje tensor-product Bezierjevo površino. Vsak popravek prispeva 16 kontrolnih točk (32 razširjenih vrednosti X+Y, urejenih po vrstnem redu iz tabele 88 v specifikaciji: p[0][0..3], p[1][3], p[2][3], p[3][3], p[3][2..0], p[2][0], p[1][0], nato 4 notranje točke p[1][1], p[1][2], p[2][2], p[2][1]), nato še 4 barve vogalov (4 * NumComponents razširjene vrednosti pri p[0][0] / p[0][3] / p[3][3] / p[3][0]), zato je korak Patches 32 + 4 * NumComponents. Vsak izpisan popravek nosi flag = 0 (neodvisni popravek). S to izdajo je zdaj pokrita celotna družina senčenja mrež ISO 32000-1 8.7.4.5 (Types 4 / 5 / 6 / 7). Na voljo od HotPDF v2.51.0 naprej
- 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
- Varnostni upravljalnik javnega ključa (PDF 1.7 7.6.5): THotPDF.EnablePubKeyEncryption(seed, KeyType, EncryptMetadata) + THotPDF.AddPubKeyRecipient(envelope) izpišeta slovar šifriranja /Filter /Adobe.PubSec (/SubFilter /adbe.pkcs7.s4 za V=1 RC4-40 / /adbe.pkcs7.s5 za V=2 RC4-128 / V=4 AESV2). Klicatelj zagotovi 20-bajtno naključno seme in en binarni blob envelopedData PKCS#7 na prejemnika (zgrajen zunaj z Windows CryptoAPI, OpenSSL ali pycryptodome). HotPDF izvede ključ šifriranja datoteke prek algoritma 9 (SHA-1 semena, združenega z vsakim ovojem) in znova uporabi standardno izpeljavo ključa po objektih za tokove AES-128 / RC4. Na voljo od HotPDF v2.33.0 naprej
Glejte tudi
|