|
Stöd för PDF-filter
Översikt
PDF-strömmar och inbäddade bilder anger sin kodning med filternamn. När HotPDF
genererar dokument eller avkodar externt innehåll arbetar det främst med följande
filterfamiljer.
Vanliga filter
- FlateDecode: Huvudfilter för komprimering av genererade strömmar och den primära zlib-baserade dekomprimeringsvägen
- LZWDecode: Stöds för äldre scenarier och kompatibilitet via HPDFLZW.pas
- DCTDecode: Används för standarddata i JPEG-bilder som hanteras av HotPDF:s bildinläsningsvägar
- CCITTFaxDecode: Vanligt i monokroma TIFF-data och bilddata av faxtyp
- ASCIIHexDecode / ASCII85Decode / RunLengthDecode: Kodningshjälpare som exponeras i HPDFTypes.pas (
_ASCIIHexEncode, _ASCII85Encode, _RunLengthEncode) sedan HotPDF v2.4.0. Användbara när godtyckligt binärt innehåll ska kapslas för 7-bitars kanaler eller för explicit PDF 1.7 7.4 tur-och-retur-stöd
- JBIG2Decode / JPXDecode: Filternamn definierade av PDF 1.7 7.4.7 / 7.4.9. HotPDF:s medföljande JBIG2- och JPEG 2000-hjälpare är stubbar som rapporterar att stöd saknas (returnerar ) tills en riktig OpenJPEG / JBIG2-backend länkas in. Tidigare byggen returnerade en falsk 100×100-framgång som gav oläsliga bilder; detta är nu rättat
Praktiska anmärkningar
- Alla filter exponeras inte via ett enda generiskt API; vissa nås via särskilda hjälpenheter för bilder eller strömmar
- För genererat PDF-innehåll är THotPDF.Compression fortfarande den centrala användarvända inställningen
- När externa data läses in beror filtret som används på källfilens format och den hjälparklass som används
- Krypterade PDF-filer kombinerar dessa filter med säkerhetshanteraren; se CryptKeyLength för de stödda alternativen AES‑128 (V=4 R=4 / CFM=AESV2) och RC4 (V=1/V=2)
- Reserverade crypt-filter-policys kan väljas oberoende för strängar, normala strömmar och inbäddade filströmmar via
ConfigureCryptFilterDefaults. Lösenordssäkerheten accepterar StdCF eller Identity, medan säkerheten för publik nyckel accepterar DefaultCryptFilter eller Identity. SetStreamCryptFilter lägger till eller rensar en explicit inledande Crypt -filter utan att störa en befintlig avkodningspipeline. Överskrivningar per ström kräver krypteringsordlistans /V 4 eller senare
- Encrypted payload wrappers håller vanliga sidströmmar synliga samtidigt som metadata och byte för inbäddade filer skyddas via en
EFOpen -cryptfilter, med explicita API:er för granskning och upplåsning av laddade dokument tillgängliga sedan HotPDF v2.715.0
- Lösenordsskyddade bilageströmmar använder
/EFF och får en explicit Crypt -filter närhelst /EFF skiljer sig från /StmF. Explicita strömfilter krypterade med publik nyckel misslyckas slutet eftersom de kräver ett strömspecifikt mottagarkuvert
- Laddade dokument exponerar den ursprungliga
/CF, /StrF, /StmF och /EFF -policyn, inklusive skiftlägeskänsliga externa namngivna filter, explicita eller utelämnade /CFM /None, autentiseringshändelser och effektiv nyckellängd via THPDFCryptFilterInfo. V2-filterlängder för standardhanteraren läss som byte, V2-filterlängder för publik nyckel läss som bitar, och endast 40-bitars- och 128-bitars V2-nycklar godtas. Klartext-behållare för objektströmmar dekrypterar fortfarande packade medlemssträngar via /StrF
- Interaktiva formulärfält emitteras som Widget-anteckningar som visaren målar; se AcroForm-stöd
- Textmarkeringsanteckningar (Highlight, Underline, Squiggly, StrikeOut) och interna hopplänkar i dokumentet (
GoTo, GoToR, Launch) exponeras som nya metoder THPDFPage.Add*Annotation / AddGoToLink / AddGoToRLink / AddLaunchLink sedan HotPDF v2.6.0
- DeviceCMYK-utdata är tillgängliga via
THPDFPage.SetCMYKColor / SetCMYKFillColor / SetCMYKStrokeColor; ICC-hanterade färgrymder registreras med THotPDF.RegisterICCProfile och används via SetFillColorSpace / SetStrokeColorSpace + SetFillColor / SetStrokeColor sedan HotPDF v2.7.0
- Sätt
THotPDF.UseXRefStream till true före sparning för att emittera en enda FlateDecode-komprimerad korsreferensström /Type /XRef i stället för den textuella sekvensen xref / trailer / startxref (PDF 1.7 7.5.8); tillgängligt sedan HotPDF v2.8.0
- Sätt
THotPDF.EnableXMPMetadata till true för att bifoga en XMP-ström /Type /Metadata /Subtype /XML till Catalog (PDF 1.7 14.3.2); byggs automatiskt från Info-dict-fälten, eller ange ett handskrivet paket via CustomXMP. Tillgängligt sedan HotPDF v2.9.0
- PDF-versionsgrind per metod (sedan HotPDF v2.24.0). Varje funktionsmetod som införts i v2.4.0+ anropar
RequirePDFVersion före emission; med StrictVersionLock=false (standard) höjs dokumentets Version tyst till den miniminivå funktionen kräver, och med StrictVersionLock=true nekas anropet så att den sparade filen strikt följer vald referensspecifikation 1.3 / 1.4 / 1.5 / 1.6 / 1.7
- PNG- och TIFF-prediktorkodare för FlateDecode-komprimerade bilddata (PDF 1.7 7.4.4.4):
_PNGPredictorEncode använder libpngs filterheuristik med minsta absoluta skillnad (Predictor=15), och _TIFFPredictor2Encode använder horisontell differens (Predictor=2). Tillgängligt sedan HotPDF v2.10.0
- Ingångspunkter för Tagged PDF (PDF 1.7 14.7-14.8):
THotPDF.Lang fyller /Lang i Catalog, EnableTaggedPDF emitterar /MarkInfo <</Marked true>> och en stub /StructTreeRoot, och de nya metoderna THPDFPage.BeginMarkedContent / BeginMarkedContentMCID / EndMarkedContent skriver innehållsströmsoperatorerna BMC / BDC / EMC. Tillgängligt sedan HotPDF v2.11.0
- Axiala och radiella gradienter (PDF 1.7 7.10 / 8.7):
THotPDF.RegisterAxialGradientTHotPDF.RegisterAxialGradient / RegisterRadialGradient bygger hela stacken Function Type 2 / Shading Type 2-3 / Pattern Type 2 och returnerar ett stabilt mönsternamn; THPDFPage.SetFillPattern / SetStrokePattern installerar det på sidan. Antalet komponenter i start- / slutfärgen väljer DeviceGray (1) / DeviceRGB (3) / DeviceCMYK (4). Tillgängligt sedan HotPDF v2.13.0; axiala gradienter med flera stopp via Function Type 3 exponeras genom RegisterMultiStopAxialGradient sedan v2.18.0
- Inline-bilder (PDF 1.7 8.9.7) via
THPDFPage.DrawInlineImage; råa byte kapslas automatiskt med ASCIIHex när inget Filter anges, så innehållsströmmen förblir 7-bitars ren. Tillgängligt sedan HotPDF v2.18.0
- OutputIntents (PDF 1.7 14.11) via
THotPDF.AddOutputIntent; varje anrop lägger till ett dict /Type /OutputIntent i Catalog med valfri /DestOutputProfile som refererar till en registrerad ICC-profil. Tillgängligt sedan HotPDF v2.18.0
- Automatisk generering av AcroForm-utseendeströmmar (PDF 1.7 12.5.5 / 12.7.3.3 / 8.10): sätt
THotPDF.AutoFormAppearances till true innan interaktiva formulärfält läggs till, så förbygger HotPDF ett Form XObject /Subtype /Form för varje widgets /AP /N-post (Yes / Off-underdict för knappar), fyller AcroForms standardresurser /DR med indirekta fontdict för Helvetica / ZapfDingbats och ändrar /NeedAppearances till false så att renderare respekterar de inbäddade strömmarna. Tillgängligt sedan HotPDF v2.28.0
- ViewerPreferences /ViewArea och /ViewClip (PDF 1.4 12.2 Table 152) exponeras nu via egenskaperna
THotPDF.ViewArea / THotPDF.ViewClip (med motsvarande uppsättningsmedlemmar vpViewArea / vpViewClip). Båda accepterar värdena THPDFPageBoundary (MediaBox / CropBox / BleedBox / TrimBox / ArtBox) och kompletterar HotPDF:s täckning av de fyra PDF 1.4 sidgränsrelaterade ViewerPreferences. Tillgängligt sedan HotPDF v2.29.0
- Sidövergångar (PDF 1.1 / 1.5 12.4.4):
THPDFPage.SetPageTransition skriver ett /Trans-dictionary på sidan så att PDF-läsare i /PageMode /FullScreen animerar navigering. PDF 1.1-stilar (Split, Blinds, Box, Wipe, Dissolve, Glitter, R) och PDF 1.5-stilar (Fly, Push, Cover, Uncover, Fade) exponeras genom enumerationen THPDFTransitionStyle; även de tillhörande underalternativen /Dm, /M och /Di exponeras. THPDFPage.SetPageDuration skriver fördröjningen för automatisk sidväxling /Dur i sekunder. Tillgängligt sedan HotPDF v2.30.0
- Transparensgrupp på sidnivå (PDF 1.4 11.6.6 / 7.5.5):
THPDFPage.SetTransparencyGroup bifogar ett /Group-dictionary (/Type /Group /S /Transparency) så att renderare kompositerar innehåll med alfa på ett förutsägbart sätt. Välj en enhetsfärgrymd via enumerationen THPDFGroupColorSpace (DeviceGray / DeviceRGB / DeviceCMYK eller utelämna), eller anropa THPDFPage.SetTransparencyGroupICC med namnet på en ICC-profil som tidigare registrerats via THotPDF.RegisterICCProfile. Valfria flaggor /I (Isolated) och /K (Knockout) styr kompositorn; THPDFPage.ClearTransparencyGroup tar bort en tidigare bifogad post. Tillgängligt sedan HotPDF v2.32.0
- Inkrementell uppdatering (PDF 1.7 ISO 32000-1 7.5.6):
THotPDF.BeginIncrementalUpdate(SourceFile) läser in en befintlig PDF i append-only-läge; efterföljande CreateIndirect*-anrop markerar automatiskt nya objekt som dirty, och THotPDF.MarkDirty(Obj) märker redan inlästa objekt för återemission. THotPDF.SaveIncrementalUpdate(TargetFile) skriver ursprungliga källbyte oförändrade, lägger bara till dirty-objekt med bevarade objektnummer, emitterar en ny xref-undersektion och avslutar med en trailer vars /Prev pekar på föregående xref. Kombinera med befintlig pipeline AddSignedSignatureField + PreparePDFForSigning + InsertSignatureHex för att lägga till senare signaturfält i ett redan signerat dokument utan att ogiltigförklara tidigare signaturer (deras /ByteRange-sammandrag förblir giltiga eftersom inga ursprungliga byte ändras). Tillgängligt sedan HotPDF v2.35.0
- Normalisering av namn för inbäddade TrueType-fonter: HotPDF läser den inbäddade TrueType-namntabellen och justerar
/BaseFont, /FontDescriptor /FontName, /FontFamily och namn för underordnade CID-fonter mot fontprogrammets PostScript-namn. Detta undviker Adobe Acrobat Font Capture-fel som orsakas av en mismatch mellan PDF-fontdictionaryt och den inbäddade TTF-nyttolasten. Tillgängligt sedan HotPDF v2.35.1
- TrueType-fontdelmängder (PDF 1.7 ISO 32000-1 9.6.4 / 9.8.2): sätt
THotPDF.EnableFontSubsetting till true före BeginDoc, så bygger HotPDF om den inbäddade TrueType-nyttolasten så att den bara innehåller de glyfer som faktiskt används av dokumentet. Typiska latinska dokument får cirka 90% minskning av den inbäddade fontvikten (1 MB Arial -> ~70 KB på en enradig "Hello, world."). Beroenden för sammansatta glyfer spåras rekursivt, GID-numreringen bevaras (så befintliga Type0 / Identity-H-innehållsströmmar fortsätter att fungera), och den nya /BaseFont får automatiskt det specifikationskrävda sexbokstavliga prefixet med "+"-suffix (t.ex. /BaseFont /AAAAAA+ArialMT). Av som standard; aktivera uttryckligen för att behålla fullständig fontinbäddning i redigeringsflöden. Tillgängligt sedan HotPDF v2.36.0
- Delmängdsskapare för Compact Font Format (CFF) (PDF 1.7 ISO 32000-1 9.7.4 / 9.9): följeslagare till TrueType-delmängdsskaparen för OpenType-CFF (.otf, sfntVersion
OTTO) och Type 1 / Type 1C-fonter. Funktionen HPDFSubsetCFF(CFFBytes, KeepGlyph) som exporteras från enheten bygger om CharStrings INDEX med icke behållna glyfer ersatta av den minsta 1-byte-stubben endchar, samtidigt som GID-numreringen bevaras byte för byte. Tillgängligt sedan HotPDF v2.37.0
- OpenType-CFF (.otf)-inbäddningsväg kopplad till
StoreFont (PDF 1.6+ 9.7.4 Table 117). När den GDI-inlästa fontbinären är en sfnt OTTO-container skapar HotPDF en delmängd av den inbäddade undertabellen 'CFF ' via HPDFSubsetOTFContainer, emitterar fontprogrammet via /FontFile3 /Subtype /OpenType och skriver det underordnade fontdictionaryt med /Subtype /CIDFontType0 i stället för /CIDFontType2. TrueType-fonter fortsätter genom den befintliga vägen /FontFile2 + /CIDFontType2 utan beteendeförändring. Tillgängligt sedan HotPDF v2.38.0
- End-to-end-delmängder för CFF-subrutiner (PDF 1.7 9.7.4 §6 / Adobe Tech Note #5177 §3.1): CFF-delmängdsskaparen tar nu bort oanvända poster från både Global Subr INDEX (direkt efter String INDEX i CFF-binären) och Local Subr INDEX (inbäddat under Private DICT, nått via Top DICT-operator 18 + Private DICT-operator 19). En enda fixpunktsstängning följer kedjor med
callsubr (op 0x0A) och callgsubr (op 0x1D) transitivt, så en CharString som anropar en Local Subr som anropar en Global Subr som anropar en annan Local Subr fångas upp i en iteration. Varje oanvänd post ersätts av en 1-byte-stub return, och INDEX skrivs om på plats med det efterföljande fria utrymmet nollfyllt. Detta beteende exponeras via de publika hjälparna HPDFSubsetCFF och HPDFSubsetOTFContainer; CFF-skannrar på lägre nivå förblir interna. Tillgängligt sedan HotPDF v2.39.0
- CID-keyed CFF-delmängder (PDF 1.7 ISO 32000-1 9.7.4 / Adobe Tech Note #5176 §18-19): CFF-delmängdsskaparen känner nu igen Top DICT-operatorn
ROS (12-30), som markerar en CID-keyed OpenType-CFF-font, och går igenom FDArray (12-36) INDEX med Font DICT, där varje dict bär sitt eget Private DICT + Local Subr INDEX. Glyph-to-FD-kartan FDSelect (12-37) bevaras byte för byte. Subrutinernas stängningsskanning spårar varje behållen CharStrings FD-kontext så att en glyf i FD #5 bara markerar Local Subrs i FD #5; globala subrutiner förblir delade mellan FD:er. Varje FD:s Local Subr INDEX skrivs om på plats med oanvända poster hopfällda till 1-byte-stubbar return. CJK / Indic / Arabic OTF-fonter (Adobe Fan/Gothic/Heiti/Ming/Myungjo/Song Std, Kozuka Pr6N, Source Han Sans osv.) går nu genom hela delmängdspipelinen i stället för att bäddas in som de är. Tillgängligt sedan HotPDF v2.40.0
- Objektströmmar (PDF 1.5 ISO 32000-1 7.5.7): sätt
THotPDF.UseObjectStreams till true utöver UseXRefStream, så packar SaveToStream kvalificerade indirekta objekt (allt utom strömmar, krypteringsdictionaryt och de trailerpekade Catalog- och Info-dictionaryna) i en eller flera containerströmmar /Type /ObjStm. Korsreferensströmmen refererar sedan till de packade objekten via typ-2-poster (field-2 = värd-ObjStm-objektnummer; field-3 = postindex i strömmen). Minskar filstorleken kraftigt i PDF-filer med många små dictionaryn (flersidiga dokument, anteckningar, AcroForm-widgetar, strukturträdselement, Optional Content-lager) - ett 30-sidigt grafiktest krymper från 14502 till 8488 byte (41.5% mindre). Nedgraderas tyst till false när UseXRefStream är av (typ-2-poster kan inte representeras i den textuella xref-tabellen enligt specifikationen) eller när Version är under PDF 1.5. Tillgängligt sedan HotPDF v2.41.0
- Mjukmaskbild / SMask (PDF 1.4 ISO 32000-1 8.9.5.4):
THotPDF.AddImageWithSMask(Width, Height, RGB, Alpha) emitterar ett färgbilds-XObject plus ett 8-bitars DeviceGray-mjukmaskbilds-XObject och kopplar automatiskt /SMask-korsreferensen, så varje pixel kan bära full transparens per kanal i stället för den binära på/av-gränsen i den äldre /ImageMask-vägen. Det bekväma overloadet THotPDF.AddImageWithSMask32(Bitmap32) hämtar RGB- och alfaplanen ur en 32-bitars BGRA TBitmap för PNG-med-alfa-inbäddning med ett anrop. Båda anropsställena passerar RequirePDFVersion(pdf14) så att strikta 1.3-utdata förblir kompatibla. Tillgängligt sedan HotPDF v2.42.0AddImageWithTransparency32 exponerar samma arbetsflöde med bildcentrerad namngivning. Båda anropsplatserna grindas via RequirePDFVersion(pdf14)
- Målning med ofärgade tiling patterns (PDF 1.7 ISO 32000-1 8.6.6.1):
THotPDF.RegisterTilingPattern har emitterat både /PaintType 1 (färgad) och /PaintType 2 (ofärgad) sedan v2.19.0, men motsvarande sidoperatorsekvens var bara korrekt för den färgade varianten. Sex nya /Mask, och båda returnerar normala bildindex för THPDFPage.ShowImage
- Komprimeringskontroller per bild:
AddImageWithJpegQuality tillämpar JPEG-kvalitet i ett anrop utan att ändra JpegQuality, medan AddMonochromeImageAuto och icAutoMono väljer Flate, CCITT Group 4 eller JBIG2 för 1-bitars bitmappsindata
- Målning med ofärgade tilemönster (PDF 1.7 ISO 32000-1 8.6.6.1):
THotPDF.RegisterTilingPattern har emitterat både /PaintType 1 (färgat) och /PaintType 2 (ofärgat) sedan v2.19.0, men den matchande operatörssekvensen på sidan var bara korrekt för den färgade varianten. Sex nya THPDFPage metoder - SetFillPatternRGB / SetStrokePatternRGB / SetFillPatternGray / SetStrokePatternGray / SetFillPatternCMYK / SetStrokePatternCMYK - driver nu den ofärgade vägen genom att automatiskt registrera matchande [/Pattern /BaseCS] tintfärgrymd på sidan Resources/ColorSpace -ordlista och emitterar den specifikation krävda tint_components /Pn scn sekvensen. Använd det ursprungliga SetFillPattern / SetStrokePattern för den färgade varianten där tileen bär egen färg. Tillgängligt sedan HotPDF v2.43.0.
THPDFPage-metoder - SetFillPatternRGB / SetStrokePatternRGB / SetFillPatternGray / SetStrokePatternGray / SetFillPatternCMYK / SetStrokePatternCMYK - driver nu den ofärgade vägen genom att automatiskt registrera matchande toningsfärgrymd [/Pattern /BaseCS] i sidans Resources/ColorSpace-dict och emittera den specifikationskrävda sekvensen tint_components /Pn scn. Använd de ursprungliga SetFillPattern / SetStrokePattern för den färgade varianten där plattan bär sin egen färg. Tillgängligt sedan HotPDF v2.43.0
- CIELab-färgrymd (PDF 1.3+ ISO 32000-1 8.6.5.3):
THotPDF.RegisterLabColorSpace(Xw, Yw, Zw, aMin, aMax, bMin, bMax) bygger en inline-färgrymdsarray [/Lab << /WhitePoint /BlackPoint /Range >>], lagrar den under ett automatiskt genererat namn (Lab1, Lab2, ...) och returnerar namnet för användning med den vanliga pipelinen THPDFPage.SetFillColorSpace / SetStrokeColorSpace + SetFillColor([L, a, b]) / SetStrokeColor([L, a, b]). Lägg in en D50-illuminant [0.9505, 1.0, 1.089] för ICC-tryckflöden eller en D65-illuminant [0.95047, 1.0, 1.08883] för sRGB-ekvivalent visning, och måla sedan med L* i [0..100] och a*, b* i valt intervall (oftast [-128..127]). Tillgängligt sedan HotPDF v2.44.0
- Separation-färgrymd för dekorfärger (PDF 1.3+ ISO 32000-1 8.6.6.4):
THotPDF.RegisterSeparation(ColorantName, AlternateCS, TintC1) deklarerar ett enkomponents spot-bläck vars enda tintoperand i [0..1] driver en linjär Function Type 2-tinttransform som byggs internt. Använd det returnerade namnet (Sep1, Sep2, ...) med den vanliga pipelinen SetFillColorSpace / SetStrokeColorSpace + SetFillColor([tint]) / SetStrokeColor([tint]). AlternateCS accepterar DeviceGray, DeviceRGB eller DeviceCMYK; TintC1 ger alt-CS-komponenterna vid tint = 1.0. Pantone och andra bläcknamn med mellanslag accepteras direkt - HotPDF escapear dem till #20 enligt PDF 1.7 7.3.5 när färgrymdsnamnet skrivs. Tillgängligt sedan HotPDF v2.45.0
- AcroForm-utseendeströmmar för flerradig text och comb-text (PDF 1.7 ISO 32000-1 12.7.4.3): när
THotPDF.AutoFormAppearances är på får textfält vars Flags innehåller ffMultiline ett ordbrutet /AP /N Form XObject (Td + T* + /TL-leadinglayout, med respekt för CR / LF / CRLF-separatorer och trunkering vid synligt radantal). Fält vars Flags innehåller ffComb tillsammans med positivt MaxLen renderar varje tecken i en egen lika bred cell med en absolut Tm-matris per glyf. Enradslayouten från v2.28.0 bevaras byte för byte för fält utan sådana flaggor. Internationella tecken i startvärdet faller fortfarande tillbaka till visarens /NeedAppearances-omräkningsväg - full generering av utseende med inbäddad CID-font återstår. Tillgängligt sedan HotPDF v2.46.0
- AcroForm /AP Unicode-font (PDF 1.7 ISO 32000-1 12.7.2 + 12.7.4.3): registrerar en anroparlevererad Type 0 / CIDFontType2 + Identity-H-sammansatt font i AcroForms standardresursdict
/DR/Font. När den är registrerad växlar AcroForm-nivåns /DA, varje Tx-widgets /DA och /AP /N-strömmen som AutoFormAppearances producerar för icke-ASCII Tx-startvärden till det logiska namnet; Form XObjectets /Resources/Font-underdict refererar också till samma indirekta font så att AP är självförsörjande utan att bero på /DR-upplösning vid rendering. Hjälparen THotPDF.CreateIndirectFontDict returnerar ett nytt tomt THPDFDictionaryObject registrerat som ett indirekt PDF-objekt så att anropare kan bygga egna fontdict (eller andra dict som kräver indirekt "N G R"-serialisering) utan att röra interna hjälpare. Skicka tomt LogicalName och nil FontDict för att återgå till v2.46.0:s ASCII-only /Helv-beteende. ASCII Tx-fält fortsätter använda /Helv med byteidentiska utdata mot v2.46.0 / v2.55.0. Flerradig + comb icke-ASCII /AP och RTL-bidiformning (UAX #9 + arabisk kontextuell fogning) återstår. Tillgängligt sedan HotPDF v2.56.0; stöd för ffMultiline icke-ASCII /AP (UTF-16BE-hex Tj per rad med Td / T* / /TL-leading och CJK-medveten ordbrutning) sedan v2.57.0; stöd för ffComb icke-ASCII /AP (lika breda absoluta Tm-celler per CID + en Tj per kodpunkt med hantering av UTF-16-surrogatpar) sedan v2.58.0; egenskapen THotPDF.FormUnicodeRTL för höger-till-vänster-riktning (vänder UTF-16-ordningen i /AP Tj-hex men behåller /V i logisk ordning; anroparen förformar arabiska till Unicode-presentationsformer U+FB50..U+FDFF + U+FE70..U+FEFF; full UAX #9 + automatisk GSUB-formning väntar) sedan 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]) emitterar en textwidget med /RV (rich-text XHTML body), /DS (CSS-liknande standardstil), flaggbit 26 för ffRichText /Ff automatiskt OR:ad in, samt plain-text-fallbacken /V + /DV som används av läsare som inte tolkar /RV. Acrobat och Foxit renderar direkt från /RV när RichText-biten är på, och plockar upp fontfallback från läsarens installerade Unicode-fonter - därför visas flerbyteinnehåll (CJK / Cyrillic / Arabic / accented Latin) korrekt utan att HotPDF bäddar in en CID-font i /DR-resurser. Både /V och /RV upptäcker automatiskt flerbyteinmatning och växlar till UTF-16BE-hexsträngkodning (FE FF BOM + big-endian-kodenheter) vid behov. Generering av CID-fontutseendeström för HotPDF:s egen /AP-väg återstår; rich-text-medvetna visare behöver den inte. Tillgängligt sedan HotPDF v2.55.0
- DeviceN-färgrymd för arbetsflöden med flerfärgade spot-bläck (PDF 1.3+ ISO 32000-1 8.6.6.5):
THotPDF.RegisterDeviceN(ColorantNames, AlternateCS, TintC1Matrix) generaliserar RegisterSeparation från ett enda spot-bläck till N. Tinttransformen är en PostScript-kalkylator Function Type 4 som emitterar en linjär viktad blandning över den angivna N x M-matrisen (rad n kolumn m är färgämne n:s bidrag till AlternateCS-kanal m när färgämne n ensam är 1.0). Returnerar ett färgrymdsnamn (DevN1, DevN2, ...) som driver den vanliga pipelinen SetFillColorSpace + SetFillColor([t0, t1, ..., t_{N-1}]). AlternateCS accepterar DeviceGray, DeviceRGB eller DeviceCMYK; bläcknamn med mellanslag escapear till #20 enligt PDF 1.7 7.3.5; specialnamnet None markerar en oanvänd färgämnesplats. Tillgängligt sedan HotPDF v2.47.0
- Fri Gouraud-skuggad triangelmesh (PDF 1.3+ ISO 32000-1 8.7.4.5.4):
THotPDF.RegisterFreeFormGouraudShading(XMin, YMin, XMax, YMax, NumComponents, Vertices) deklarerar en /ShadingType 4-ström med /BitsPerCoordinate 16 + /BitsPerComponent 8 + /BitsPerFlag 8, kapslar den som en inline Pattern Type 2-post i sidans Resources/Pattern-dict och returnerar det automatiskt genererade mönsternamnet (Sh1, Sh2, ...) för den vanliga SetFillPattern / SetStrokePattern-pipelinen. Varje vertex packas som 1 flaggbyte (alltid 0 för oberoende trianglar) + 2 big-endian X-byte + 2 big-endian Y-byte + NumComponents 8-bitars färgkomponenter. Argumentet NumComponents accepterar 1 (DeviceGray), 3 (DeviceRGB) eller 4 (DeviceCMYK); varje vertex bidrar med 2 + NumComponents Extended-värden till Vertices i ordningen (X, Y, c1...cN); vertexantalet måste vara en multipel av 3. /Decode mappar 16-bitarskoordinaterna tillbaka till [XMin, XMax] x [YMin, YMax] och färgkomponenterna till [0, 1]. Type 5 (lattice), Type 6 (Coons patch) och Type 7 (tensor product) mesh shading återstår. Tillgängligt sedan HotPDF v2.48.0
- Lattice-form Gouraud-skuggad triangelmesh (PDF 1.3+ ISO 32000-1 8.7.4.5.5):
THotPDF.RegisterLatticeFormGouraudShading(XMin, YMin, XMax, YMax, NumComponents, VerticesPerRow, Vertices) deklarerar en /ShadingType 5-ström som ordnar vertices i ett M-radigt x N-kolumnigt lattice och låter renderaren automatiskt triangulera varje par intilliggande rader till en triangelremsa. Till skillnad från RegisterFreeFormGouraudShading (Type 4) finns ingen flaggbyte per vertex; /BitsPerFlag saknas i shading-dictionaryt och varje vertex upptar bara 4 + NumComponents byte (2 big-endian X + 2 big-endian Y + N färgkomponenter). Shading-dictionaryt bär i stället den obligatoriska posten /VerticesPerRow N. Använd den för källdata som redan ligger på ett regelbundet provrutnät (terräng, FEA-resultat, vetenskapliga värmekartor) - programmet lämnar vertices radvis och renderingspipelinen bygger automatiskt triangelremsans topologi. VerticesPerRow måste vara minst 2 och totalt vertexantal måste vara en multipel av VerticesPerRow med minst två rader. Tillgängligt sedan 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) deklarerar en /ShadingType 6-ström med Coons-patchar, där varje patch begränsas av fyra kubiska Bezierkurvor och bär en färg per hörn. Renderaren passar in Coons-ytan mellan de fyra kanterna, vilket ger en godtyckligt böjd färgbärande fyrhörning - användbart för folie- och metallgradienter på böjda banor, SVG-härledda gradientmeshar och alla fyrhörningar med böjda kanter som annars skulle behöva många små trianglar. Varje patch bidrar med 12 styrpunkter (24 X+Y Extended-värden, ordnade c1..c12 medurs runt gränsen med c1 / c4 / c7 / c10 i de fyra hörnen och resterande 8 som inre Bezierhandtag) följt av 4 hörnfärger (4 * NumComponents Extended-värden), så Patches-steget är 24 + 4 * NumComponents. Shading-dictionaryt bär samma /BitsPerCoordinate 16 + /BitsPerComponent 8 + /BitsPerFlag 8 som Type 4 (och till skillnad från Type 5 saknas /VerticesPerRow). Varje emitterad patch har flag = 0 (oberoende patch); fortsättningsflaggorna 1 / 2 / 3 (kantdelning) exponeras inte i detta bekväma overload. Tillgängligt sedan HotPDF v2.50.0
- Separation-färgrymd med samplad LUT-tinttransform (PDF 1.3+ ISO 32000-1 8.6.6.4 + 7.10.2):
THotPDF.RegisterSeparationLUT(ColorantName, AlternateCS, Samples) kapslar RegisterSampledFunction så att anropare kan uttrycka en full icke-linjär tint -> alt-CS-kurva som en platt byteström med 8-bitars (M-tuple)-samples utan att manuellt bygga ett Function Type 0-dictionary. Använd LUT-varianten när färgövergången är icke-linjär - PANTONE Hexachrome-liknande tintstegar, gammakorrigerade densitetskurvor, handritade tonkurvor som matchar en presskarakterisering, sRGB-till-spot ICC-LUT:ar utan hela ICC-profilmekaniken; v2.45.0-ingången RegisterSeparation täcker fortfarande det linjära fallet med en ändpunkt. AlternateCS accepterar DeviceGray, DeviceRGB eller DeviceCMYK; längden på Samples måste vara en positiv multipel av M med minst 2 * M byte så att funktionen har ett interpolerbart intervall, och rutpunktantalet S härleds från Length(Samples) / M. Linjär interpolation är standard enligt PDF 1.7 /Order 1. Returnerar det registrerade färgrymdsnamnet (Sep1, Sep2, ...) för användning med den vanliga pipelinen SetFillColorSpace + SetFillColor([tint]). Tillgängligt sedan HotPDF v2.53.0
- Registrering av Function Type 0 (Sampled) (PDF 1.3+ ISO 32000-1 7.10.2):
THotPDF.RegisterSampledFunction(Domain, Range, Size, BitsPerSample, Samples, [Order]) deklarerar en indirekt /FunctionType 0-ström som uttrycker en godtycklig indata-till-utdata-mappning som ett regelbundet N-dimensionellt rutnät av M-dimensionella utdata-samples, interpolerade mellan rutpunkter. Använd den där ICC-profilmekanik är för tung men en handtrimmad färg-LUT önskas - tonkurvor för /TransferFunction (ExtGState /TR), samplade tinttransformer för /Separation / /DeviceN bortom de linjära Type 2- / aritmetiska Type 4-vägarna, halftone-tröskelkurvor eller någon annan PDF-konstruktion som tar ett Function-dictionary. Domain är 2N poster (ett [min, max]-par per indatadimension); Range är 2M poster (ett par per utdatadimension); Size är N rutpunktantal; BitsPerSample accepterar 1, 2, 4, 8, 12, 16, 24 eller 32 enligt PDF 1.7 Table 38; Samples är den råa bitpackade sampleströmmen (MSB-first inom varje sample, ingen padding mellan samples utöver nollfyllning av sista byte, med indata 0 snabbast varierande enligt specifikationens sampleordning); Order är standard 1 (linjär) och accepterar 3 (cubic-spline-interpolation, sedan v2.54.0) enligt PDF 1.7 Table 38. HotPDF validerar samplebyteantalet mot ceil(GridPoints * M * BitsPerSample / 8). Returnerar det indirekta THPDFStreamObject så att anropare kan fästa det var ett Function-dictionary förväntas. Tillgängligt sedan HotPDF v2.52.0; cubic /Order 3 + end-to-end-täckning för flera indata / flera utdata sedan 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) deklarerar en /ShadingType 7-ström med tensor-product-patchar, där varje patch definieras av ett fullständigt 4 x 4-rutnät av bikubiska Bezierstyrpunkter p[i][j] plus en färg per hörn. Utökar RegisterCoonsPatchMesh (Type 6) genom att lägga till 4 explicita inre styrpunkter (p[1][1], p[1][2], p[2][2], p[2][1]) utöver de 12 gränspunkterna, vilket ger finare kontroll över patchens inre än Coons-blandningen kan uttrycka. Användbart för SVG-mesh-gradient-tur-och-retur och all grafik som behöver en tensor-product Bezieryta. Varje patch bidrar med 16 styrpunkter (32 X+Y Extended-värden, ordnade enligt specifikationens Table 88-strömordning: p[0][0..3], p[1][3], p[2][3], p[3][3], p[3][2..0], p[2][0], p[1][0], sedan de 4 inre punkterna p[1][1], p[1][2], p[2][2], p[2][1]) följt av 4 hörnfärger (4 * NumComponents Extended-värden vid p[0][0] / p[0][3] / p[3][3] / p[3][0]), så Patches-steget är 32 + 4 * NumComponents. Varje emitterad patch har flag = 0 (oberoende patch). Med den här versionen täcks hela ISO 32000-1 8.7.4.5-familjen av mesh shading (Types 4 / 5 / 6 / 7). Tillgängligt sedan HotPDF v2.51.0
- Anteckningskantstil och Popup-koppling (PDF 1.7 12.5.4 / 12.5.6.14):
THPDFPage.SetAnnotationBorderStyle(Annot, Width, Style, DashPattern) bifogar ett /BS-dictionary med valt THPDFAnnotBorderStyle (absSolid / absDashed / absBeveled / absInset / absUnderline). THPDFPage.AddPopupAnnotationFor(ParentAnnot, Rect, Open) emitterar en /Popup-anteckning som är kopplad i båda riktningarna (parent /Popup -> popup, popup /Parent -> parent) så att visaren kan rendera pratbubbelkopplingen. Den nya egenskapen THPDFPage.LastAnnotation matar endera hjälparen utan att ändra signaturen för befintliga Add*Annotation-procedurer. Tillgängligt sedan HotPDF v2.34.0
- Public-Key Security Handler (PDF 1.7 7.6.5):
THotPDF.EnablePubKeyEncryption(seed, KeyType, EncryptMetadata) + THotPDF.AddPubKeyRecipient(envelope) emitterar ett krypteringsdictionary /Filter /Adobe.PubSec (/SubFilter /adbe.pkcs7.s4 för V=1 RC4-40 / /adbe.pkcs7.s5 för V=2 RC4-128 / V=4 AESV2). Anroparen tillhandahåller det 20-byte slumpfröet och en binär PKCS#7 envelopedData-blob per mottagare (byggd externt med Windows CryptoAPI, OpenSSL eller pycryptodome). HotPDF härleder filkrypteringsnyckeln via algorithm 9 (SHA-1 av fröet konkatenerat med varje envelope) och återanvänder den standardiserade per-objekt-nyckelhärledningen för AES-128 / RC4-strömmar. Tillgängligt sedan HotPDF v2.33.0
- Rendering av laddade sidor avkodar skuggningstyperna 4 till 7 med alla standardkoordinater, komponent- och flaggbitbredder, bytejusterade poster, typ 4-triangel- och typ 6/7-patch-fortsättningsflaggor, valfria Function-arrayer, deklarerad ColorSpace-konvertering, BBox- och Background-hantering, klippningsuteslutning, batchade Gouraud-fyllningar samt avgränsad adaptiv Coons- och tensorprodukt-tessellering. Tillgängligt sedan HotPDF v2.488.0
Se även
|