|
PDF filtre desteği
Genel bakış
PDF akışları ve gömülü görüntüler, kodlamalarını filtre adlarıyla belirtir. HotPDF,
belge üretirken veya dış içerikleri çözerken ağırlıklı olarak aşağıdaki filtre
aileleriyle çalışır.
Yaygın filtreler
- FlateDecode: Üretilen akışlar için ana sıkıştırma filtresi ve zlib tabanlı temel açma yolu
- LZWDecode: HPDFLZW.pas üzerinden eski ve uyumluluk senaryoları için desteklenir
- DCTDecode: HotPDF görüntü yükleme yollarının işlediği standart JPEG görüntü verileri için kullanılır
- CCITTFaxDecode: Tek renkli TIFF ve faks tarzı görüntü verilerinde yaygındır
- ASCIIHexDecode / ASCII85Decode / RunLengthDecode: HotPDF v2.4.0'dan beri HPDFTypes.pas içinde sunulan kodlayıcı yardımcıları (
_ASCIIHexEncode, _ASCII85Encode, _RunLengthEncode). Herhangi bir ikili içeriği 7 bit kanallar için sarmalarken veya açık PDF 1.7 7.4 gidiş-dönüş desteği gerektiğinde kullanışlıdır
- JBIG2Decode / JPXDecode: PDF 1.7 7.4.7 / 7.4.9 tarafından tanımlanan filtre adları. HotPDF ile gelen JBIG2 ve JPEG 2000 yardımcıları, gerçek bir OpenJPEG / JBIG2 arka ucu bağlanana kadar desteklenmediğini bildiren (
False döndüren) stub'lardır. Eski derlemeler okunamayan görüntüler üreten sahte bir 100×100 başarı döndürüyordu; bu artık düzeltilmiştir
Pratik notlar
- Her filtre tek bir genel API üzerinden sunulmaz; bazılarına özel görüntü veya akış yardımcı birimleriyle ulaşılır
- Üretilen PDF içeriği için THotPDF.Compression kullanıcıya dönük merkezi ayar olmaya devam eder
- Dış veriler yüklenirken geçerli filtre, kaynak dosya biçimine ve kullanılan yardımcı sınıfa bağlıdır
- Şifreli PDF'ler bu filtreleri güvenlik işleyicisiyle birleştirir; desteklenen AES‑128 (V=4 R=4 / CFM=AESV2) ve RC4 (V=1/V=2) seçenekleri için CryptKeyLength konusuna bakın
- Etkileşimli form alanları, görüntüleyicinin boyadığı Widget ek açıklamaları olarak üretilir; bkz. AcroForm desteği
- Metin işaretleme ek açıklamaları (Highlight, Underline, Squiggly, StrikeOut) ve belge içi atlama bağlantıları (
GoTo, GoToR, Launch) HotPDF v2.6.0'dan beri yeni THPDFPage.Add*Annotation / AddGoToLink / AddGoToRLink / AddLaunchLink yöntemleri olarak sunulur
- DeviceCMYK çıktısı
THPDFPage.SetCMYKColor / SetCMYKFillColor / SetCMYKStrokeColor üzerinden kullanılabilir; ICC ile yönetilen renk uzayları HotPDF v2.7.0'dan beri THotPDF.RegisterICCProfile ile kaydedilir ve SetFillColorSpace / SetStrokeColorSpace + SetFillColor / SetStrokeColor üzerinden uygulanır
- Kaydetmeden önce
THotPDF.UseXRefStream değerini true yaparak metinsel xref / trailer / startxref dizisi yerine tek bir FlateDecode sıkıştırmalı /Type /XRef çapraz başvuru akışı üretin (PDF 1.7 7.5.8); HotPDF v2.8.0'dan beri kullanılabilir
- Catalog'a bir XMP
/Type /Metadata /Subtype /XML akışı eklemek için THotPDF.EnableXMPMetadata değerini true yapın (PDF 1.7 14.3.2); Info dict alanlarından otomatik oluşturulur veya CustomXMP ile elle hazırlanmış bir paket sağlayabilirsiniz. HotPDF v2.9.0'dan beri kullanılabilir
- Yöntem bazında PDF sürüm kapısı (HotPDF v2.24.0'dan beri). v2.4.0+ içinde eklenen her özellik yöntemi üretimden önce
RequirePDFVersion çağırır; StrictVersionLock=false olduğunda (varsayılan) belgenin Version değeri özelliğin gerektirdiği en düşük sürüme sessizce yükseltilir, StrictVersionLock=true olduğunda ise çağrı reddedilir ve kaydedilen dosya seçilen 1.3 / 1.4 / 1.5 / 1.6 / 1.7 başvuru belirtimine sıkı biçimde uyar
- FlateDecode sıkıştırmalı görüntü verileri için PNG ve TIFF predictor kodlayıcıları (PDF 1.7 7.4.4.4):
_PNGPredictorEncode libpng'in minimum mutlak fark filtre sezgisini (Predictor=15), _TIFFPredictor2Encode ise yatay fark alma işlemini (Predictor=2) uygular. HotPDF v2.10.0'dan beri kullanılabilir
- Tagged PDF giriş noktaları (PDF 1.7 14.7-14.8):
THotPDF.Lang Catalog içindeki /Lang değerini doldurur, EnableTaggedPDF /MarkInfo <</Marked true>> ve bir /StructTreeRoot stub'ı üretir, yeni THPDFPage.BeginMarkedContent / BeginMarkedContentMCID / EndMarkedContent yöntemleri ise BMC / BDC / EMC içerik akışı operatörlerini yazar. HotPDF v2.11.0'dan beri kullanılabilir
- Eksenel ve radyal gradyanlar (PDF 1.7 7.10 / 8.7):
THotPDF.RegisterAxialGradient / RegisterRadialGradient tam Function Type 2 / Shading Type 2-3 / Pattern Type 2 yığınını oluşturur ve kararlı bir desen adı döndürür; THPDFPage.SetFillPattern / SetStrokePattern bunu sayfaya kurar. Başlangıç / bitiş rengindeki bileşen sayısı DeviceGray (1) / DeviceRGB (3) / DeviceCMYK (4) seçer. HotPDF v2.13.0'dan beri kullanılabilir; Function Type 3 üzerinden çok duraklı eksenel gradyanlar v2.18.0'dan beri RegisterMultiStopAxialGradient ile sunulur
THPDFPage.DrawInlineImage üzerinden inline görüntüler (PDF 1.7 8.9.7); Filter verilmediğinde ham baytlar otomatik olarak ASCIIHex ile sarılır, böylece içerik akışı 7 bit temiz kalır. HotPDF v2.18.0'dan beri kullanılabilir
THotPDF.AddOutputIntent üzerinden OutputIntents (PDF 1.7 14.11); her çağrı Catalog'a kayıtlı bir ICC profiline başvuran isteğe bağlı /DestOutputProfile ile bir /Type /OutputIntent dict ekler. HotPDF v2.18.0'dan beri kullanılabilir
- AcroForm görünüm akışı otomatik üretimi (PDF 1.7 12.5.5 / 12.7.3.3 / 8.10): etkileşimli form alanları eklemeden önce
THotPDF.AutoFormAppearances değerini true yapın; HotPDF her widget'ın /AP /N girdisi için bir /Subtype /Form Form XObject önceden oluşturur (düğmeler için Yes / Off alt dict'leri), AcroForm /DR varsayılan kaynaklarını Helvetica / ZapfDingbats dolaylı font dict'leriyle doldurur ve renderer'ların gömülü akışları kullanması için /NeedAppearances değerini false yapar. HotPDF v2.28.0'dan beri kullanılabilir
- ViewerPreferences /ViewArea ve /ViewClip (PDF 1.4 12.2 Table 152) artık
THotPDF.ViewArea / THotPDF.ViewClip özellikleriyle (eşleşen vpViewArea / vpViewClip set üyeleriyle) sunulur. İkisi de THPDFPageBoundary değerlerini (MediaBox / CropBox / BleedBox / TrimBox / ArtBox) kabul eder ve HotPDF'nin dört PDF 1.4 sayfa sınırı ViewerPreferences kapsamını tamamlar. HotPDF v2.29.0'dan beri kullanılabilir
- Sayfa geçişleri (PDF 1.1 / 1.5 12.4.4):
THPDFPage.SetPageTransition, /PageMode /FullScreen modundaki PDF okuyucuların gezinmeyi canlandırması için sayfaya bir /Trans sözlüğü yazar. PDF 1.1 stilleri (Split, Blinds, Box, Wipe, Dissolve, Glitter, R) ve PDF 1.5 stilleri (Fly, Push, Cover, Uncover, Fade) THPDFTransitionStyle enum'u üzerinden sunulur; eşlik eden /Dm, /M ve /Di alt seçenekleri de sunulur. THPDFPage.SetPageDuration, otomatik ilerleme gecikmesi /Dur değerini saniye cinsinden yazar. HotPDF v2.30.0'dan beri kullanılabilir
- Sayfa düzeyi saydamlık grubu (PDF 1.4 11.6.6 / 7.5.5):
THPDFPage.SetTransparencyGroup, alfa içeren içeriğin öngörülebilir biçimde bileştirilmesi için bir /Group sözlüğü (/Type /Group /S /Transparency) ekler. THPDFGroupColorSpace enum'u üzerinden bir aygıt renk uzayı seçin (DeviceGray / DeviceRGB / DeviceCMYK veya boş bırakın) ya da daha önce THotPDF.RegisterICCProfile ile kaydedilmiş bir ICC profilinin adıyla THPDFPage.SetTransparencyGroupICC çağırın. İsteğe bağlı /I (Isolated) ve /K (Knockout) bayrakları bileştiriciyi yönlendirir; THPDFPage.ClearTransparencyGroup daha önce eklenmiş girdiyi kaldırır. HotPDF v2.32.0'dan beri kullanılabilir
- Artımlı güncelleme (PDF 1.7 ISO 32000-1 7.5.6):
THotPDF.BeginIncrementalUpdate(SourceFile) mevcut bir PDF'yi yalnız ekleme modunda yükler; sonraki CreateIndirect* çağrıları yeni nesneleri otomatik olarak dirty işaretler, THotPDF.MarkDirty(Obj) ise önceden yüklenmiş nesneleri yeniden üretim için etiketler. THotPDF.SaveIncrementalUpdate(TargetFile) özgün kaynak baytlarını aynen yazar, yalnızca dirty nesneleri nesne numaraları korunmuş halde ekler, yeni bir xref alt bölümü üretir ve önceki xref'i gösteren /Prev taşıyan bir trailer ile bitirir. Bunu mevcut AddSignedSignatureField + PreparePDFForSigning + InsertSignatureHex hattıyla birleştirerek zaten imzalanmış bir belgeye önceki imzaları geçersiz kılmadan sonraki imza alanlarını ekleyin (özgün baytların hiçbiri değişmediğinden /ByteRange özetleri geçerli kalır). HotPDF v2.35.0'dan beri kullanılabilir
- Gömülü TrueType font adı normalleştirme: HotPDF gömülü TrueType ad tablosunu okur ve
/BaseFont, /FontDescriptor /FontName, /FontFamily ile alt CID font adlarını font programının PostScript adıyla hizalar. Bu, PDF font sözlüğü ile gömülü TTF yükü arasındaki uyumsuzluğun yol açtığı Adobe Acrobat Font Capture hatalarını önler. HotPDF v2.35.1'den beri kullanılabilir
- TrueType font alt kümeleme (PDF 1.7 ISO 32000-1 9.6.4 / 9.8.2):
BeginDoc öncesinde THotPDF.EnableFontSubsetting değerini true yapın; HotPDF gömülü TrueType yükünü yalnızca belgede gerçekten kullanılan glifleri içerecek şekilde yeniden oluşturur. Tipik Latin belgelerinde gömülü font ağırlığında yaklaşık %90 azalma görülür (tek satırlık "Hello, world." için 1 MB Arial -> ~70 KB). Bileşik glif bağımlılıkları yinelemeli izlenir, GID numaralandırması korunur (mevcut Type0 / Identity-H içerik akışları çalışmaya devam eder) ve yeni /BaseFont otomatik olarak belirtimin zorunlu kıldığı altı harfli "+" son ekli öneki alır (örn. /BaseFont /AAAAAA+ArialMT). Varsayılan olarak kapalıdır; düzenleme iş akışlarında tam font gömme davranışını korumak için isteğe bağlı olarak açın. HotPDF v2.36.0'dan beri kullanılabilir
- Compact Font Format (CFF) alt kümeleyici (PDF 1.7 ISO 32000-1 9.7.4 / 9.9): OpenType-CFF (.otf, sfntVersion
OTTO) ve Type 1 / Type 1C fontlar için TrueType alt kümeleyicinin tamamlayıcısıdır. Birimden dışa aktarılan HPDFSubsetCFF(CFFBytes, KeepGlyph) işlevi, tutulmayan glifleri en küçük 1 baytlık endchar stub'ı ile değiştirerek CharStrings INDEX'i yeniden oluşturur ve GID numaralandırmasını bayt bayt korur. HotPDF v2.37.0'dan beri kullanılabilir
StoreFont içine bağlanan OpenType-CFF (.otf) gömme yolu (PDF 1.6+ 9.7.4 Table 117). GDI ile yüklenen font ikilisi bir sfnt OTTO kapsayıcısı olduğunda HotPDF, gömülü 'CFF ' alt tablosunu HPDFSubsetOTFContainer üzerinden alt kümeler, font programını /FontFile3 /Subtype /OpenType ile üretir ve alt font sözlüğünü /CIDFontType2 yerine /Subtype /CIDFontType0 ile yazar. TrueType fontlar davranış değişikliği olmadan mevcut /FontFile2 + /CIDFontType2 yolundan devam eder. HotPDF v2.38.0'dan beri kullanılabilir
- CFF alt yordam alt kümelemesinin uçtan uca işlemesi (PDF 1.7 9.7.4 §6 / Adobe Tech Note #5177 §3.1): CFF alt kümeleyici artık hem Global Subr INDEX'ten (CFF ikilisindeki String INDEX'in hemen ardından gelir) hem de Local Subr INDEX'ten (Private DICT altında yuvalıdır, Top DICT operator 18 + Private DICT operator 19 ile erişilir) kullanılmayan girdileri çıkarır. Tek bir sabit nokta kapanışı
callsubr (op 0x0A) ve callgsubr (op 0x1D) zincirlerini geçişli izler; böylece bir Local Subr çağıran, onun Global Subr çağırdığı, onun da başka bir Local Subr çağırdığı CharString tek yinelemede yakalanır. Her kullanılmayan girdi 1 baytlık return stub'ı ile değiştirilir ve INDEX yerinde yeniden yazılarak sondaki boşluk sıfırla doldurulur. Bu davranış genel HPDFSubsetCFF ve HPDFSubsetOTFContainer yardımcıları üzerinden sunulur; düşük düzey CFF tarayıcıları içte kalır. HotPDF v2.39.0'dan beri kullanılabilir
- CID-keyed CFF alt kümeleme (PDF 1.7 ISO 32000-1 9.7.4 / Adobe Tech Note #5176 §18-19): CFF alt kümeleyici artık CID-keyed OpenType-CFF fontu işaretleyen Top DICT
ROS operatörünü (12-30) tanır ve her biri kendi Private DICT + Local Subr INDEX değerini taşıyan Font DICT'lerin FDArray (12-36) INDEX'inde yürür. FDSelect (12-37) glif-FD haritası bayt bayt korunur. Alt yordam kapanışı taraması, tutulan her CharString'in FD bağlamını izler; böylece FD #5 içindeki bir glif yalnızca FD #5 içindeki Local Subrs değerlerini işaretler, global alt yordamlar FD'ler arasında paylaşılmış kalır. Her FD'nin Local Subr INDEX'i, kullanılmayan girdiler 1 baytlık return stub'larına daraltılarak yerinde yeniden yazılır. CJK / Indic / Arabic OTF fontları (Adobe Fan/Gothic/Heiti/Ming/Myungjo/Song Std, Kozuka Pr6N, Source Han Sans vb.) artık olduğu gibi gömülmek yerine tam alt kümeleme hattından geçer. HotPDF v2.40.0'dan beri kullanılabilir
- Nesne akışları (PDF 1.5 ISO 32000-1 7.5.7):
UseXRefStream yanında THotPDF.UseObjectStreams değerini true yapın; SaveToStream uygun dolaylı nesneleri (akışlar, şifreleme sözlüğü ve trailer tarafından işaret edilen Catalog ve Info sözlükleri hariç her şeyi) bir veya daha fazla /Type /ObjStm kapsayıcı akışına paketler. Çapraz başvuru akışı daha sonra paketlenmiş nesnelere type-2 girdileriyle başvurur (field-2 = konak ObjStm nesne numarası; field-3 = akış içindeki girdi dizini). Çok sayıda küçük sözlük içeren PDF'lerde dosya boyutunu belirgin biçimde azaltır (çok sayfalı belgeler, ek açıklamalar, AcroForm widget'ları, yapı ağacı öğeleri, Optional Content katmanları) - 30 sayfalık yalnız grafik test 14502 bayttan 8488 bayta düşer (%41.5 daha küçük). UseXRefStream kapalıysa (type-2 girdileri belirtime göre metinsel xref tablosunda gösterilemez) veya Version PDF 1.5'in altındaysa sessizce false değerine düşer. HotPDF v2.41.0'dan beri kullanılabilir
- Yumuşak maske görüntüsü / SMask (PDF 1.4 ISO 32000-1 8.9.5.4):
THotPDF.AddImageWithSMask(Width, Height, RGB, Alpha) bir renkli görüntü XObject ve 8 bit DeviceGray yumuşak maske görüntü XObject üretir ve /SMask çapraz başvurusunu otomatik bağlar; böylece her piksel, eski /ImageMask yolunun ikili açık/kapalı sınırı yerine kanal başına tam saydamlık taşıyabilir. Kullanışlı THotPDF.AddImageWithSMask32(Bitmap32) overload'u, tek çağrıyla alfa içeren PNG gömme için RGB ve alfa düzlemlerini 32 bit BGRA TBitmap içinden alır. Her iki çağrı noktası da RequirePDFVersion(pdf14) üzerinden geçtiğinden katı mod 1.3 çıktısı uyumlu kalır. HotPDF v2.42.0'dan beri kullanılabilir
- Renksiz Tiling Pattern boyama (PDF 1.7 ISO 32000-1 8.6.6.1):
THotPDF.RegisterTilingPattern v2.19.0'dan beri hem /PaintType 1 (renkli) hem de /PaintType 2 (renksiz) üretir, ancak eşleşen sayfa tarafı operatör dizisi yalnızca renkli varyant için doğruydu. Altı yeni THPDFPage yöntemi - SetFillPatternRGB / SetStrokePatternRGB / SetFillPatternGray / SetStrokePatternGray / SetFillPatternCMYK / SetStrokePatternCMYK - artık renksiz yolu, sayfanın Resources/ColorSpace dict değerinde eşleşen [/Pattern /BaseCS] tinting renk uzayını otomatik kaydederek ve belirtimin zorunlu kıldığı tint_components /Pn scn dizisini üreterek yürütür. Döşemenin kendi rengini taşıdığı renkli varyant için özgün SetFillPattern / SetStrokePattern yöntemlerini kullanın. HotPDF v2.43.0'dan beri kullanılabilir
- CIELab renk uzayı (PDF 1.3+ ISO 32000-1 8.6.5.3):
THotPDF.RegisterLabColorSpace(Xw, Yw, Zw, aMin, aMax, bMin, bMax) inline bir [/Lab << /WhitePoint /BlackPoint /Range >>] renk uzayı dizisi oluşturur, bunu otomatik üretilen bir ad altında saklar (Lab1, Lab2, ...) ve düzenli THPDFPage.SetFillColorSpace / SetStrokeColorSpace + SetFillColor([L, a, b]) / SetStrokeColor([L, a, b]) hattında kullanılacak adı döndürür. ICC baskı iş akışları için D50 aydınlatıcı [0.9505, 1.0, 1.089] veya sRGB eşdeğer ekran için D65 aydınlatıcı [0.95047, 1.0, 1.08883] verin, ardından L* değerini [0..100] içinde ve a*, b* değerlerini seçilen aralıkta (genellikle [-128..127]) boyayın. HotPDF v2.44.0'dan beri kullanılabilir
- Spot renkler için Separation renk uzayı (PDF 1.3+ ISO 32000-1 8.6.6.4):
THotPDF.RegisterSeparation(ColorantName, AlternateCS, TintC1), [0..1] içindeki tek tint operandı dahili olarak oluşturulan doğrusal Function Type 2 tint dönüşümünü süren tek bileşenli bir spot mürekkep bildirir. Dönen adı (Sep1, Sep2, ...) düzenli SetFillColorSpace / SetStrokeColorSpace + SetFillColor([tint]) / SetStrokeColor([tint]) hattıyla kullanın. AlternateCS DeviceGray, DeviceRGB veya DeviceCMYK kabul eder; TintC1 tint = 1.0 için alt-CS bileşenlerini sağlar. Pantone ve boşluk içeren diğer mürekkep adları doğrudan kabul edilir - HotPDF renk uzayı adını yazarken bunları PDF 1.7 7.3.5 uyarınca #20 olarak kaçar. HotPDF v2.45.0'dan beri kullanılabilir
- AcroForm çok satırlı ve comb metin görünüm akışları (PDF 1.7 ISO 32000-1 12.7.4.3):
THotPDF.AutoFormAppearances açıkken, Flags değeri ffMultiline içeren metin alanları sözcük sarmalı bir /AP /N Form XObject alır (Td + T* + /TL leading düzeni, CR / LF / CRLF ayırıcılarına uyar ve görünür satır sayısında keser). Flags değeri ffComb içeren ve pozitif MaxLen taşıyan alanlar, her karakteri glif başına mutlak Tm matrisiyle kendi eşit genişlikli hücresine render eder. v2.28.0'daki tek satırlı düzen, bu bayrakları taşımayan alanlarda bayt bayt korunur. Başlangıç değerindeki uluslararası karakterler hâlâ görüntüleyicinin /NeedAppearances yeniden hesaplama yoluna düşer - gömülü CID fontla tam görünüm üretimi gelecekteki iştir. HotPDF v2.46.0'dan beri kullanılabilir
- AcroForm /AP Unicode fontu (PDF 1.7 ISO 32000-1 12.7.2 + 12.7.4.3):
THotPDF.SetFormUnicodeFontDict(LogicalName, FontDict), çağıranın sağladığı Type 0 / CIDFontType2 + Identity-H bileşik fontu AcroForm /DR/Font varsayılan kaynaklar dict içine kaydeder. Kaydedildikten sonra AcroForm düzeyi /DA, her Tx widget'ının /DA değeri ve ASCII dışı Tx başlangıç değerleri için AutoFormAppearances tarafından üretilen /AP /N akışı mantıksal ada geçer; Form XObject'in /Resources/Font alt dict'i de aynı dolaylı fonta başvurur, böylece AP render zamanında /DR çözümlemesine bağlı kalmadan kendi kendine yeterlidir. Eşlik eden THotPDF.CreateIndirectFontDict yardımcısı, çağıranların iç yardımcıları dokunmadan özel font dict'leri (veya "N G R" dolaylı serileştirme gerektiren başka dict'ler) oluşturabilmesi için dolaylı PDF nesnesi olarak kaydedilmiş yeni boş bir THPDFDictionaryObject döndürür. v2.46.0 ASCII-only /Helv davranışına dönmek için boş LogicalName ve nil FontDict geçin. ASCII Tx alanları v2.46.0 / v2.55.0 ile bayt aynı çıktıyla /Helv kullanmaya devam eder. Çok satırlı + comb ASCII dışı /AP ve RTL bidi şekillendirme (UAX #9 + Arapça bağlamsal birleşim) gelecekteki iş olarak kalır. HotPDF v2.56.0'dan beri kullanılabilir; ffMultiline ASCII dışı /AP desteği (satır başına UTF-16BE hex Tj, Td / T* / /TL leading ve CJK farkındalıklı sözcük sarmalama) v2.57.0'dan beri; ffComb ASCII dışı /AP desteği (CID başına eşit genişlikli mutlak Tm hücreleri + kod noktası başına tek hücreli Tj, UTF-16 surrogate pair işleme ile) v2.58.0'dan beri; sağdan sola yön için THotPDF.FormUnicodeRTL özelliği (/AP Tj hex içinde UTF-16 sırasını ters çevirir, /V değerini mantıksal sırada tutar; çağıran Arapçayı Unicode sunum formları U+FB50..U+FDFF + U+FE70..U+FEFF olarak önceden şekillendirir; tam UAX #9 + otomatik GSUB şekillendirme beklemededir) v2.59.0'dan beri
- AcroForm zengin metin Tx widget'ı (PDF 1.5+ ISO 32000-1 12.7.4.3 + Annex L):
THPDFPage.AddRichTextField(FieldName, InitialValue, RichValue, DefaultStyle, Rectangle, [MaxLen], [Flags]), /RV (zengin metin XHTML gövdesi), /DS (CSS benzeri varsayılan stil), otomatik OR edilen ffRichText /Ff bit 26 bayrağı ve /RV ayrıştırmayan okuyucuların kullandığı düz metin /V + /DV yedeği ile bir metin widget'ı üretir. RichText biti açıkken Acrobat ve Foxit doğrudan /RV içinden render eder ve okuyucunun kurulu Unicode fontlarından yedek fontları alır - böylece çok baytlı içerik (CJK / Cyrillic / Arabic / accented Latin), HotPDF'nin /DR Resources içine CID font gömmesine gerek kalmadan doğru görüntülenir. Hem /V hem de /RV çok baytlı girdiyi otomatik algılar ve gerektiğinde UTF-16BE hex-string kodlamasına (FE FF BOM + big-endian kod birimleri) geçer. HotPDF'nin kendi /AP yolu için CID font görünüm akışı üretimi gelecekteki iştir; zengin metin bilen görüntüleyiciler buna ihtiyaç duymaz. HotPDF v2.55.0'dan beri kullanılabilir
- Çok renkli spot mürekkep iş akışları için DeviceN renk uzayı (PDF 1.3+ ISO 32000-1 8.6.6.5):
THotPDF.RegisterDeviceN(ColorantNames, AlternateCS, TintC1Matrix), RegisterSeparation işlevini tek spot mürekkepten N değere genelleştirir. Tint dönüşümü, verilen N x M matris üzerinde doğrusal ağırlıklı karışım üreten bir PostScript-calculator Function Type 4'tür (satır n sütun m, colorant n tek başına 1.0 iken AlternateCS kanal m'ye katkısıdır). Düzenli SetFillColorSpace + SetFillColor([t0, t1, ..., t_{N-1}]) hattını süren bir renk uzayı adı (DevN1, DevN2, ...) döndürür. AlternateCS DeviceGray, DeviceRGB veya DeviceCMYK kabul eder; boşluk içeren mürekkep adları PDF 1.7 7.3.5 uyarınca #20 olarak kaçılır; özel None adı kullanılmayan bir colorant yuvasını işaretler. HotPDF v2.47.0'dan beri kullanılabilir
- Serbest biçimli Gouraud gölgeli üçgen ağı (PDF 1.3+ ISO 32000-1 8.7.4.5.4):
THotPDF.RegisterFreeFormGouraudShading(XMin, YMin, XMax, YMax, NumComponents, Vertices), /BitsPerCoordinate 16 + /BitsPerComponent 8 + /BitsPerFlag 8 içeren bir /ShadingType 4 akışı bildirir, bunu sayfanın Resources/Pattern dict değeri içinde inline Pattern Type 2 girdisine sarar ve düzenli SetFillPattern / SetStrokePattern hattı için otomatik üretilen desen adını döndürür (Sh1, Sh2, ...). Her vertex 1 bayt flag (bağımsız üçgenler için her zaman 0) + 2 big-endian X baytı + 2 big-endian Y baytı + NumComponents adet 8 bit renk bileşeni olarak paketlenir. NumComponents bağımsız değişkeni 1 (DeviceGray), 3 (DeviceRGB) veya 4 (DeviceCMYK) kabul eder; her vertex Vertices içine (X, Y, c1...cN) sırasında 2 + NumComponents Extended değer ekler; vertex sayısı 3'ün katı olmalıdır. /Decode, 16 bit koordinatları [XMin, XMax] x [YMin, YMax] aralığına, renk bileşenlerini de [0, 1] aralığına geri eşler. Type 5 (lattice), Type 6 (Coons patch) ve Type 7 (tensor product) mesh shading gelecekteki iştir. HotPDF v2.48.0'dan beri kullanılabilir
- Lattice-form Gouraud gölgeli üçgen ağı (PDF 1.3+ ISO 32000-1 8.7.4.5.5):
THotPDF.RegisterLatticeFormGouraudShading(XMin, YMin, XMax, YMax, NumComponents, VerticesPerRow, Vertices), vertex'leri M satır x N sütunlu bir lattice içinde düzenleyen ve renderer'ın bitişik satır çiftlerini otomatik üçgen şeridine dönüştürmesine izin veren bir /ShadingType 5 akışı bildirir. RegisterFreeFormGouraudShading (Type 4) aksine vertex başına flag baytı yoktur; shading sözlüğünde /BitsPerFlag bulunmaz ve her vertex yalnızca 4 + NumComponents bayt kaplar (2 big-endian X + 2 big-endian Y + N renk bileşeni). Shading sözlüğü bunun yerine gerekli /VerticesPerRow N girdisini taşır. Kaynak veriler zaten düzenli örnek ızgarasındaysa (arazi, FEA sonuçları, bilimsel ısı haritaları) kullanın - uygulama vertex'leri satır-major verir, render hattı üçgen şerit topolojisini otomatik kurar. VerticesPerRow en az 2 olmalı ve toplam vertex sayısı, en az iki satır olacak şekilde VerticesPerRow katı olmalıdır. HotPDF v2.49.0'dan beri kullanılabilir
- Coons patch mesh shading (PDF 1.3+ ISO 32000-1 8.7.4.5.6):
THotPDF.RegisterCoonsPatchMesh(XMin, YMin, XMax, YMax, NumComponents, Patches), her biri dört kübik Bezier eğrisiyle sınırlanan ve köşe başına bir renk taşıyan Coons patch'lerden oluşan bir /ShadingType 6 akışı bildirir. Renderer dört kenar arasına Coons yüzeyini uydurarak keyfi eğimli renk taşıyan bir dörtgen verir - bükülmüş yollarda folyo ve metalik gradyanlar, SVG kökenli gradyan ağları ve aksi halde yaklaşıklaştırmak için çok sayıda küçük üçgen gerektirecek eğri kenarlı dörtgenler için kullanışlıdır. Her patch 12 kontrol noktası (sınır boyunca saat yönünde c1..c12 olarak sıralanan 24 X+Y Extended değeri; c1 / c4 / c7 / c10 dört köşededir, kalan 8 iç Bezier tutamacıdır) ve ardından 4 köşe rengi (4 * NumComponents Extended değeri) ekler, böylece Patches adımı 24 + 4 * NumComponents olur. Shading sözlüğü Type 4 ile aynı /BitsPerCoordinate 16 + /BitsPerComponent 8 + /BitsPerFlag 8 değerlerini taşır (Type 5'ten farklı olarak /VerticesPerRow yoktur). Üretilen her patch flag = 0 taşır (bağımsız patch); devam bayrakları 1 / 2 / 3 (kenar paylaşımı) bu kullanışlı overload'da sunulmaz. HotPDF v2.50.0'dan beri kullanılabilir
- Örneklenmiş LUT tint dönüşümlü Separation renk uzayı (PDF 1.3+ ISO 32000-1 8.6.6.4 + 7.10.2):
THotPDF.RegisterSeparationLUT(ColorantName, AlternateCS, Samples), çağıranların tam doğrusal olmayan tint -> alt-CS eğrisini Function Type 0 sözlüğünü elle kurmadan düz 8 bit (M-tuple) örnek bayt akışı olarak ifade edebilmesi için RegisterSampledFunction işlevini sarar. Renk geçişi doğrusal değilse LUT varyantını kullanın - PANTONE Hexachrome tarzı tint rampaları, gamma düzeltilmiş yoğunluk eğrileri, baskı karakterizasyonuyla eşleşen elle çizilmiş ton eğrileri, tam ICC profil mekanizması olmadan sRGB'den spot'a dönüşüm ICC LUT'ları; v2.45.0 RegisterSeparation giriş noktası doğrusal tek uçlu durumu hâlâ kapsar. AlternateCS DeviceGray, DeviceRGB veya DeviceCMYK kabul eder; işlevin enterpole edilebilir aralığı olması için Samples uzunluğu M değerinin pozitif katı olmalı ve en az 2 * M bayt içermelidir, ızgara noktası sayısı S Length(Samples) / M değerinden çıkarılır. PDF 1.7 /Order 1 uyarınca varsayılan interpolasyon doğrusaldır. Düzenli SetFillColorSpace + SetFillColor([tint]) hattında kullanılacak kayıtlı renk uzayı adını döndürür (Sep1, Sep2, ...). HotPDF v2.53.0'dan beri kullanılabilir
- Function Type 0 (Sampled) kaydı (PDF 1.3+ ISO 32000-1 7.10.2):
THotPDF.RegisterSampledFunction(Domain, Range, Size, BitsPerSample, Samples, [Order]), keyfi giriş-çıkış eşlemesini ızgara noktaları arasında enterpole edilen düzenli N boyutlu M boyutlu çıktı örnekleri ızgarası olarak ifade eden dolaylı bir /FunctionType 0 akışı bildirir. ICC profil mekanizması fazla ağırsa ama elle ayarlanmış renk LUT'u isteniyorsa kullanın - /TransferFunction (ExtGState /TR) için ton eğrileri, doğrusal Type 2 / aritmetik Type 4 yollarının ötesinde /Separation / /DeviceN için örneklenmiş tint dönüşümleri, yarım ton eşik eğrileri veya Function sözlüğü alan herhangi bir PDF yapısı. Domain 2N girdidir (giriş boyutu başına bir [min, max] çifti); Range 2M girdidir (çıktı boyutu başına bir çift); Size N ızgara noktası sayısıdır; BitsPerSample PDF 1.7 Table 38 uyarınca 1, 2, 4, 8, 12, 16, 24 veya 32 kabul eder; Samples ham bit paketli örnek akışıdır (her örnek içinde MSB-first, son bayt sıfır dolgusu dışında örnekler arasında padding yok, belirtimin örnek sırası kurallarına göre giriş 0 en hızlı değişir); Order varsayılan olarak 1'dir (doğrusal) ve PDF 1.7 Table 38 uyarınca 3 kabul eder (cubic-spline interpolasyon, v2.54.0'dan beri). HotPDF örnek bayt sayısını ceil(GridPoints * M * BitsPerSample / 8) değerine göre doğrular. Çağıranların Function sözlüğü beklenen her yere ekleyebilmesi için dolaylı THPDFStreamObject döndürür. HotPDF v2.52.0'dan beri kullanılabilir; cubic /Order 3 + uçtan uca çok girişli / çok çıkışlı kapsam v2.54.0'dan beri
- Tensor product patch mesh shading (PDF 1.3+ ISO 32000-1 8.7.4.5.7):
THotPDF.RegisterTensorProductPatchMesh(XMin, YMin, XMax, YMax, NumComponents, Patches), her biri tam 4 x 4 bikübik Bezier kontrol noktaları ızgarası p[i][j] ve köşe başına bir renkle tanımlanan tensor-product patch'lerden oluşan /ShadingType 7 akışı bildirir. 12 sınır noktasına ek olarak 4 açık iç kontrol noktası (p[1][1], p[1][2], p[2][2], p[2][1]) ekleyerek RegisterCoonsPatchMesh (Type 6) işlevini genişletir; bu, patch içi üzerinde Coons karışımlı uyumun ifade edebileceğinden daha ince denetim sağlar. SVG mesh-gradient gidiş-dönüşleri ve tensor-product Bezier yüzeyi gerektiren sanat işleri için kullanışlıdır. Her patch 16 kontrol noktası (belirtim Table 88 akış sırasına göre 32 X+Y Extended değeri: p[0][0..3], p[1][3], p[2][3], p[3][3], p[3][2..0], p[2][0], p[1][0], ardından 4 iç nokta p[1][1], p[1][2], p[2][2], p[2][1]) ve ardından 4 köşe rengi (4 * NumComponents Extended değeri, p[0][0] / p[0][3] / p[3][3] / p[3][0] konumlarında) ekler; böylece Patches adımı 32 + 4 * NumComponents olur. Üretilen her patch flag = 0 taşır (bağımsız patch). Bu sürümle birlikte ISO 32000-1 8.7.4.5 mesh shading ailesinin tamamı (Types 4 / 5 / 6 / 7) kapsanır. HotPDF v2.51.0'dan beri kullanılabilir
- Ek açıklama kenarlık stili ve Popup bağlantısı (PDF 1.7 12.5.4 / 12.5.6.14):
THPDFPage.SetAnnotationBorderStyle(Annot, Width, Style, DashPattern), seçilen THPDFAnnotBorderStyle (absSolid / absDashed / absBeveled / absInset / absUnderline) ile bir /BS sözlüğü ekler. THPDFPage.AddPopupAnnotationFor(ParentAnnot, Rect, Open), görüntüleyicinin konuşma balonu bağlantısını çizebilmesi için iki yönde bağlanan bir /Popup ek açıklaması üretir (parent /Popup -> popup, popup /Parent -> parent). Yeni THPDFPage.LastAnnotation özelliği, mevcut Add*Annotation yordamlarının imzasını değiştirmeden iki yardımcıdan birini besler. HotPDF v2.34.0'dan beri kullanılabilir
- Public-Key Security Handler (PDF 1.7 7.6.5):
THotPDF.EnablePubKeyEncryption(seed, KeyType, EncryptMetadata) + THotPDF.AddPubKeyRecipient(envelope), /Filter /Adobe.PubSec şifreleme sözlüğü üretir (/SubFilter /adbe.pkcs7.s4 V=1 RC4-40 için / /adbe.pkcs7.s5 V=2 RC4-128 / V=4 AESV2 için). Çağıran 20 baytlık rastgele seed ve alıcı başına bir PKCS#7 envelopedData ikili blob'u sağlar (Windows CryptoAPI, OpenSSL veya pycryptodome ile dışarıda oluşturulur). HotPDF dosya şifreleme anahtarını algorithm 9 üzerinden türetir (seed'in her envelope ile birleştirilmiş SHA-1 değeri) ve AES-128 / RC4 akışları için standart nesne başına anahtar türetmeyi yeniden kullanır. HotPDF v2.33.0'dan beri kullanılabilir
Ayrıca bkz.
|