|
Supporto dei filtri PDF
Panoramica
Gli stream PDF e le immagini incorporate identificano la loro codifica attraverso nomi di filtro. HotPDF lavora principalmente con le seguenti famiglie di filtri quando genera documenti o decodifica contenuti esterni.
Filtri comuni
- FlateDecode: Filtro di compressione principale per gli stream generati e percorso primario di decompressione basato su zlib
- LZWDecode: Supportato per scenari legacy e di compatibilità tramite HPDFLZW.pas
- DCTDecode: Usato per i dati immagine JPEG standard gestiti dai percorsi di caricamento immagini HotPDF
- CCITTFaxDecode: Gli stream di immagini monocromatiche Group 3 e Group 4 caricati supportano righe monodimensionali e bidimensionali, estensioni non compresse T.4/T.6, gestione EOFB, allineamento a byte, polarità di output e recupero limitato delle righe danneggiate attraverso le voci DecodeParms standard
- ASCIIHexDecode / ASCII85Decode / RunLengthDecode: Encoder helpers exposed in HPDFTypes.pas (
_ASCIIHexEncode, _ASCII85Encode, _RunLengthEncode) dalla HotPDF v2.4.0. Utile quando si incapsula contenuto binario arbitrario per canali a 7 bit o per il supporto esplicito di round-trip PDF 1.7 7.4
- JBIG2Decode / JPXDecode: Nomi di filtro definiti da PDF 1.7 7.4.7 / 7.4.9. HotPDF instrada gli stream immagine JPXDecode e i file JPEG 2000 attraverso il decodificatore JPEG2000 basato su OpenJPEG, poi incorpora il risultato con la compressione selezionata dal chiamante. L'output JBIG2 bilevel e i percorsi immagine JBIG2Decode caricati usano la pipeline nativa di encoder e decoder JBIG2, inclusi i controlli di filtro symbol-dictionary, global-segment, lossy-level e black-dot
Note pratiche
- Non ogni filtro è esposto attraverso una singola API generica; alcuni si raggiungono attraverso unità helper dedicate per immagini o stream
- For generated PDF content, THotPDF.Compression resta l'impostazione centrale visibile all'utente
- Quando si caricano dati esterni, il filtro applicabile dipende dal formato del file sorgente e dalla classe helper in uso
- I PDF cifrati combinano questi filtri col security handler; vedi CryptKeyLength for the supported AES‑128 (V=4 R=4 / CFM=AESV2) and RC4 (V=1/V=2) options
- Le policy dei crypt filter riservate possono essere selezionate indipendentemente per stringhe, stream normali e stream di file incorporati attraverso
ConfigureCryptFilterDefaults. La sicurezza a password accetta StdCF oppure Identity, mentre la sicurezza a chiave pubblica accetta DefaultCryptFilter oppure Identity. SetStreamCryptFilter aggiunge o rimuove un esplicito Crypt filtro senza disturbare una pipeline di decodifica esistente. Gli override per stream richiedono il dizionario di cifratura /V 4 o successiva
- Wrapper di payload cifrati mantengono gli stream di pagina ordinari visibili proteggendo metadati e byte dei file incorporati attraverso un
EFOpen crypt filter, con API esplicite di ispezione e sblocco del documento caricato disponibili dalla HotPDF v2.715.0
- Gli stream di allegati protetti da password usano
/EFF e ricevi un esplicito Crypt filtro ogni volta che /EFF differisce da /StmF. I filtri di stream espliciti cifrati a chiave pubblica falliscono in modo chiuso perché richiedono una busta destinatari specifica dello stream
- I documenti caricati espongono l'originale
/CF, /StrF, /StmF e /EFF policy, inclusi filtri nominati esterni case-sensitive, espliciti o omessi /CFM /None, eventi di autenticazione, ed effettiva lunghezza chiave tramite THPDFCryptFilterInfo. Le lunghezze dei filtri V2 degli handler standard vengono lette come byte, le lunghezze dei filtri V2 a chiave pubblica come bit, e solo le chiavi V2 a 40 bit e 128 bit sono accettate. I contenitori object-stream in chiaro decifrano comunque le stringhe dei membri compressi attraverso /StrF, mentre i contenitori cifrati evitano una seconda decifratura del membro. Gli aggiornamenti incrementali conservano la policy caricata. Disponibile dalla HotPDF v2.675.0
- Interactive form fields are emitted as Widget annotations that the viewer paints; see Supporto AcroForm
- 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 dalla HotPDF v2.6.0
- L'output DeviceCMYK è disponibile tramite
THPDFPage.SetCMYKColor / SetCMYKFillColor / SetCMYKStrokeColor; ICC-managed color spaces are registered with THotPDF.RegisterICCProfile e applicato tramite SetFillColorSpace / SetStrokeColorSpace + SetFillColor / SetStrokeColor dalla HotPDF v2.7.0
- Imposta
THotPDF.UseXRefStream to true prima del salvataggio per emettere un singolo /Type /XRef stream di riferimenti incrociato compresso FlateDecode invece della tabella testuale xref / trailer / startxref sequence (PDF 1.7 7.5.8); available since HotPDF v2.8.0
- Imposta
THotPDF.EnableXMPMetadata to true to attach an XMP /Type /Metadata /Subtype /XML stream to the Catalog (PDF 1.7 14.3.2); auto-built from the Info dict fields, or supply a hand-authored packet via CustomXMP. Disponibile dalla HotPDF v2.9.0
- Gating della versione PDF per metodo (dalla HotPDF v2.24.0). Ogni metodo di funzionalità introdotto nella v2.4.0+ consulta
RequirePDFVersion before emitting; with StrictVersionLock=false (the default) the document Version viene automaticamente alzato silenziosamente al minimo richiesto dalla funzionalità, e con StrictVersionLock=true la chiamata viene rifiutata così il file salvato si conforma rigorosamente alla spec di riferimento 1.3 / 1.4 / 1.5 / 1.6 / 1.7 scelta.
- PNG and TIFF predictor encoders for FlateDecode-compressed image data (PDF 1.7 7.4.4.4):
_PNGPredictorEncode applies the libpng minimum-absolute-difference filter heuristic (Predictor=15), _TIFFPredictor2Encode applies horizontal differencing (Predictor=2). Available since HotPDF v2.10.0
- Tagged PDF entry points (PDF 1.7 14.7-14.8):
THotPDF.Lang populates /Lang nel Catalog, EnableTaggedPDF emette /MarkInfo <</Marked true>> e uno stub /StructTreeRoot, e il nuovo THPDFPage.BeginMarkedContent / BeginMarkedContentMCID / EndMarkedContent scrivono gli operatori di content stream BMC / BDC / EMC. Disponibile dalla 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; Function Type 3 multi-stop gradients are exposed through RegisterMultiStopAxialGradient dalla v2.18.0 e RegisterMultiStopRadialGradient dalla v2.686.0
- Inline images (PDF 1.7 8.9.7) via
THPDFPage.DrawInlineImage; raw bytes are auto-wrapped with ASCIIHex when no Filter is supplied so the content stream stays 7-bit-clean. Available since HotPDF v2.18.0
- OutputIntents (PDF 1.7 14.11) via
THotPDF.AddOutputIntent; each call appends a /Type /OutputIntent nel Catalog con opzionali /DestOutputProfile che referenzia un profilo ICC registrato. Disponibile dalla HotPDF v2.18.0
- AcroForm appearance-stream auto-generation (PDF 1.7 12.5.5 / 12.7.3.3 / 8.10): set
THotPDF.AutoFormAppearances to true prima di aggiungere i campi formulario interattivi e HotPDF pre-costruirà un /Subtype /Form Form XObject per il /AP /N entry (Yes / Off sub-dicts for buttons), populate the AcroForm /DR risorse predefinite con dizionari font indiretti Helvetica / ZapfDingbats, e commutano /NeedAppearances to false così i renderer onorano gli stream incorporati. Disponibile dalla HotPDF v2.28.0
- ViewerPreferences /ViewArea and /ViewClip (PDF 1.4 12.2 Table 152) are now exposed through
THotPDF.ViewArea / THotPDF.ViewClip properties (with the matching vpViewArea / vpViewClip set members). Both accept the THPDFPageBoundary values (MediaBox / CropBox / BleedBox / TrimBox / ArtBox) and complete HotPDF's coverage of the four PDF 1.4 page-boundary ViewerPreferences. Available since HotPDF v2.29.0
- Page transitions (PDF 1.1 / 1.5 12.4.4):
THPDFPage.SetPageTransition scrive una /Trans sulla pagina così i reader PDF in /PageMode /FullScreen animate navigation. PDF 1.1 styles (Split, Blinds, Box, Wipe, Dissolve, Glitter, R) and PDF 1.5 styles (Fly, Push, Cover, Uncover, Fade) are exposed through the THPDFTransitionStyle enumeration; companion /Dm, /M e /Di sono esposte anche le sotto-opzioni. THPDFPage.SetPageDuration scrive il /Dur ritardo di auto-avanzamento in secondi. Disponibile dalla HotPDF v2.30.0
- Page-level transparency group (PDF 1.4 11.6.6 / 7.5.5):
THPDFPage.SetTransparencyGroup collega un /Group dictionary (/Type /Group /S /Transparency) così i renderer compongono in modo prevedibile il contenuto con alpha. Scegli uno spazio di colore device attraverso il THPDFGroupColorSpace enumeration (DeviceGray / DeviceRGB / DeviceCMYK or omit), or call THPDFPage.SetTransparencyGroupICC with the name of an ICC profile previously registered through THotPDF.RegisterICCProfile. Facoltativo /I (Isolated) and /K (Knockout) flags steer the compositor; THPDFPage.ClearTransparencyGroup rimuove una voce collegata in precedenza. Disponibile dalla HotPDF v2.32.0
- Incremental update (PDF 1.7 ISO 32000-1 7.5.6):
THotPDF.BeginIncrementalUpdate(SourceFile) loads an existing PDF in append-only mode; subsequent CreateIndirect* marcano automaticamente i nuovi oggetti come dirty, e THotPDF.MarkDirty(Obj) marca gli oggetti caricati preesistenti per la riemissione. THotPDF.SaveIncrementalUpdate(TargetFile) scrive i byte sorgente originali alla lettera, aggiunge solo gli oggetti dirty con i loro numeri di oggetto preservati, emette una nuova sottosezione xref e termina con un trailer che porta /Prev che punta alla xref precedente. Combina con l'esistente AddSignedSignatureField + PreparePDFForSigning + InsertSignatureHex pipeline per aggiungere campi firma successivi a un documento già firmato senza invalidare le firme precedenti (i loro /ByteRange restano validi perché nessun byte originale subisce mutazioni). Disponibile dalla HotPDF v2.35.0
- Normalizzazione dei nomi dei font TrueType incorporati: HotPDF legge la tabella name del TrueType incorporato e allinea
/BaseFont, /FontDescriptor /FontName, /FontFamily, e i nomi dei font CID discendenti con il nome PostScript del programma font. Questo evita i fallimenti di Adobe Acrobat Font Capture causati da una discrepanza tra il dizionario font del PDF e il payload TTF incorporato. Disponibile dalla HotPDF v2.35.1
- TrueType font subsetting (PDF 1.7 ISO 32000-1 9.6.4 / 9.8.2): set
THotPDF.EnableFontSubsetting to true prima di BeginDoc e HotPDF ricostruisce il payload TrueType incorporato per contenere solo i glifi effettivamente usati dal documento. I tipici documenti latini vedono circa il 90% di riduzione del peso del font incorporato (Arial da 1 MB -> ~70 KB su un "Hello, world." di una riga). Le dipendenze dei glifi compositi vengono tracciate ricorsivamente, la numerazione dei GID è preservata (così i content stream Type0 / Identity-H esistenti continuano a funzionare), e il nuovo /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, preservando la numerazione dei GID byte per byte. Disponibile dalla HotPDF v2.37.0.
- percorso di incorporamento OpenType-CFF (.otf) cablato in
StoreFont (PDF 1.6+ 9.7.4 Table 117). When the GDI-loaded font binary is an sfnt OTTO , HotPDF fa il subset del font incorporato 'CFF ' sotto-tabella tramite HPDFSubsetOTFContainer, emette il programma font tramite /FontFile3 /Subtype /OpenType e scrive il dizionario del font discendente con /Subtype /CIDFontType0 invece di /CIDFontType2. I font TrueType continuano attraverso il /FontFile2 + /CIDFontType2 senza cambiamenti di comportamento. Disponibile dalla HotPDF v2.38.0.
- subsetting delle subroutine CFF end-to-end (PDF 1.7 9.7.4 §6 / Adobe Tech Note #5177 §3.1): il subsetter CFF ora rimuove le voci inutilizzate sia dal Global Subr INDEX (posizionato immediatamente dopo lo String INDEX nel binario CFF) sia dal Local Subr INDEX (annidato sotto il Private DICT, raggiunto tramite l'operatore 18 del Top DICT + l'operatore 19 del Private DICT). Una singola chiusura a punto fisso segue
callsubr (op 0x0A) AND callgsubr (op 0x1D) chains transitively, so a CharString that calls a Local Subr that calls a Global Subr that calls another Local Subr is picked up in one iteration. Each unused entry is replaced by a 1-byte return stub e l'INDEX viene riscritto in place con lo slack finale riempito di zeri. Questo comportamento è esposto attraverso la HPDFSubsetCFF e HPDFSubsetOTFContainer helpers; lower-level CFF scanners remain internal. Available since HotPDF v2.39.0.
- CID-keyed CFF subsetting (PDF 1.7 ISO 32000-1 9.7.4 / Adobe Tech Note #5176 §18-19): the CFF subsetter now recognizes the Top DICT
ROS operator (12-30) that marks a CID-keyed OpenType-CFF font and walks the FDArray (12-36) INDEX of Font DICTs, each carrying its own Private DICT + Local Subr INDEX. The FDSelect (12-37) viene preservato byte per byte. La scansione di chiusura delle subroutine traccia il contesto FD di ogni CharString conservata così un glifo nell'FD #5 marca i Local Subr solo nell'FD #5 - i subr globali restano condivisi tra gli FD. Il Local Subr INDEX di ogni FD viene riscritto in place con le voci inutilizzate collassate a return stub. I font OTF CJK / Indic / arabi (Adobe Fan/Gothic/Heiti/Ming/Myungjo/Song Std, Kozuka Pr6N, Source Han Sans, ecc.) ora passano attraverso l'intera pipeline di subsetting invece di essere incorporati così come sono. Disponibile dalla HotPDF v2.40.0.
- Object Streams (PDF 1.5 ISO 32000-1 7.5.7): set
THotPDF.UseObjectStreams to true in aggiunta a UseXRefStream e SaveToStream comprime gli oggetti indiretti idonei (tutto tranne gli stream, il dizionario di cifratura e i dizionari Catalog e Info puntati dal trailer) in uno o più /Type /ObjStm stream di contenitore. Lo stream di riferimenti incrociati referenzia poi gli oggetti compressi attraverso voci di tipo 2 (campo-2 = numero di oggetto dell'ObjStm ospite; campo-3 = indice della voce dentro lo stream). Riduce sostanzialmente la dimensione del file sui PDF con molti piccoli dizionari (documenti multi-pagina, annotazioni, widget AcroForm, elementi dell'albero di struttura, livelli Optional Content) - un smoke di 30 pagine solo grafica si restringe da 14502 a 8488 byte (41,5% in meno). Effettua un downgrade silenzioso a false when UseXRefStream is off (type-2 entries are not representable in the textual xref table per spec) or when Version è precedente al PDF 1.5. Disponibile dalla HotPDF v2.41.0.
- Soft-mask image / SMask (PDF 1.4 ISO 32000-1 8.9.5.4):
THotPDF.AddImageWithSMask(Width, Height, RGB, Alpha) emette un image XObject a colori più un image XObject soft-mask DeviceGray a 8 bit e collega il /SMask riferimenti incrociati automaticamente, così ogni pixel può portare trasparenza completa per canale invece del limite binario on/off del /ImageMask . L'overload di comodo THotPDF.AddImageWithSMask32(Bitmap32) estrae i piani RGB e alfa da un TBitmap for one-call PNG-with-alpha embedding. AddImageWithTransparency e AddImageWithTransparency32 espongono lo stesso flusso di lavoro con nomenclatura centrata sulle immagini. Entrambi i siti di chiamata passano attraverso RequirePDFVersion(pdf14) così l'output 1.3 in modalità strict resta conforme. Disponibile dalla HotPDF v2.42.0
- Helper di comodo per le image mask:
AddImageAsMask emette un binario /ImageMask, AddImageWithMask collega la maschera risultante a un'immagine a colori tramite /Mask, ed entrambi restituiscono indici immagine normali per THPDFPage.ShowImage
- Controlli di compressione per immagine:
AddImageWithJpegQuality applica la qualità JPEG in una chiamata senza cambiare JpegQuality, mentre AddMonochromeImageAuto e icAutoMono scegli Flate, CCITT Group 4 o JBIG2 per input bitmap a 1 bit
- Uncolored Tiling Pattern painting (PDF 1.7 ISO 32000-1 8.6.6.1):
THotPDF.RegisterTilingPattern ha emesso sia /PaintType 1 (colored) and /PaintType 2 (uncolored) since v2.19.0, but the matching page-side operator sequence was only correct for the colored variant. Six new THPDFPage metodi - SetFillPatternRGB / SetStrokePatternRGB / SetFillPatternGray / SetStrokePatternGray / SetFillPatternCMYK / SetStrokePatternCMYK - ora pilotano il percorso non colorato registrando automaticamente il [/Pattern /BaseCS] spazio colore di tinting sulla pagina Resources/ColorSpace ed emettendo il tint_components /Pn scn . Usa l'originale SetFillPattern / SetStrokePattern for the colored variant where the tile carries its own color. Available since HotPDF v2.43.0.
- Il rendering completo dei pattern di tiling ora applica la matrice del pattern rispetto al sistema di coordinate predefinito dello stream di contenuto padre, implementa tutti e tre i
/TilingType regole di posizionamento, supporta negativi /XStep e /YStep, inizia ogni cella con un percorso isolato, applica la tinta base di un pattern non colorato sia alle operazioni di fill che di stroke, e trattiene l'esecuzione limitata dei pattern annidati. Il RegisterTilingPattern overload e THPDFTilingPatternBuilder.TilingType / Matrix espongono gli stessi controlli validati per i PDF generati. Disponibile dalla HotPDF v2.542.0
- CIELab color space (PDF 1.3+ ISO 32000-1 8.6.5.3):
THotPDF.RegisterLabColorSpace(Xw, Yw, Zw, aMin, aMax, bMin, bMax) costruisce un [/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. Inserisci un illuminante D50 [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 for spot colors (PDF 1.3+ ISO 32000-1 8.6.6.4):
THotPDF.RegisterSeparation(ColorantName, AlternateCS, TintC1) dichiara un inchiostro spot a una componente il cui singolo operando tint in [0..1] pilota una trasformazione tint lineare Function Type 2 costruita internamente. Usa il nome restituito (Sep1, Sep2, ...) with the regular SetFillColorSpace / SetStrokeColorSpace + SetFillColor([tint]) / SetStrokeColor([tint]) pipeline. AlternateCS accetta DeviceGray, DeviceRGB oppure DeviceCMYK; TintC1 supplies the alt-CS components at tint = 1.0. Pantone and other ink names with spaces are accepted directly - HotPDF escapes them to #20 secondo PDF 1.7 7.3.5 quando si scrive il nome dello spazio di colore. Disponibile dalla HotPDF v2.45.0.
- Appearance stream del testo AcroForm multi-linea e comb (PDF 1.7 ISO 32000-1 12.7.4.3): quando
THotPDF.AutoFormAppearances è attivo, i campi testo il cui Flags include ffMultiline ottenere un /AP /N Form XObject (Td + T* + /TL leading layout, honoring CR / LF / CRLF separators and truncating at the visible row count). Fields whose Flags include ffComb insieme a un positivo MaxLen renderizza ogni carattere nella sua cellula di uguale larghezza usando un Tm per glifo. Il layout a riga singola della v2.28.0 è preservato byte per byte per i campi senza tali flag. I caratteri internazionali nel valore iniziale passano comunque al /NeedAppearances percorsi di ricalcolo - la generazione completa delle appearance per font CID incorporati resta lavoro futuro. Disponibile dalla 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 di risorse predefinite. Una volta registrato, il livello AcroForm /DA, di ogni widget Tx /DA, e il /AP /N stream prodotto da AutoFormAppearances for non-ASCII Tx initial values all switch to the logical name; the Form XObject's /Resources/Font fa riferimento anche allo stesso font indiretto così l'AP è autosufficiente senza dipendere dal /DR al momento del rendering. L'helper companion THotPDF.CreateIndirectFontDict restituisce un nuovo 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 e nil FontDict to revert to the v2.46.0 ASCII-only /Helv comportamento. I campi Tx ASCII continuano a usare /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 con Td / T* / /TL leading and CJK-aware word-wrap) since v2.57.0; ffComb non-ASCII /AP support (per-CID equal-width absolute Tm cellule + a cellula singola 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]) emette un widget di testo con /RV (rich-text XHTML body), /DS (CSS-like default style), the ffRichText /Ff con il flag bit 26 OR-ato automaticamente, più il /V + /DV fallback usato dai reader che non analizzano /RV. Acrobat e Foxit renderizzano direttamente da /RV when the RichText bit is on, picking up font fallbacks from the reader's installed Unicode fonts - so multi-byte content (CJK / Cyrillic / Arabic / accented Latin) displays correctly without HotPDF embedding a CID font in /DR risorse. Entrambi /V e /RV auto-detect multi-byte input and switch to UTF-16BE hex-string encoding (FE FF BOM + big-endian code units) when needed. CID-font appearance-stream generation for HotPDF's own /AP resta lavoro futuro; i viewer consapevoli del rich text non ne hanno bisogno. Disponibile dalla 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 accetta DeviceGray, DeviceRGB oppure DeviceCMYK; ink names with spaces are escaped to #20 per PDF 1.7 7.3.5; the special name None marca uno slot di colorante inutilizzato. Disponibile dalla 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) dichiara un /ShadingType 4 stream con /BitsPerCoordinate 16 + /BitsPerComponent 8 + /BitsPerFlag 8, lo avvolge in una voce Pattern Type 2 inline sulla pagina 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 componenti colore a 8 bit. L'argomento NumComponents argument accepts 1 (DeviceGray), 3 (DeviceRGB) or 4 (DeviceCMYK); each vertex contributes 2 + NumComponents valori estesi in Vertices in (X, Y, c1...cN) order; vertex count must be a multiple of 3. /Decode riporta le coordinate a 16 bit a [XMin, XMax] x [YMin, YMax] e le componenti di colore a [0, 1]. I mesh shading Type 5 (lattice), Type 6 (Coons patch) e Type 7 (tensor product) restano lavoro futuro. Disponibile dalla 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) dichiara un /ShadingType 5 stream che dispone i vertici in un reticolo di M righe x N colonne e lascia che il renderer auto-triangoli ogni coppia di righe adiacenti in un triangle strip. A differenza del RegisterFreeFormGouraudShading (Type 4), there is no per-vertex flag byte; /BitsPerFlag è assente dal dizionario di shading e ogni vertice occupa solo 4 + NumComponents byte (2 X big-endian + 2 Y big-endian + N componenti di colore). Il dizionario di shading porta invece il richiesto /VerticesPerRow N della voce. Usalo per dati sorgente che sono già su una griglia di campionamento regolare (terreno, risultati FEA, heatmap scientifiche) - l'applicazione fornisce i vertici row-major e la pipeline di rendering assembla automaticamente la topologia a triangle strip. VerticesPerRow deve essere almeno 2 e il totale dei vertici deve essere un multiplo di VerticesPerRow with at least two rows. Available since HotPDF v2.49.0.
- Shading a mesh di patch Coons (PDF 1.3+ ISO 32000-1 8.7.4.5.6):
THotPDF.RegisterCoonsPatchMesh(XMin, YMin, XMax, YMax, NumComponents, Patches) dichiara un /ShadingType 6 stream di Coons patch, ognuna delimitata da quattro curve Bezier cubiche e con un colore per angolo. Il renderer adatta la superficie di Coons tra i quattro bordi, ottenendo un quadrilatero portatore di colore con curvatura arbitraria - utile per gradienti a lamina e metallici su percorsi curvi, mesh di gradiente derivate da SVG e qualsiasi quadrilatero con bordi curvi che altrimenti richiederebbe molti piccoli triangoli per essere approssimato. Ogni patch contribuisce con 12 punti di controllo (24 valori Extended X+Y, ordinati c1..c12 in senso orario attorno al bordo con c1 / c4 / c7 / c10 ai quattro angoli e gli altri 8 come handle Bezier interni) seguiti da 4 colori d'angolo (4 * NumComponents valori Extended), così la Patches lo stride è 24 + 4 * NumComponents. Il dizionario di shading riporta lo stesso /BitsPerCoordinate 16 + /BitsPerComponent 8 + /BitsPerFlag 8 as Type 4 (and unlike Type 5, /VerticesPerRow è assente). Ogni patch emessa porta flag = 0 (patch indipendente); i flag di continuazione 1 / 2 / 3 (condivisione dei bordi) non sono esposti in questo overload di comodo. Disponibile dalla HotPDF v2.50.0.
- Spazio di colore Separation con trasformazione tint LUT campionata (PDF 1.3+ ISO 32000-1 8.6.6.4 + 7.10.2):
THotPDF.RegisterSeparationLUT(ColorantName, AlternateCS, Samples) wraps RegisterSampledFunction così i chiamanti possono esprimere un'intera curva tint -> CS alternativo non lineare come stream piatto di byte di campioni a 8 bit (M-upla) senza costruire manualmente un dizionario Function Type 0. Usa la variante LUT quando la transizione di colore è non lineare - rampe di tint in stile PANTONE Hexachrome, curve di densità con correzione gamma, curve tonali disegnate a mano che corrispondono a una caratterizzazione di stampa, LUT ICC di conversione sRGB-to-spot senza la completa macchinarietà del profilo ICC; la v2.45.0 RegisterSeparation copre comunque il caso lineare a endpoint singolo. AlternateCS accetta DeviceGray, DeviceRGB oppure DeviceCMYK; Samples deve essere un multiplo positivo di M with at least 2 * M byte così la funzione ha un intervallo interpolabile, e il numero di punti della griglia S viene inferito da Length(Samples) / M. L'interpolazione lineare è il predefinito secondo PDF 1.7 /Order 1. Returns the registered color-space name (Sep1, Sep2, ...) for use with the regular SetFillColorSpace + SetFillColor([tint]) Disponibile dalla 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]) dichiara un /FunctionType 0 stream che esprime un mapping arbitrario input-output come una griglia regolare N-dimensionale di campioni di output M-dimensionali, interpolati tra i punti della griglia. Usalo dove i macchinari del profilo ICC sono eccessivi ma si desidera una LUT di colore tarata a mano - curve tonali per /TransferFunction (ExtGState /TR), sampled tint transforms for /Separation / /DeviceN oltre i percorsi lineari Type 2 / aritmetici Type 4, curve di soglia halftone o qualsiasi altro costrutto PDF che accetti un dizionario Function. 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 è lo stream grezzo di campioni bit-packed (MSB-first dentro ogni campione, nessun padding tra i campioni oltre il zero-fill dell'ultimo byte, con l'input 0 che varia più velocemente secondo le regole di ordine dei campioni della spec); 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). Restituisce l'oggetto THPDFStreamObject so callers can attach it wherever a Function dictionary is expected. Available since HotPDF v2.52.0; cubic /Order 3 + copertura multi-input / multi-output end-to-end dalla v2.54.0.
- Shading a mesh di patch a prodotto tensore (PDF 1.3+ ISO 32000-1 8.7.4.5.7):
THotPDF.RegisterTensorProductPatchMesh(XMin, YMin, XMax, YMax, NumComponents, Patches) dichiara un /ShadingType 7 stream di patch tensor-product, ognuna definita da una griglia completa 4 x 4 di punti di controllo Bezier bicubici p[i][j] più un colore per angolo. Estende RegisterCoonsPatchMesh (Type 6) aggiungendo 4 punti di controllo interni espliciti (p[1][1], p[1][2], p[2][2], p[2][1]) ai 12 punti di bordo, dando un controllo più fine dell'interno della patch di quanto l'adattamento con fusione Coons possa esprimere. Utile per round-trip di mesh-gradient SVG e per qualsiasi grafica che richieda una superficie Bezier tensor-product. Ogni patch contribuisce con 16 punti di controllo (32 valori Extended X+Y, ordinati secondo l'ordine dello stream della Tabella 88 della spec: p[0][0..3], p[1][3], p[2][3], p[3][3], p[3][2..0], p[2][0], p[1][0], poi i 4 punti interni p[1][1], p[1][2], p[2][2], p[2][1]) followed by 4 corner colors (4 * NumComponents Extended values at p[0][0] / p[0][3] / p[3][3] / p[3][0]), so the Patches lo stride è 32 + 4 * NumComponents. Ogni patch emessa porta flag = 0 (patch indipendente). Con questo rilascio, l'intera famiglia di mesh shading ISO 32000-1 8.7.4.5 (Type 4 / 5 / 6 / 7) è ora coperta. Disponibile dalla 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) collega un /BS dizionario con lo stile THPDFAnnotBorderStyle (absSolid / absDashed / absBeveled / absInset / absUnderline). THPDFPage.AddPopupAnnotationFor(ParentAnnot, Rect, Open) emette un /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 (ISO 32000-1 7.6.4, ISO 32000-2 7.6.5):
THotPDF.EnablePubKeyEncryption(seed, KeyType, EncryptMetadata) + THotPDF.AddPubKeyRecipient(envelope) emette un /Filter /Adobe.PubSec encrypt dictionary (/SubFilter /adbe.pkcs7.s4 for V=1 RC4-40 / /adbe.pkcs7.s5 for V=2 RC4-128 / V=4 AESV2). Caller supplies the 20-byte random seed and one PKCS#7 envelopedData binary blob per recipient (built externally with Windows CryptoAPI, OpenSSL, or pycryptodome). HotPDF derives the file encryption key as described in ISO 32000-1 7.6.4.3 (SHA-1 of seed concatenated with each envelope) and reuses the standard per-object key derivation for AES-128 / RC4 streams. Available since HotPDF v2.33.0
- Il rendering delle pagine caricate decodifica gli Shading Type da 4 a 7 con tutte le larghezze in bit standard di coordinate, componenti e flag, record allineati a byte, flag di continuazione dei triangoli Type 4 e delle patch Type 6 / 7, array Function opzionali, conversione ColorSpace dichiarata, gestione di BBox e Background, culling del clip, fill Gouraud in batch e tassellazione adattiva limitata Coons e tensor-product. Disponibile dalla HotPDF v2.488.0
Vedi anche:
|