進階轉譯語意

已載入頁面的轉譯保留巢狀 Form XObject 狀態,同時套用透明度群組、柔光遮罩、Type 3 字形程序,以及感知解析度的可見影像區域解碼

虛線路徑筆畫

原生路徑轉譯會保留完整的虛線陣列與其相位,包括奇數長度陣列、小數長度,以及用圓頭或方頭端點繪出的零長度虛段;虛線圖樣會在每個子路徑重新開始

單色筆畫與漸層圖樣筆畫剪裁共用同一條有界的虛線幾何路徑,在連續繪製區段內保留接合,並跨封閉輪廓的起點接合繪製區段

虛線長度保留轉譯器的平均目前變換縮放,曲線分割則採用自適應的裝置空間扁平化;填滿繪製與待處理剪裁仍使用未分割的原始路徑

透明度群組

柔光遮罩

傳輸與取樣函式

/TR2 優先於 /TR,單一函式套用到每個 RGB 輸出通道,而四函式陣列則獨立套用其前三項,同時保留 /Identity 與 /Default 項目

套用新的傳輸狀態會以原子方式取代每個通道,因此身分項目無法從較早的圖形狀態繼承查詢值

Type 0 取樣函式支援一到四個輸入與輸出維度、/BitsPerSample 值 1、2、4、8、12、16、24 與 32、反向或正向 /Encode 對應、獨立的 /Decode 範圍、多線性內插、多維立方內插,以及用於一維 /Order 3 資料的自然三次樣條

解碼後的取樣位元組、已驗證的維度、對應與立方導數共享每個轉譯執行緒加上限為 64 MiB 的八項目 LRU,而超大型或格式錯誤的函式則會失敗,而不會部分取代使用中的傳輸查詢表

半色調網屏

Type 6、Type 10 與 Type 16 閾值陣列會以確切的解碼長度、大端序 16 位元閾值、加法元件比較,以及避免擴充傾斜或雙矩形網屏的精簡週期性條紋直接執行

Type 5 字典以 /Gray 與必要的 /Default 遞補方式選取獨立的 /Red、/Green 與 /Blue 網屏,而每個選定的網屏都可以覆寫全域傳輸函式

已驗證的閾值位元組及其正規化幾何共享每個轉譯器上限為 64 MiB 的 64 項目 LRU,而格式錯誤的維度、超大型配置、巢狀 Type 5 字典或載入長度不符都會讓完整的使用中網屏狀態保持在連續色調模式

Type 3 字形

Type 3 CharProcs 以字型字典的目前資源範圍、Form 支援、裁切、影像、圖樣與有界遞迴,透過完整的內容運算子引擎執行

d0 與 d1 提供字形度量,而 d1 程序依 PDF 影像模型的要求保留呼叫端選取之色彩

當字型、字形、線性裝置矩陣與色彩狀態相符時,重複的 CharProcs 會重用已解碼並語彙分析過的顯示清單;平移保持動態,因此不同位置的相同字元可共享一個項目

每個轉譯器的 LRU 最多保留 256 個項目與 131,072 個符號、略過任何超過 16,384 個符號的 CharProc,並透過 GetLastType3GlyphCacheStats 回報其行為

裁切與縮小的影像區域

軸對齊的影像 XObject 只要求可見的來源邊界,並把可見的裝置像素大小傳入解碼路徑

帶柔光遮罩的影像會以繪製時的大小整張解碼,遮罩也以同樣大小解碼,遮罩因此與影像保持對齊,裁切只限制繪製範圍;JPEG 遮罩使用縮小尺寸的 DCT 解碼器

轉譯時,若解碼出的區域在兩個方向上都至少是繪製大小的兩倍,會先以面積平均縮到恰好繪製大小,再繪製或快取;畫得很小的大圖因此放得進解碼快取,畫兩次的群組或重複的頁面都能重用它,柔光遮罩也會在該尺寸下逐像素套用。模板影像遮罩保留完整解析度,公開的區域解碼方法仍回傳文件所載的尺寸

JPEG 2000 將解碼器的原生區域 API 與二次幕解析度層級結合,選取能同時滿足兩個目標維度的層級,再進行小波重建與點陣展開

可圖塊定址的 JPEG 2000 codestream 也可以透過 THPDFJpeg2000Decoder.LoadTileFromByteArray 直接解碼一個已驗證的圖塊,圖塊網格中繼資料與輸出位元組限制則由解碼器公開

當原生區域與多個獨立圖塊相交時,LoadRegionFromByteArrayParallel 會為每個工作執行緒指派私有的 OpenJPEG 狀態,並以確定性的列主序組成完成的點陣;取消、輸出限制與有效的尖峰記憶體預算可以停止排程或選擇循序遞補方案

Region := PDF.DecodeLoadedImageRegion(ImageStream, 128, 64, 640, 480);
try
  Canvas.Draw(0, 0, Region);
finally
  Region.Free;
end;

相關 API