顯示清單與印刷生產

HotPDF 把已載入的頁面串流編譯成可重用的 THPDFPageDisplayList 執行個體,帶有 THPDFDisplayListInfo 度量與內容物件邊界框

文件轉譯快取已編譯的清單,而呼叫端則可要求獨立擁有的清單供重複執行或區域物件查詢使用

共用的輸出直譯器

非漸進點陣圖、直接 DC、Form 與顯示清單重播,都會把預先切分的內容 token 餵給 HPDFInterpretContentTokensDevice,由它負責 operator 走訪與取消邊界

THPDFPageRenderer 實作 IHPDFContentOperatorDevice,因此共用的走訪會呼叫它完整的圖形、文字、資源、裁剪、圖樣、透明度、標記內容與影像狀態機,而不是把輸出轉譯縮減成較小的語意 callback 介面

顯示清單在 stream 編譯時快取 operator token 索引,重播時只重放這些索引,避免重複掃描運算元;THPDFPageDisplayList.OperatorCount 與 THPDFDisplayListInfo.OperatorCount 公開快取的命令數

只實作 IHPDFContentDevice 的語意裝置

有界與併發轉譯

THPDFRenderTileEvent 一次接收一個呼叫端大小的圖塊或水平帶,使尖峰點陣記憶體不受完整頁面大小影響

RenderLoadedPagesParallel 讓顯示清單編譯與播放重疊、在不必等待完整編譯屏障的情況下啟動第一頁已就緒的頁面、在有界的工作執行緒間動態平衡兩個階段,並依輸入順序傳回 THPDFBitmapArray

編譯在顯示清單快取鎖之外執行,而雙重檢查的收納與受保護的使用計數讓無關的頁面可以併發編譯,而不重複已發佈的項目或在播放期間收回清單

THPDFParallelRenderPipelineInfo 公開快取命中、編譯、完成、尖峰編譯與轉譯併發度、第一個結果時已編譯的頁面、第一個結果延遲與總經過時間

RenderLoadedPagesParallelOrdered 在呼叫端執行緒上依輸入順序傳送回呼,並在回呼傳回後釋放每個借用的點陣;呼叫端選取的輸出深度套用生產者背壓並為下一個需求的頁面保留一個槽位,使行動緩慢的早期頁面不會死鎖在較晚的結果之後

有序串流每個工作執行緒最多保留一個顯示清單與一個進行中的轉譯,加上有界的已完成點陣佇列,而不是讓完整的工作輸出保持駐留

可插拔轉譯後端 透過非擁有的文件資源檢視取用相同的已編譯清單,因此同步與並行路徑不需重新剖析頁面內容,而後端能力決定呼叫是否可以重疊或需要循序派送

程序全域的尖峰記憶體排程器現在限制兩個並行 API:最大的頁面估計降低初始工作執行緒數、每個要求的頁面保留其完整的估計工作集,而有序輸出在回呼傳遞期間保留該保留

排程器取消會在回呼取消或工作執行緒失敗時喚醒預算等待者,而遙測公開要求的對比有效的工作執行緒、尖峰保留權重、延遲的頁面與彙總的等待時間

RenderLoadedPageTilesParallel 與 RenderLoadedPageBandsParallel 會把借用式的列主序 tile 或由上而下的帶狀區塊分派到隔離的 worker,每個 worker 最多持有一個 tile;呼叫端提供的工作記憶體上限會在第一次認領之前降低並行度

平行轉譯上下文從單一有界 LRU 快取拷貝不可變的 Type 3 glyph token 序列與半色調閾網,同時為可變的 graphics state 與 GDI 資源保留轉譯器本地的所有權

SaveLoadedPageToPng、SaveLoadedPageToPngStream、SaveLoadedPagesToTiffBanded 與 SaveLoadedPagesToTiffStreamBanded 透過串流式 PNG 或 TIFF 編碼器消費同一條帶狀轉譯路徑,因此超大頁面可以逐列輸出壓縮結果,不必持有完整的繪圖框;而 THPDFBandImageExportInfo

共享影像解碼會另行協調,因此向量頁面工作保持並行,而不會損壞已解碼影像的快取項目

PrefetchLoadedPages 以專用的取消符記預熱點陣項目,同時在快取鎖之外編譯與轉譯,而前景頁面轉譯在開始延遲敏感的工作之前搶先工作執行緒

THPDFLoadedPagePrefetchInfo 回報已排程、已開始、已完成、已快取、已轉譯、失敗、已取消與前景搶先的工作,加上最後與尖峰取消延遲

透明度與印刷控制

透明度平面化會先檢查顯示清單透明度計數與呼叫端定義的像素上限,然後把頁面繪製取代為無損 Flate 壓縮的校準 RGB 影像

帶有 Separation 或 DeviceN 著色劑的頁面保持為向量內容,偵測到的著色劑與保留狀態則公開給呼叫端

轉譯器從 ExtGState 執行傳輸函式與 Type 1、5、6、10 或 16 半色調字典,同時透過 q 與 Q 保留獨立的 RGB 網屏及其傳輸覆寫

THPDFInkCoverageInfo 回報平均 CMYK 覆蓋、最大總面積覆蓋,以及高於所選閾值的像素數

印刷與特別色分色輸出支援 DeviceCMYK、Separation 與 DeviceN 著色劑

已載入頁面色彩重寫 使用同一個完整轉譯器把複雜頁面轉換為 Gray、RGB 或 CMYK,同時把簡單裝置色頁面內容保留為向量,並套用明確的特別色版原則

THPDFTrappingInfo 結合文件補漏白宣告、頁面中繼資料與 TrapNet 結構診斷

ICC 工作流程

轉譯變換可以結合 PDF 來源設定檔、混色色彩空間、校樣設定檔、輸出設定檔與 sRGB 點陣目的地

所有四個 ICC 轉譯意圖與真正的黑點補償都會一致地套用於管線中的向量色彩與影像取樣

完整變換透過以來源、校樣與輸出設定檔內容、有效轉譯意圖與黑點補償為索引鍵的執行緒安全 64 MiB LRU 快取,在向量、影像、頁面與並行轉譯路徑之間共享

透明度平面化重用相同的變換管線,然後在呼叫端控制的全點陣與逐圖塊像素預算下發出無接縫的 D65 CalRGB 圖塊

主要 API