PDF filtre desteği Genel bakış PDF stream'leri ve gömülü görüntüler, kodlamalarını filtre adlarıyla belirtir. HotPDF; belge üretirken veya harici içerik çözerken ağırlıklı olarak aşağıdaki filtre aileleriyle çalışır. Yaygın filtreler
- FlateDecode: Üretilen stream'ler için ana sıkıştırma filtresi ve birincil zlib tabanlı çözme 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ü verisi için kullanılır
- CCITTFaxDecode: Yüklenen Group 3 ve Group 4 monokrom görüntü stream'leri; standart DecodeParms girdileri üzerinden tek ve iki boyutlu satırları, T.4/T.6 sıkıştırılmamış uzantıları, EOFB işlemesini, bayt hizalamayı, çıktı kutupluğunu ve sınırlı hasarlı satır kurtarmayı destekler
- ASCIIHexDecode / ASCII85Decode / RunLengthDecode: HotPDF v2.4.0'dan beri HPDFTypes.pas'ta sunulan kodlayıcı yardımcıları (
_ASCIIHexEncode, _ASCII85Encode, _RunLengthEncode). Keyfi ikili içeriği 7 bitlik kanallar için sarmalarken veya açık PDF 1.7 7.4 gidiş-dönüş desteği için kullanışlıdır
- JBIG2Decode / JPXDecode: PDF 1.7 7.4.7 / 7.4.9 tarafından tanımlanan filtre adları. HotPDF; JPXDecode görüntü stream'lerini ve JPEG 2000 dosyalarını OpenJPEG destekli JPEG2000 çözücüsüne yönlendirir, ardından sonucu çağıranın seçtiği sıkıştırmayla gömer. İki düzeyli JBIG2 çıktısı ve yüklenen JBIG2Decode görüntü yolları; sembol sözlüğü, global segment, kayıplı düzey ve siyah nokta filtreleme kontrolleri dahil yerel JBIG2 kodlayıcı-çözücü hattını kullanır
Pratik notlar
- Her filtre tek bir genel API üzerinden sunulmaz; bazılarına özel görüntü veya stream yardımcı birimleri üzerinden ulaşılır
- Üretilen PDF içeriği için THotPDF.Compression merkezi kullanıcı ayarı olarak kalır
- Harici veri yüklerken uygulanacak 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'e bakın
- Ayrılmış crypt-filter ilkeleri;
ConfigureCryptFilterDefaults üzerinden dizeler, normal stream'ler ve gömülü dosya stream'leri için bağımsız seçilebilir. Parola güvenliği StdCF veya Identity kabul eder; genel anahtar güvenliği DefaultCryptFilter veya Identity kabul eder. SetStreamCryptFilter, var olan bir çözme hattını bozmadan açık bir öndeki Crypt filtresini ekler veya temizler. Stream başına geçersiz kılmalar, şifreleme sözlüğü /V 4 ve üzerindeunu gerektirir
- Şifreli yük sarmalayıcıları; sıradan sayfa stream'lerini görünür tutarken gömülü dosya üst verisini ve baytlarını bir
EFOpen crypt filter ile korur. HotPDF v2.715.0'dan beri açık yüklenen belge incelemesi ve kilidi açma API'leri mevcuttur
- Parolayla korunan ek stream'leri
/EFF kullanır ve /EFF, /StmF'den farklı olduğunda açık bir Crypt filtresi alır. Genel anahtarla şifrelenen açık stream filtreleri, stream'e özgü alıcı zarfı gerektirdikleri için hata hâlinde kapanır
- Yüklenen belgeler; özgün
/CF, /StrF, /StmF ve /EFF ilkelerini ortaya koyar: büyük/küçük harfe duyarlı harici adlandırılmış filtreler, açık ya da atlanmış /CFM /None, kimlik doğrulama olayları ve THPDFCryptFilterInfo üzerinden etkin anahtar uzunluğu dahil. Standard-işleyici V2 filtre uzunlukları bayt olarak okunur, genel anahtar V2 filtre uzunlukları bit olarak okunur ve yalnızca 40 bit ile 128 bit V2 anahtarları kabul edilir. Düz metin nesne stream kapsayıcıları, paketlenmiş üye dizelerini yine /StrF üzerinden çözer; şifreli kapsayıcılar ikinci üye çözmeyi önler. Artımlı güncellemeler yüklenen ilkeyi korur. HotPDF v2.675.0'dan beri mevcut
- Etkileşimli form alanları, okuyucunun çizdiği Widget ek açıklamaları olarak yazılır; 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 metotları olarak sunulur
- DeviceCMYK çıktısı
THPDFPage.SetCMYKColor / SetCMYKFillColor / SetCMYKStrokeColor üzerinden sunulur; ICC yönetimli renk uzayları HotPDF v2.7.0'dan beri THotPDF.RegisterICCProfile ile kaydedilir ve SetFillColorSpace / SetStrokeColorSpace + SetFillColor / SetStrokeColor ile uygulanır
- Kaydetmeden önce
THotPDF.UseXRefStream'i true yapmak; metinsel xref / trailer / startxref dizisi yerine tek bir /Type /XRef FlateDecode-sıkıştırılmış çapraz başvuru stream'i yazar (PDF 1.7 7.5.8). HotPDF v2.8.0'dan beri mevcut
- Catalog'a bir XMP
/Type /Metadata /Subtype /XML stream'i eklemek için THotPDF.EnableXMPMetadata'yı true yapın (PDF 1.7 14.3.2); Info sözlüğü alanlarından otomatik kurulur ya da CustomXMP ile elle yazılmış bir paket sağlayın. HotPDF v2.9.0'dan beri mevcut
- Metot başına PDF sürüm kapısı (HotPDF v2.24.0'dan beri). v2.4.0+ ile gelen her özellik metodu yazmadan önce
RequirePDFVersion'a danışır; StrictVersionLock=false iken (varsayılan) belge Version'u sessizce özelliğin gerektirdiği en düşük sürüme yükseltilir, StrictVersionLock=true iken çağrı reddedilir ve kaydedilen dosya seçilen 1.3 / 1.4 / 1.5 / 1.6 / 1.7 referans spec'ine harfiyen uyar.
- FlateDecode ile sıkıştırılmış görüntü verisi için PNG ve TIFF öngörücü kodlayıcıları (PDF 1.7 7.4.4.4):
_PNGPredictorEncode libpng en düşük-mutlak-fark filtre buluşsalını (Predictor=15), _TIFFPredictor2Encode yatay farklılaştırmayı (Predictor=2) uygular. HotPDF v2.10.0'dan beri mevcut
- Etiketli PDF giriş noktaları (PDF 1.7 14.7-14.8):
THotPDF.Lang Catalog'daki /Lang'i doldurur; EnableTaggedPDF /MarkInfo <</Marked true>> ve bir iskelet /StructTreeRoot yazar; yeni THPDFPage.BeginMarkedContent / BeginMarkedContentMCID / EndMarkedContent metotları BMC / BDC / EMC içerik stream operatörlerini yazar. HotPDF v2.11.0'dan beri mevcut
- Eksenel ve radyal gradyanlar (PDF 1.7 7.10 / 8.7):
THotPDF.RegisterAxialGradient / RegisterRadialGradient; eksiksiz Function Type 2 / Shading Type 2-3 / Pattern Type 2 yığınını kurar ve kararlı bir desen adı döndürür; THPDFPage.SetFillPattern / SetStrokePattern bunu sayfaya takar. Başlangıç / bitiş renginin bileşen sayısı DeviceGray (1) / DeviceRGB (3) / DeviceCMYK (4) seçer. HotPDF v2.13.0'dan beri mevcut; Function Type 3 çok duraklı gradyanlar v2.18.0'dan beri RegisterMultiStopAxialGradient ile, v2.686.0'dan beri RegisterMultiStopRadialGradient ile sunulur
- Satır içi görüntüler (PDF 1.7 8.9.7),
THPDFPage.DrawInlineImage ile; Filter verilmediğinde ham baytlar otomatik olarak ASCIIHex ile sarılır ve içerik stream'i 7-bit-temiz kalır. HotPDF v2.18.0'dan beri mevcut
- OutputIntent'ler (PDF 1.7 14.11),
THotPDF.AddOutputIntent ile; her çağrı, kayıtlı bir ICC profiline başvuran isteğe bağlı /DestOutputProfile'lu bir /Type /OutputIntent sözlüğünü Catalog'a ekler. HotPDF v2.18.0'dan beri mevcut
- AcroForm görünüm stream'i otomatik üretimi (PDF 1.7 12.5.5 / 12.7.3.3 / 8.10): etkileşimli form alanları eklemeden önce
THotPDF.AutoFormAppearances'i true yapın; HotPDF her widget'ın /AP /N girdisi için (düğmelerde Yes / Off alt sözlükleri) bir /Subtype /Form Form XObject'i önceden kurar, AcroForm /DR varsayılan kaynaklarını Helvetica / ZapfDingbats dolaylı yazı tipi sözlükleriyle doldurur ve çizicilerin gömülü stream'lere uyması için /NeedAppearances'i false'a çevirir. HotPDF v2.28.0'dan beri mevcut
- ViewerPreferences /ViewArea ve /ViewClip (PDF 1.4 12.2 Tablo 152) artık
THotPDF.ViewArea / THotPDF.ViewClip özellikleriyle sunulur (eşleşen vpViewArea / vpViewClip küme üyeleriyle). Her ikisi de THPDFPageBoundary değerlerini (MediaBox / CropBox / BleedBox / TrimBox / ArtBox) kabul eder ve HotPDF'in dört PDF 1.4 sayfa sınırı ViewerPreferences kapsamını tamamlar. HotPDF v2.29.0'dan beri mevcut
- Sayfa geçişleri (PDF 1.1 / 1.5 12.4.4):
THPDFPage.SetPageTransition, sayfada bir /Trans sözlüğü yazar; böylece /PageMode /FullScreen kipindeki PDF okuyucular gezinmeyi animasyonla gösterir. PDF 1.1 stilleri (Split, Blinds, Box, Wipe, Dissolve, Glitter, R) ve PDF 1.5 stilleri (Fly, Push, Cover, Uncover, Fade) THPDFTransitionStyle enumerasyonuyla sunulur; eşlik eden /Dm, /M ve /Di alt seçenekleri de sunulur. THPDFPage.SetPageDuration, saniye cinsinden /Dur otomatik ilerleme gecikmesini yazar. HotPDF v2.30.0'dan beri mevcut
- Sayfa düzeyi saydamlık grubu (PDF 1.4 11.6.6 / 7.5.5):
THPDFPage.SetTransparencyGroup, çizicilerin alfa taşıyan içeriği öngörülebilir biçimde bileşiklemesi için sayfaya bir /Group sözlüğü ekler (/Type /Group /S /Transparency). Aygıt renk uzayını THPDFGroupColorSpace enumerasyonuyla seçin (DeviceGray / DeviceRGB / DeviceCMYK ya da atlayın) veya 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ı birleştiriciyi yönlendirir; THPDFPage.ClearTransparencyGroup daha önce eklenmiş girdiyi kaldırır. HotPDF v2.32.0'dan beri mevcut
- Artımlı güncelleme (PDF 1.7 ISO 32000-1 7.5.6):
THotPDF.BeginIncrementalUpdate(SourceFile) var olan bir PDF'i yalnızca ekleme kipinde yükler; sonraki CreateIndirect* çağrıları yeni nesneleri otomatik kirli işaretler, THotPDF.MarkDirty(Obj) ise önceden var olan yüklenen nesneleri yeniden yazılmak üzere etiketler. THotPDF.SaveIncrementalUpdate(TargetFile), özgün kaynak baytlarını birebir yazar, yalnızca kirli nesneleri nesne numaralarını koruyarak ekler, yeni bir xref alt bölümü yazar ve önceki xref'i işaret eden /Prev taşıyan bir trailer'la bitirir. İmzalı bir belgeye sonraki imza alanları eklemek için, önceki imzaları geçersiz kılmadan (özgün baytların hiçbiri değişmediğinden /ByteRange özetleri geçerli kalır) var olan AddSignedSignatureField + PreparePDFForSigning + InsertSignatureHex hattıyla birleştirin. HotPDF v2.35.0'dan beri mevcut
- Gömülü TrueType yazı tipi adı normalleştirme: HotPDF gömülü TrueType ad tablosunu okur ve
/BaseFont, /FontDescriptor /FontName, /FontFamily ile alt CID yazı tipi adlarını, yazı tipi programının PostScript adıyla hizalar. Bu, PDF yazı tipi sözlüğü ile gömülü TTF yükü arasındaki uyuşmazlığın neden olduğu Adobe Acrobat Font Capture hatalarını önler. HotPDF v2.35.1'den beri mevcut
- TrueType yazı tipi alt kümeleme (PDF 1.7 ISO 32000-1 9.6.4 / 9.8.2):
BeginDoc'tan önce THotPDF.EnableFontSubsetting'i true yapın; HotPDF gömülü TrueType yükünü, belgenin gerçekte kullandığı glifleri içerecek biçimde yeniden kurar. Tipik Latin belgeleri gömülü yazı tipi ağırlığında ~%90 küçülme görür (1 MB Arial -> tek satırlık "Hello, world." üzerinde ~70 KB). Bileşik glif bağımlılıkları özyinelemeli izlenir, GID numaralandırması korunur (böylece var olan Type0 / Identity-H içerik stream'leri çalışmaya devam eder) ve yeni /BaseFont, spec'in zorunlu kıldığı altı harfli "+" ekli öneki otomatik kazanır (örn. /BaseFont /AAAAAA+ArialMT). Varsayılan olarak kapalıdır; düzenleme iş akışları için tam yazı tipi gömmeyi korumak amacıyla isteğe bağlı olarak açın. HotPDF v2.36.0'dan beri mevcut
- Compact Font Format (CFF) alt kümeleyici (PDF 1.7 ISO 32000-1 9.7.4 / 9.9): OpenType-CFF (.otf, sfntVersion
OTTO) ile Type 1 / Type 1C yazı tipleri için TrueType alt kümeleyicinin eşidir. Birimin dışa açtığı HPDFSubsetCFF(CFFBytes, KeepGlyph) işlevi, CharStrings INDEX'ini yeniden kurar; tutulmayan glifler en kısa 1 baytlık endchar saplamasıyla değiştirilir ve GID numaralandırması bayt bayt korunur. HotPDF v2.37.0'dan beri mevcut.
- OpenType-CFF (.otf) gömme yolu
StoreFont'a bağlanmıştır (PDF 1.6+ 9.7.4 Tablo 117). GDI ile yüklenen yazı tipi ikili verisi bir sfnt OTTO kapsayıcısı olduğunda, HotPDF gömülü 'CFF ' alt tablosunu HPDFSubsetOTFContainer üzerinden alt kümeler, yazı tipi programını /FontFile3 /Subtype /OpenType ile yazar ve alt yazı tipi sözlüğünü /CIDFontType2 yerine /Subtype /CIDFontType0 ile yazar. TrueType yazı tipleri davranış değişikliği olmadan var olan /FontFile2 + /CIDFontType2 yolundan devam eder. HotPDF v2.38.0'dan beri mevcut.
- CFF subroutine alt kümelemesi uçtan uca (PDF 1.7 9.7.4 §6 / Adobe Tech Note #5177 §3.1): CFF alt kümeleyici artık kullanılmayan girdileri HEM Global Subr INDEX'ten (CFF ikili verisinde String INDEX'in hemen ardından gelir) HEM Local Subr INDEX'ten (Private DICT altında yuvalanmıştır; Top DICT operatörü 18 + Private DICT operatörü 19 ile ulaşılır) ayıklar. Tek bir sabit nokta kapanışı,
callsubr (op 0x0A) ve callgsubr (op 0x1D) zincirlerini geçişli olarak izler; böylece bir Local Subr'ı çağıran, o Global Subr'ı çağıran, o da başka bir Local Subr'ı çağıran CharString tek geçişte yakalanır. Kullanılmayan her girdi 1 baytlık bir return saplamasıyla değiştirilir ve INDEX, sondaki boşluk sıfırla doldurularak yerinde yeniden yazılır. Bu davranış, herkese açık HPDFSubsetCFF ve HPDFSubsetOTFContainer yardımcılarıyla sunulur; daha alt düzey CFF tarayıcıları dahili kalır. HotPDF v2.39.0'dan beri mevcut.
- CID anahtarlı CFF alt kümelemesi (PDF 1.7 ISO 32000-1 9.7.4 / Adobe Tech Note #5176 §18-19): CFF alt kümeleyici artık CID anahtarlı bir OpenType-CFF yazı tipini işaretleyen Top DICT
ROS operatörünü (12-30) tanır ve her biri kendi Private DICT + Local Subr INDEX'ini taşıyan Font DICT'lerinin FDArray (12-36) INDEX'ini gezer. FDSelect (12-37) glif-to-FD haritası bayt bayt korunur. Subroutine kapanış taraması, tutulan her CharString'in FD bağlamını izler; böylece FD #5'teki bir glif yalnızca FD #5'teki Local Subr'ları işaretler — global subr'lar FD'ler arasında paylaşılmaya devam eder. Her FD'nin Local Subr INDEX'i yerinde yeniden yazılır; kullanılmayan girdiler 1 baytlık return saplamalarına indirgenir. CJK / Indic / Arapça OTF yazı tipleri (Adobe Fan/Gothic/Heiti/Ming/Myungjo/Song Std, Kozuka Pr6N, Source Han Sans vb.) artık olduğu gibi gömmek yerine eksiksiz alt kümeleme hattından geçer. HotPDF v2.40.0'dan beri mevcut.
- Nesne stream'leri (PDF 1.5 ISO 32000-1 7.5.7):
UseXRefStream'e ek olarak THotPDF.UseObjectStreams'i true yapın; SaveToStream uygun dolaylı nesneleri (stream'ler, şifreleme sözlüğü ve trailer'ın işaret ettiği Catalog ile Info sözlükleri hariç her şey) bir veya daha fazla /Type /ObjStm kapsayıcı stream'ine paketler. Çapraz başvuru stream'i, paketlenen nesnelere type-2 girdiler üzerinden atıfta bulunur (alan-2 = ana ObjStm nesne numarası; alan-3 = stream içindeki girdi indeksi). Çok sayıda küçük sözlük içeren PDF'lerde dosya boyutunu belirgin biçimde keser (çok sayfalı belgeler, ek açıklamalar, AcroForm widget'ları, yapı ağacı öğeleri, Optional Content katmanları) — yalnızca grafik içeren 30 sayfalık bir duman testi 14502'den 8488 bayta küçülür (%41,5 küçük). UseXRefStream kapalıyken (type-2 girdiler spec uyarınca metinsel xref tablosunda temsil edilemez) veya Version PDF 1.5'in altındayken sessizce false'a düşer. HotPDF v2.41.0'dan beri mevcut.
- Yumuşak maske görüntüsü / SMask (PDF 1.4 ISO 32000-1 8.9.5.4):
THotPDF.AddImageWithSMask(Width, Height, RGB, Alpha); renkli bir görüntü XObject'i artı 8 bitlik DeviceGray yumuşak maske görüntü XObject'i yazar ve /SMask çapraz başvurusunu otomatik bağlar; böylece her piksel, eski /ImageMask yolunun ikili açık/kapalı sınırı yerine tam kanal başına saydamlık taşıyabilir. Kullanışlı aşırı yükleme THotPDF.AddImageWithSMask32(Bitmap32), tek çağrılı alfa-PNG gömmesi için RGB ve alfa düzlemlerini 32 bitlik BGRA bir TBitmap'ten ayıklar. AddImageWithTransparency ve AddImageWithTransparency32 aynı iş akışını görüntü odaklı adlandırmayla sunar. Her iki çağrı noktası da RequirePDFVersion(pdf14) kapısından geçer; böylece katı kipte 1.3 çıktısı uyumlu kalır. HotPDF v2.42.0'dan beri mevcut
- Görüntü maske kullanışlı yardımcıları:
AddImageAsMask ikili bir /ImageMask yazar, AddImageWithMask oluşan maskeyi /Mask üzerinden renkli bir görüntüye bağlar; ikisi de THPDFPage.ShowImage için normal görüntü indeksleri döndürür
- Görüntü başına sıkıştırma kontrolleri:
AddImageWithJpegQuality JpegQuality'yi değiştirmeden tek çağrıda JPEG kalitesi uygular; AddMonochromeImageAuto ve icAutoMono 1 bitlik bitmap girdisi için Flate, CCITT Group 4 veya JBIG2 seçer
- Renksiz döşeme deseni boyaması (PDF 1.7 ISO 32000-1 8.6.6.1):
THotPDF.RegisterTilingPattern v2.19.0'dan beri hem /PaintType 1 (renkli) hem /PaintType 2 (renksiz) yazıyor; ama eşleşen sayfa tarafı operatör dizisi yalnızca renkli varyant için doğruydu. Altı yeni THPDFPage metodu — SetFillPatternRGB / SetStrokePatternRGB / SetFillPatternGray / SetStrokePatternGray / SetFillPatternCMYK / SetStrokePatternCMYK — artık renksiz yolu sürüyor: eşleşen [/Pattern /BaseCS] renklendirme renk uzayını sayfanın Resources/ColorSpace sözlüğüne otomatik kaydediyor ve spec'in zorunlu kıldığı tint_components /Pn scn dizisini yazıyor. Kiremitin kendi rengini taşıdığı renkli varyant için özgün SetFillPattern / SetStrokePattern kullanın. HotPDF v2.43.0'dan beri mevcut.
- Eksiksiz döşeme deseni çizimi artık desen matrisini, üst içerik stream'inin varsayılan koordinat sistemine göre uygular; üç
/TilingType yerleşim kuralının hepsini uygular, negatif /XStep ve /YStep destekler, her hücreyi izole bir yol ile başlatır, renksiz desenin temel tint'ini hem dolgu hem kontur işlemlerine uygular ve sınırlı iç içe desen yürütmeyi korur. Genişletilmiş RegisterTilingPattern aşırı yüklemesi ile THPDFTilingPatternBuilder.TilingType / Matrix property'leri, üretilen PDF'ler için aynı doğrulanmış kontrolleri sunar. HotPDF v2.542.0'dan beri mevcut
- CIELab renk uzayı (PDF 1.3+ ISO 32000-1 8.6.5.3):
THotPDF.RegisterLabColorSpace(Xw, Yw, Zw, aMin, aMax, bMin, bMax), satır içi bir [/Lab << /WhitePoint /BlackPoint /Range >>] renk uzayı dizisi kurar; bunu otomatik üretilmiş bir ad altında saklar (Lab1, Lab2, ...) ve olağan THPDFPage.SetFillColorSpace / SetStrokeColorSpace + SetFillColor([L, a, b]) / SetStrokeColor([L, a, b]) hattıyla kullanılmak üzere o adı döndürür. ICC baskı iş akışları için bir D50 ışık kaynağı [0.9505, 1.0, 1.089], sRGB eşdeğeri ekran için bir D65 ışık kaynağı [0.95047, 1.0, 1.08883] verin; sonra L* [0..100] ve a*, b* seçilen aralıkta (tipik [-128..127]) olacak biçimde boyayın. HotPDF v2.44.0'dan beri mevcut.
- Spot renkler için Separation renk uzayı (PDF 1.3+ ISO 32000-1 8.6.6.4):
THotPDF.RegisterSeparation(ColorantName, AlternateCS, TintC1); dahili olarak kurulan doğrusal bir Function Type 2 tint dönüşümünü süren, tek tint işlenenli [0..1] aralıklı tek bileşenli bir spot mürekkep bildirir. Döndürülen adı (Sep1, Sep2, ...) olağan SetFillColorSpace / SetStrokeColorSpace + SetFillColor([tint]) / SetStrokeColor([tint]) hattıyla kullanın. AlternateCS DeviceGray, DeviceRGB veya DeviceCMYK kabul eder; TintC1 tint = 1.0'daki alt-CS bileşenlerini sağlar. Pantone ve boşluklu 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çışlar. HotPDF v2.45.0'dan beri mevcut.
- AcroForm çok satırlı ve comb metin görünüm stream'leri (PDF 1.7 ISO 32000-1 12.7.4.3):
THotPDF.AutoFormAppearances açıkken, Flags içinde ffMultiline taşıyan metin alanları; kelime sarmalı bir /AP /N Form XObject'i alır (Td + T* + /TL satır aralığı düzeni; CR / LF / CRLF ayraçlarına uyar ve görünen satır sayısında kırpılır). Flags içinde pozitif bir MaxLen ile birlikte ffComb taşıyan alanlar, her karakteri glif başına mutlak bir Tm matrisiyle kendi eşit genişlikli hücresine çizer. v2.28.0'daki tek satır düzen, bu bayrakları taşımayan alanlar için bayt bayt korunur. Başlangıç değerindeki uluslararası karakterler hâlâ okuyucunun /NeedAppearances yeniden hesaplama yoluna düşer; tam gömülü-CID-yazı tipi görünüm üretimi ileriki işler arasında kalır. HotPDF v2.46.0'dan beri mevcut.
- "AcroForm /AP Unicode yazı tipi (PDF 1.7 ISO 32000-1 12.7.2 + 12.7.4.3):
THotPDF.SetFormUnicodeFontDict(LogicalName, FontDict), çağıranın sağladığı bir Type 0 / CIDFontType2 + Identity-H bileşik yazı tipini AcroForm /DR/Font varsayılan kaynaklar sözlüğüne kaydeder. Kaydedildikten sonra AcroForm düzeyindeki /DA, her Tx widget'ının /DA'sı ve ASCII olmayan Tx başlangıç değerleri için AutoFormAppearances tarafından üretilen /AP /N stream'i mantıksal ada geçer; Form XObject'in /Resources/Font alt sözlüğü de aynı dolaylı yazı tipine başvurur; böylece AP, çizim zamanında /DR çözümüne bağlı olmadan kendi kendine yeterlidir. Eş yardımcı THotPDF.CreateIndirectFontDict, dolaylı bir PDF nesnesi olarak kayıtlı taze boş bir THPDFDictionaryObject döndürür; böylece çağıranlar, dahili yardımcılara dokunmadan özel yazı tipi sözlükleri (ya da "N G R" dolaylı serileştirmesi gerektiren başka sözlükler) kurabilir. v2.46.0'daki yalnızca-ASCII /Helv davranışına dönmek için boş LogicalName ve nil FontDict geçirin. ASCII Tx alanları, v2.46.0 / v2.55.0 ile bayt düzeyinde aynı çıktıyla /Helv kullanmaya devam eder. Çok satırlı + comb ASCII olmayan /AP ile RTL bidi şekillendirme (UAX #9 + Arapça bağlamsal birleştirme) ileriki işler olarak kalır. HotPDF v2.56.0'dan beri mevcut; ffMultiline ASCII olmayan /AP desteği (Td / T* / /TL satır aralığı ve CJK duyarlı kelime sarmasıyla satır başına UTF-16BE hex Tj) v2.57.0'dan; ffComb ASCII olmayan /AP desteği (CID başına eşit genişlikli mutlak Tm hücreleri + UTF-16 surrogate çift işlemeli kod noktası başına tek hücreli Tj) v2.58.0'dan; sağdan sola yön için THotPDF.FormUnicodeRTL özelliği (/AP Tj hex'inde UTF-16 sırasını ters çevirirken /V'yi mantıksal sırada tutar; çağıran Arapçayı U+FB50..U+FDFF + U+FE70..U+FEFF Unicode sunum biçimlerine önceden şekillendirir; tam UAX #9 + otomatik GSUB şekillendirme bekleniyor) v2.59.0'dan beri mevcut.'''"'''))
- 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'lanan ffRichText /Ff bit 26 bayrağı ile birlikte, /RV'yi ayrıştırmayan okuyucuların kullandığı düz metin /V + /DV yedeğini de taşıyan bir metin widget'ı yazar. Acrobat ve Foxit, RichText biti açıkken doğrudan /RV'den çizer ve okuyucunun kurulu Unicode yazı tiplerinden yazı tipi yedekleri alır; böylece çok baytlı içerik (CJK / Kiril / Arapça / aksanlı Latin), HotPDF'in /DR Resources'a CID yazı tipi gömmesi gerekmeden doğru görüntülenir. Hem /V hem /RV, çok baytlı girdiyi otomatik algılar ve gerektiğinde UTF-16BE hex dize kodlamasına geçer (FE FF BOM + big-endian kod birimleri). HotPDF'in kendi /AP yolu için CID-yazı tipi görünüm stream'i üretimi ileriki işler olarak kalır; zengin metinden anlayan okuyuculara gerek yoktur. HotPDF v2.55.0'dan beri mevcut.
THotPDF.RegisterDeviceN(ColorantNames, AlternateCS, TintC1Matrix), RegisterSeparation’i tek spot mürekkepten N’ye genelleştirir. Tint dönüşümü, PostScript hesaplayıcılı bir Function Type 4’tür; verilen N x M matris üzerinde doğrusal ağırlıklı harman yazar (n satırı m sütunu, yalnız renklendirici n 1.0 iken AlternateCS m kanalına katkısıdır). Olağan SetFillColorSpace + SetFillColor([t0, t1, ..., t_{N-1}]) hattını süren bir renk uzayı adı döndürür (DevN1, DevN2, ...). AlternateCS DeviceGray, DeviceRGB veya DeviceCMYK kabul eder; boşluklu mürekkep adları PDF 1.7 7.3.5 uyarınca #20 olarak kaçışlanır; özel None adı kullanılmayan renklendirici yuvasını işaretler. HotPDF v2.47.0’dan beri mevcut.
- Serbest biçimli Gouraud gölgeli üçgen örgü (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 ile bir /ShadingType 4 stream'i bildirir, sayfanın Resources/Pattern sözlüğünde satır içi bir Pattern Type 2 girdisine sarar ve olağan SetFillPattern / SetStrokePattern hattı için otomatik üretilmiş desen adını döndürür (Sh1, Sh2, ...). Her köşe; 1 baytlık bayrak (bağımsız üçgenlerde her zaman 0) + 2 big-endian X baytı + 2 big-endian Y baytı + NumComponents adet 8 bitlik renk bileşeni olarak paketlenir. NumComponents argümanı 1 (DeviceGray), 3 (DeviceRGB) veya 4 (DeviceCMYK) kabul eder; her köşe (X, Y, c1...cN) sırasıyla Vertices'e 2 + NumComponents Extended değer katkıda bulunur; köşe sayısı 3'ün katı olmalıdır. /Decode, 16 bitlik koordinatları [XMin, XMax] x [YMin, YMax]'a ve renk bileşenlerini [0, 1]'e geri eşler. Type 5 (kafes), Type 6 (Coons yaması) ve Type 7 (tensor çarpımı) örgü shading'ler ileriki işler olarak kalır. HotPDF v2.48.0'dan beri mevcut.
THotPDF.RegisterLatticeFormGouraudShading(XMin, YMin, XMax, YMax, NumComponents, VerticesPerRow, Vertices); köşeleri M satır x N sütunluk bir kafeste dizan eden ve çizicinin komşu her satır çiftini otomatik üçgen şeridine dönüştürmeyi sağlayan bir /ShadingType 5 stream’i bildirir. RegisterFreeFormGouraudShading’den (Type 4) farklı olarak köşe başına bayrak baytı yoktur; /BitsPerFlag shading sözlüğünde bulunmaz ve her köşe yalnızca 4 + NumComponents bayt kaplar (2 big-endian X + 2 big-endian Y + N renk bileşeni). Shading sözlüğü bunun yerine zorunlu /VerticesPerRow N girdisini taşır. Düzenli bir örnek ızgarasında bulunan kaynak veriler için kullanın (arazi, FEA sonuçları, bilimsel ısı haritaları) — uygulama köşeleri satır öncelikli sağlar ve çizim hattı üçgen şeridi topolojisini otomatik kurar. VerticesPerRow en az 2 olmalı ve toplam köşe sayısı, en az iki satır olmak koşuluyla VerticesPerRow’un katı olmalıdır. HotPDF v2.49.0’dan beri mevcut.
THotPDF.RegisterCoonsPatchMesh(XMin, YMin, XMax, YMax, NumComponents, Patches); her biri dört kübik Bezier eğrisiyle sınırlanan ve her köşede bir renk taşıyan Coons yamalarından oluşan bir /ShadingType 6 stream’i bildirir. Çizici, Coons yüzeyini dört kenar arasında uydurur; bu, keyfi biçimde kıvrımlı renk taşıyan bir dörtgen verir — kıvrımlı yollarda varak ve metalik gradyanlar, SVG kaynaklı gradyan örgüleri ve aksi hâlde yaklaşmak için pek çok küçük üçgen gerekecek kıvrımlı kenarlı her dörtgen için kullanışlıdır. Her yama 12 kontrol noktası katkıda bulunur (sınır çevresinde c1..c12 saat yönünde sıralı, c1 / c4 / c7 / c10 dört köşede ve kalan 8’i iç Bezier kulpları olan 24 X+Y Extended değeri) ve ardından 4 köşe rengi gelir (4 * NumComponents Extended değeri); böylece Patches adım boyu 24 + 4 * NumComponents’tir. Shading sözlüğü, Type 4 ile aynı /BitsPerCoordinate 16 + /BitsPerComponent 8 + /BitsPerFlag 8 değerlerini taşır (ve Type 5’in aksine /VerticesPerRow bulunmaz). Yazılan her yama flag = 0 taşır (bağımsız yama); devam bayrakları 1 / 2 / 3 (kenar paylaşımı) bu kullanışlı aşırı yüklemede sunulmaz. HotPDF v2.50.0’dan beri mevcut.
- Örneklenmiş LUT tint dönüşümü Separation renk uzayı (PDF 1.3+ ISO 32000-1 8.6.6.4 + 7.10.2):
THotPDF.RegisterSeparationLUT(ColorantName, AlternateCS, Samples), RegisterSampledFunction’ı sarar; böylece çağıranlar eksiksiz doğrusal olmayan tint -> alt-CS eğrisini, bir Function Type 0 sözlüğünü elle kurmadan 8 bitlik (M-demet) örneklerden oluşan düz bir bayt akışı olarak ifade edebilir. Renk geçişi doğrusal değilken LUT varyantını kullanın — PANTONE Hexachrome tarzı tint rampaları, gamma düzeltilmiş yoğunluk eğrileri, bir baskı karakterizasyonuyla eşleşen elle çizilmiş ton eğrileri, tam ICC profil mekanizması olmadan sRGB-to-spot 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; Samples uzunluğu, işlevin enterpolasyonlu bir aralığı olması için en az 2 * M bayt olacak şekilde M’nin pozitif katı olmalıdır ve ızgara noktası sayısı S, Length(Samples) / M’den çıkarılır. PDF 1.7 /Order 1 uyarınca varsayılan doğrusal enterpolasyondur. Olağan SetFillColorSpace + SetFillColor([tint]) hattıyla kullanılmak üzere kayıtlı renk uzayı adını döndürür (Sep1, Sep2, ...). HotPDF v2.53.0’dan beri mevcut.
- Function Type 0 (Sampled) kaydı (PDF 1.3+ ISO 32000-1 7.10.2):
THotPDF.RegisterSampledFunction(Domain, Range, Size, BitsPerSample, Samples, [Order]); keyfi bir girdiden çıktıya eşlemeyi, ızgara noktaları arasında enterpolasyon yapılan, M boyutlu çıktı örneklerinden oluşan düzenli bir N boyutlu ızgara olarak ifade eden dolaylı bir /FunctionType 0 stream'i bildirir. ICC profil mekanizmasının fazla olduğu ama elle ayarlanmış bir renk LUT'unun istendiği yerlerde 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, halftone eşik eğrileri veya Function sözlüğü kabul eden başka herhangi bir PDF yapısı. Domain 2N girdidir (her girdi boyutu için bir [min, max] çifti); Range 2M girdidir (her çıktı boyutu için bir çift); Size N adet ızgara noktası sayısıdır; BitsPerSample PDF 1.7 Tablo 38 uyarınca 1, 2, 4, 8, 12, 16, 24 veya 32 kabul eder; Samples, ham bit paketli örnek stream'idir (her örnek içinde MSB-önce, son bayt sıfır dolgusu ötesinde örnekler arasında dolgu yok; girdi 0, spec örnek sırası kurallarına göre en hızlı değişir); Order varsayılan 1 (doğrusal) olup PDF 1.7 Tablo 38 uyarınca 3'ü (kübik spline enterpolasyonu; v2.54.0'dan beri) kabul eder. HotPDF örnek bayt sayısını ceil(GridPoints * M * BitsPerSample / 8) ile doğrular. Çağıranlar Function sözlüğünün beklendiği her yere ekleyebilmesi için dolaylı THPDFStreamObject döndürür. HotPDF v2.52.0'dan beri mevcut; kübik /Order 3 + uçtan uca çok girdili / çok çıktılı kapsam v2.54.0'dan beri.
- Tensor çarpımı yaması örgü shading (PDF 1.3+ ISO 32000-1 8.7.4.5.7):
THotPDF.RegisterTensorProductPatchMesh(XMin, YMin, XMax, YMax, NumComponents, Patches); her biri, bicubic Bezier kontrol noktalarının p[i][j] tam 4 x 4 ızgarası artı köşe başına bir renk ile tanımlanan tensor çarpımı yamalarından oluşan bir /ShadingType 7 stream’i 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’i (Type 6) genişletir; Coons-harmanı uydurmanın ifade edebileceğinden daha ince yama içi kontrol sağlar. SVG mesh-gradient gidiş dönüşleri ve tensor çarpımı Bezier yüzeyi gerektiren her sanat eseri için kullanışlıdır. Her yama 16 kontrol noktası katkıda bulunur (spec Tablo 88 stream sırasına göre dizilmiş 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 p[1][1], p[1][2], p[2][2], p[2][1] iç noktaları) ve 4 köşe rengi gelir (p[0][0] / p[0][3] / p[3][3] / p[3][0] konumlarında 4 * NumComponents Extended değeri); böylece Patches adım boyu 32 + 4 * NumComponents’tir. Yazılan her yama flag = 0 taşır (bağımsız yama). Bu sürümlle, ISO 32000-1 8.7.4.5 örgü shading ailesinin tamamı (Type 4 / 5 / 6 / 7) artık kapsanıyor. HotPDF v2.51.0’dan beri mevcut.
- 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 ile (absSolid / absDashed / absBeveled / absInset / absUnderline) bir /BS sözlüğü ekler. THPDFPage.AddPopupAnnotationFor(ParentAnnot, Rect, Open), iki yönlü bağlanan (üst /Popup -> popup; popup /Parent -> üst) bir /Popup ek açıklaması yazar; böylece okuyucu konuşma balonu bağlayıcısını çizebilir. Yeni THPDFPage.LastAnnotation özelliği, var olan Add*Annotation prosedürlerinin imzasını değiştirmeden her iki yardımcıyı da besler. HotPDF v2.34.0'dan beri mevcut
- Genel Anahtar Güvenlik İşleyicisi (ISO 32000-1 7.6.4, ISO 32000-2 7.6.5):
THotPDF.EnablePubKeyEncryption(seed, KeyType, EncryptMetadata) + THotPDF.AddPubKeyRecipient(envelope); /Filter /Adobe.PubSec şifreleme sözlüğü yazar (V=1 RC4-40 için /SubFilter /adbe.pkcs7.s4 / V=2 RC4-128 ve V=4 AESV2 için /adbe.pkcs7.s5). Çağıran, 20 baytlık rastgele tohumu ve alıcı başına bir PKCS#7 envelopedData ikili blob'unu sağlar (harici olarak Windows CryptoAPI, OpenSSL veya pycryptodome ile kurulur). HotPDF, dosya şifreleme anahtarını ISO 32000-1 7.6.4.3'te açıklandığı gibi türetir (tohumun her zarfla bitiştirilmiş hâlinin SHA-1'i) ve AES-128 / RC4 stream'leri için standart nesne başına anahtar türetmesini yeniden kullanır. HotPDF v2.33.0'dan beri mevcut
- Yüklenen sayfa çizimi; Shading Type 4-7 arasını, tüm standart koordinat, bileşen ve bayrak bit genişlikleriyle, bayt hizalı kayıtlarla, Type 4 üçgen ve Type 6 / 7 yama devam bayraklarıyla, isteğe bağlı Function dizileriyle, bildirilen ColorSpace dönüşümüyle, BBox ve Background işlemesiyle, kırpma ayıklamasıyla, toplu Gouraud dolgularıyla ve sınırlı uyarlanır Coons ile tensor çarpımı tessellation'ıyla çözer. HotPDF v2.488.0'dan beri mevcut
Ayrıca bakın |