HotPDF 繁體中文更新日誌

HotPDF 面向最終使用者的版本歷史,包含功能增強、修復、相容性更新和檔案變更

注意:僅保留最新 800 筆變更記錄

Last release

  • 最新版本:2.974.0;發佈日期:2026-10-11

Version 2.974.0

Added

  • 依精確頁面與 Unicode 名稱移除頁面註解,含 popup 與回覆級聯,經由有界原生 API、Windows 交易、JSON 作業與帶版本 callback 完成,具備經驗證的權限與發佈回滾

Version 2.973.0

Added

  • 透過原生 API、Windows 交換與帶版本 callback 交換二進位 FDF 註解,保留外觀資源、共用物件圖與本地動作目的地

Version 2.972.0

Added

  • 渲染註解預設外觀,保留文字狀態、自動調整、rich-text 間距與文字裁剪,含渲染模式 4 到 7

Version 2.971.1

Fixed

  • 在 FPC 3.3.1 Windows 建置上防止公開 shaped-run 快取發生 range check 失敗,保留明確的 32 位元模乘雜湊、精確的快取鍵隔離與 LRU 驅逐

Version 2.971.0

Added

  • 比對根 :scope,並接受帶非作用中互動狀態的靜態 hover、active、focus 偽類,保留 negation、邏輯與相對選擇器、supports 查詢,以及已儲存的 FDF/XFDF 外觀

Version 2.970.0

Added

  • 對原生 rich-text 的 @supports 群組與 supports() 匯入求值,具備宣告與選擇器查詢、設有上限的巢狀條件、感知命名空間的探測與取消後復原,並算出已儲存的 FDF/XFDF 外觀

Version 2.969.0

Added

  • 在原生 rich-text 解碼、已儲存欄位外觀與 rich FDF/XFDF 匯入中,求值有限的 calc、min、max、clamp 運算式、相對根與明確的視埠長度,以及最終字型的行高與間距度量

Fixed

  • 各編譯器目標一致接受精確的最小媒體尺寸、解析度與初始字型大小,同時繼續拒絕低於支援下限的值

Version 2.968.0

Added

  • 求值明確指定的 rich-text color scheme、reduced motion、透明度與資料偏好、對比、強制色與反轉色,以及 scripting 可用性,同時保留未知或省略的偏好與算出的已儲存外觀

Version 2.967.0

Added

  • 套用呼叫端提供的連結與匯入 rich-text 樣式表,共享 preferred 或 alternate title 集合、設有上限的 URI 與文件基準解析,原生、Windows 與 Linux 的 FDF/XFDF 發佈則走交易式流程

Version 2.966.0

Added

  • 求值具備明確 print/screen 設定、巢狀條件與有界特性範圍的原生 rich-text 媒體查詢,把算出的樣式保留在已儲存外觀與交易式 FDF/XFDF 匯入中

Version 2.965.0

Added

  • 以交易式方式建立、複製與編輯原生 XFA form tree,保留存活節點身分、事件 rollback、受支援的空合併情境與已儲存 form packet,不依賴作者撰寫的範本

Version 2.964.0

Added

  • 從完整的 OpenType CFF2 字型以預設 variation 座標產生原生 plain、rich、shaped 與 family 外觀,在有界的靜態 CID-keyed CFF 1 輸出中保留字形身分、Unicode、寬度與內嵌權限

Version 2.963.0

Added

  • 把具備範疇的 CSS 命名空間宣告與限定選擇器套用到原生 rich-text 欄位與 Windows/Linux 表單交易,保留算出的外觀、有界命名空間查找、精確的 no-op 發佈與 checked build 相容性

Version 2.962.0

Added

  • 在空格與連字號邊界為產生的 raw 字型註解文字跨樣式 runs 斷行,保留完整的編碼字元、強制斷行、自動尺寸與有界取消

Version 2.961.0

Added

  • 以原始的 Type1C、CIDFontType0C 與裸 Type1 字型程式渲染缺失的註解文字外觀,保留 Unicode 對應、自動尺寸、間距、行高與有界的不可變資源

Version 2.960.0

Added

  • 傳輸標準 XFDF Stamp 的 normal、rollover、down Form 外觀,附內嵌字型與影像資源、有界無環圖、經驗證的原生交易,以及既有 Windows/Linux callback

Version 2.959.0

Added

  • 把複雜 not 清單、寬容的 is 與 where 清單、錨定的 has 關係與過濾後的 nth-child 位置套用到原生內部 rich-text 樣式表,保留選擇器權重、算出的值、字型與交易式 FDF/XFDF 外觀

Version 2.958.0

Added

  • 在 JavaScript 與 FormCalc 中透過唯讀數字索引存取存續的原生 Data DOM 子集合,保留目前子節點順序、留存的 script 物件參照、獨立複本、已儲存值與 PDF 外觀

Fixed

  • 拒絕對目前集合與留存的詞彙 script 物件內部做數字指定、刪除與屬性定義,並搭配有界的事件 rollback 與重試

Version 2.957.0

Added

  • 把屬性選擇器、同層級組合器、結構與位置偽類、繼承的語言比對與複合 negation 套用到原生內部 rich-text 樣式表,保留實際算出的值、字型、已儲存外觀與交易式 FDF/XFDF 匯入

Version 2.956.1

Fixed

  • 透過實際的事件編譯器解析 FormCalc 的 nodes 子清單路徑,保留存續的 form/property 集合、Data DOM 項目存取、有界重播、已儲存原生值與 PDF 外觀

Version 2.956.0

Added

  • 從完整的 OpenType CFF 字型產生原生 plain、rich、shaped 欄位外觀,保留按名稱鍵控的字形身分、實際 CID-keyed 字元集、Unicode 對應、內嵌權限與共享字型資源;並以內嵌 OpenType 預設值渲染缺失的 FreeText 外觀

Fixed

  • 為 CFF 解析與字形度量設下上限,保留取消與每個樣式獨立的不可變讀取器,並在六個原生編譯器目標上維持 TrueType 行為

Version 2.955.1

Security

  • 在規範位元組序列化之後拒絕全零的 X25519 與 X448 共享金鑰,包含弱域 limb 非零的低階輸入,並讓協商結果維持 False,附上空金鑰與全新的診斷資訊

Fixed

  • 在啟用整數溢位與範圍檢查時,保留可攜的 SHA3/SHAKE 常數與刻意的 modulo-2^64 金鑰協商算術,包含 32 位元 Free Pascal 上的全寬度 P-256、P-384、P-521 交換

Version 2.955.0

Added

  • 新增存續的 JavaScript form/property 子集合,支援 length、索引讀取、item、namedItem、迭代與獨立複本;跨事件、重複 instance 編輯與隱含屬性建立保留擁有者身分,並儲存原生值與 PDF 外觀

Fixed

  • 讓留存的存活清單持續綁在目前的事件擁有者上,擁有者被移除就直接拒絕、不改投其他 instance,並在集合配置、操作與期限失敗時保留原生值、留存狀態與 journal rollback

Version 2.954.0

Added

  • 把內部 XHTML 樣式表套用到原生 rich-text 欄位與 FDF/XFDF 匯入,支援 type、class、ID 選擇器、後代與子組合器、群組選擇器、Unicode 識別字轉義、權重、important 與來源順序

Fixed

  • 把算出的樣式保留進實際儲存值與控制項外觀,掃描與比對設有上限、支援取消、提交的 no-op 位元組精確一致,callback 依交易 rollback

Version 2.953.0

Added

  • 新增獨立的 XFA 查詢節點集合,具備 all、classAll、classIndex、clone 與成員判斷操作、穩定的留存參照、有界的交易式重播,以及原生已儲存 PDF 的消費

Fixed

  • 讓留存的查詢 instance manager 綁在目前的事件圖上,並在原本的預設堆疊與操作限制內求值一般 SOM 路徑與述詞

Version 2.952.0

Added

  • 透過原生、一般 Windows 與帶版本的 callback XFDF 交換保留遠端 GoToR 註解目的地,包含精確座標、Unicode 檔案規格與選用的視窗行為

Fixed

  • 對已載入文件的一般註解匯入,依原始加密權限、簽章與欄位鎖進行驗證,同時保留允許的呼叫端編輯與獨立來源生命週期;讀取簽章 ByteRange 整數不再經 Single 捨入,並在加密前分離共享的 RC4 字串儲存

Version 2.951.0

Added

  • 為沒有 normal 外觀的 Square、Circle、Polygon、FreeText 註解渲染有界的雲狀邊框,保留寬度、虛線、不透明度與來源圖;在 FreeText 視圖之間共享不可變的產生字型位元組,不重複計入解碼位元組,同時保留解析預算與取消

Version 2.950.0

Added

  • 建立、複製、重新命名、插入與移除原生 XFA Data DOM 節點,具備有界所有權、繼承命名空間、穩定的匯入參照、繫結重新整理與完整事件 rollback;並透過已儲存的 XML 與原生 PDF 消費端保留 UTF-8 屬性與留存的 FormCalc 參照

Version 2.949.0

Added

  • 透過原生、Windows 與 Linux XFDF 交換保留「沒有選取任何 choice 選項」與「選取了空匯出值」的區別,附精確 no-op 發佈、有界驗證與 checked 加密文件載入

Version 2.948.0

Fixed

  • 渲染填滿字形遮罩時捕捉小數裁剪覆蓋,同時保留 PDF 路徑、pattern、alpha 與混合運算元,並在配置前檢查點陣工作記憶體容量

Version 2.947.1

Fixed

  • 在 XFA 解析與序列化期間保留明確的空預設 XML 命名空間宣告,避免未限定名稱的資料子樹在儲存後重新載入時繼承祖先命名空間

Version 2.947.0

Added

  • 渲染斜角與內嵌矩形註解邊框,以及實測的 Unicode 或 rich 單行標題,保留不透明度、端點偏移、既有外觀、有界字型資源與註解裁剪

Version 2.946.3

Fixed

  • 透過原生事件套用 xfa.host.resetData,不再誤判為 Data XML 匯入,保留範本預設值、繫結值、重複範疇、待處理編輯與交易式 rollback

Version 2.946.2

Fixed

  • 修正啟用編譯器範圍與溢位檢查時的 SHA-1、SHA-256、SHA-384、SHA-512 字組運算,保留有效摘要與 AES-256 密碼驗證,公開介面不變

Version 2.946.1

Fixed

  • 透過原生 XML 序列化、持久的屬性預設值、重複腳本事件與交易式 rollback,保留存在但為空的 XFA 屬性,以及 UTF-8 名稱、值、命名空間與索引查詢

Version 2.946.0

Added

  • 以明確唯讀的 Preview/Print 字型權限與不變的完整字型位元組渲染暫時 rich 註解文字,保留可編輯的內嵌政策與既有 Screen 外觀,不引入隱含媒體佔位

Version 2.945.0

Added

  • 透過原生與 legacy XFDF 交換保留本機註解頁與具名目的地,十進位 token 精確且有界、限定名稱 Adobe XML、重複屬性驗證,以及交易式 Windows/Linux callback 發佈

Version 2.944.0

Added

  • 透過 JavaScript 與 FormCalc 管理存續的 XFA choice 顯示與匯出項目,保留存活別名、精確的重複或空選取、原生的 per-instance 清單,以及有界變更限制下已儲存的原生或 legacy PDF 外觀

Version 2.943.1

Fixed

  • 當原生混合 scalar 與型別化 rich-text 交易或空批次未做任何變更時,已載入 PDF 位元組保持精確不變,保留待處理的圖編輯、經驗證的簽章與加密政策、資源限制與原子發佈

Version 2.943.0

Added

  • 透過 Windows 檔案工作與原始 V1 callback 交換映射註解 XFDF,附經驗證的附加交易、有界二進位與 Unicode 資料、精確 no-op 位元組與原子發佈

Version 2.942.0

Added

  • 透過有界的暫時幾何、線端、圖示與 Unicode FreeText,渲染沒有 normal 外觀的受支援註解,保留來源資源、rich text、檢視/列印旗標與取消

Version 2.941.1

Fixed

  • 以有界且可取消的排序驗證原生 XFA choice 選取唯一性,同時精確保留區分大小寫的匯出值、原始選取順序與交易式失敗行為

Version 2.941.0

Added

  • 把獨立串接的原生 CSS 與原始型別化字元/字組間距套用到 shaped runs、實體行、排版適配與已儲存外觀,附算出的 point 序列化、精確十進位捨入與交易式 Windows/Linux JSON 發佈

Version 2.940.0

Added

  • 透過有界的原生 XFDF 與 Linux V1 JSON 操作交換十八種映射註解類型,保留 Unicode rich 內容、callout、透明色、二進位附件、popup 與轉寄回覆連結、經驗證的權限與交易式附加發佈

Version 2.939.0

Added

  • 建立 legacy XFA combo 與 list 欄位,精確保留重複 instance 匯出值、顯示標籤、選取索引、捲動位置與樣式化 Unicode 外觀,保留高位欄位旗標與 per-field rollback,並提供指定字型的分離 choice 工廠與僅詮釋資料模式

Version 2.938.0

Added

  • 四種標準色彩 intent 現在能在圖形狀態、表單、影像、shading、pattern 與透明群組間一致渲染,支援影像層級覆寫、未知名稱改走相對 fallback,並配上設有上限、可取消的 ICC 轉換快取

Version 2.937.0

Added

  • 可從實際的重複 instance 範疇建立獨立的 legacy XFA 單選群組,完整保留匯出值、選取狀態與樣式化 Unicode 標題,附整組採用的 rollback,以及一支接受指定字型的獨立原生成員外觀 API

Version 2.936.1

Added

  • 解析合法 PDF dictionary 與 trailer 時會保留 FNV 雜湊乘法的低 32 位元,據此開啟算術溢位檢查

Version 2.936.0

Added

  • 明確指定的 JSON rich-text 行高現在會綁定到 Windows 與 Linux 的已儲存外觀,保留原始 runs、指定的父層度量與設有上限的彙總規劃,混合欄位更新則以交易式方式進行

Version 2.935.1

Added

  • portable XFA 密碼外觀對補充平面 Unicode 字元只計一次,保留原始值,並在配置遮罩前強制執行彙總字形預算,取消粒度到單一 scalar

Version 2.935.0

Added

  • rich-text 行高、CSS 計算長度、繼承係數與父層字型度量,如今在原生排版、已儲存外觀、Windows 檔案工作與 callback,以及 Linux FDF/XFDF JSON 匯入之間都保持一致,度量字型規劃設有上限

Version 2.934.0

Added

  • 能建立真正的 Unicode legacy XFA 文字、數值、日期與密碼外觀,套用實際生效的 per-instance 字型家族與樣式,字型資源可內嵌且可編輯,密碼以 scalar 遮罩,資源採用走交易式流程

Version 2.933.0

Added

  • 多維取樣的 cubic 色彩函數沿用既有四節點 scalar 慣例求值,短維度改走線性 fallback,tensor 計算設有上限且可取消,scalar 插值行為維持不變

Version 2.932.0

Added

  • 26 位元以下有號與無號的 JPEG 2000 分量可解碼,涵蓋混合精度、子取樣與透明度,先正規化設有上限的取樣值,渲染前忽略 JPX 影像的 BitsPerComponent 宣告

Version 2.931.0

Added

  • 保留 legacy XFA 核取方塊的 on、off 與 neutral 匯出狀態、樣式化 Unicode 標題與原生外觀套組,特殊 PDF 名稱的編碼保持一致,widget 採用被取消後仍能還原直接頁面資源

Version 2.930.0

Added

  • 自動 optional-content 用法套用會依明確的縮放、語言與使用者 context 求值,原生的手動選取可持續保留,Linux JSON 操作狀態設有上限;文件變更後會把借用的渲染 context 一併失效

Version 2.929.0

Added

  • scalar 文字、comb 儲存格、選項標籤與按鈕標記,現在會依序採用呼叫端指定的 regular 字型家族,涵蓋原生 setter、Windows 工作與版本化的 Windows/Linux callback;一般 scalar 中繼資料照舊保留,也能區分空的選擇與選中空匯出值兩種情形

Version 2.928.0

Added

  • ExtGState 的 dash 陣列與 phase 現在會渲染,採用設有上限的具型別 PDF 陣列掃描,註解、嚴格運算元驗證、繼承的筆畫幾何、取消機制與一般文字陣列都不受影響

Version 2.927.0

Added

  • Windows 版 ApplyXFAAsAcroForm 的按鈕 scalar 與 rich 標題現在以實際安裝的 family/style 程式繪製,per-instance 覆寫可持久保留,配上原生的 normal/down/rollover 外觀套組,並註冊真正的 AcroForm 字型資源

Version 2.926.0

Added

  • 設有上限的 inline CSS font 簡寫會展開成獨立級聯的 size、weight、italic 與指定 family 候選,保留繼承的相對尺寸、省略樣式的重設、important 元件優先權,以及實際儲存的字型外觀

Version 2.925.0

Added

  • 完整的樣式化 rich-text grapheme 會透過 Windows 檔案工作與 V1 callback,依序挑選呼叫端指定的字型家族,CSS 與具型別候選、真正的空值交易與彙總字型預算都照舊保留

Version 2.924.0

Added

  • 預設文件 optional-content 群組與成員運算式現在會跨標記頁面內容、form XObject 與 annotation 渲染,隱藏的圖形與文字狀態照舊保留,並能透過原生 Linux V1 JSON 介面揭露明確的檢視或列印用途

Version 2.923.0

Added

  • 有序的 rich-text 字型候選清單會在原生外觀與 Linux V1 JSON 之間保留,混合 scalar 與原始具型別 runs 可綁定到 Windows 檔案工作與未變動的 V1 callback,具備精確繪製、指定樣式程式與兩階段發佈

Version 2.922.0

Added

  • annotation 的原生檢視與列印可見性改用 PDF 2.0 Invisible 規則判斷,能識別 RichMedia 與 Projection 的靜態外觀與隱含 Text 轉換,並保留設有上限、可取消的 Windows PNG 原子化替換與真實的 OS 錯誤診斷

Version 2.921.0

Added

  • 原生 XFA 按鈕的 scalar 與 XHTML 標題會以真實的指定 family 與樣式程式渲染,inline 分隔符與自訂 padding 照舊保留,normal/down/rollover 外觀、標題可見性與持久的重複實例覆寫都會如實呈現

Version 2.920.1

Fixed

  • 原生 Linux C ABI 的 PDF 變更成功後會與已提交的來源快照保持一致,後續相同值的 FDF 或 XFDF 匯入因此能保留已發佈的表單值、具型別外觀、繪製文字與匯入頁面,不再還原成過期的輸入位元組

Version 2.920.0

Added

  • 混合 scalar 欄位與原始具型別 rich-text runs 會在一次獨立的原子化文件交易中儲存,精確的外觀值與指定字型程式照樣保留,已驗證的政策與目前的圖編輯不受影響,並能識別真正的唯讀外觀 no-op

Version 2.919.0

Added

  • 完整的樣式化 Unicode grapheme 會透過明確指定的候選字型家族解析,原始值與精確外觀樣式照舊保留,未變動的 V1 callback 上提供 opt-in 的原生 Linux JSON fallback,載入設定的字型程式時仍守住實際的彙總字型額度

Version 2.918.0

Added

  • 原生 XFA Boolean 標題會從生效的 XHTML 與指定的具名樣式字型渲染,重複實例覆蓋與已儲存的執行階段 XML 照舊保留,自動標題保留空間則以最終邏輯文字行範圍測量

Version 2.917.0

Added

  • Windows FDF 與 XFDF 匯入可透過巢狀檔案路徑或既有的版本化字型 callback,挑選真正的具名 family 與樣式程式;同步的隨機來源讀取與循序的交易發佈彼此隔離

Version 2.916.0

Added

  • 內建 182 個 legacy CMap 可解碼並渲染,涵蓋設有上限的 1 到 4 位元組編碼、精確的父與子書寫方向、Unicode 對應、確定性的壞碼復原、可取消的繼承,以及隨附的再散布聲明

Version 2.915.0

Added

  • 選取的原生 XFA 清單選項會透過字型度量的選取視窗與持久化的頂端索引保持可見,完整的選項與值陣列照舊保留,重複實例的字型變更與事件 rollback 也在,可見字形的準備設有上限

Version 2.914.1

Fixed

  • 取得實際記憶體預留後,前景記憶體快取命中會與協同式 prefetch 取消重疊執行,操作快取遙測照舊保留,快取鎖或預留等待後會重新檢查取消,嚴格的 miss 排序與執行緒 join 維持不變

Version 2.914.0

Added

  • 原生 XFA Boolean 外觀可自訂六種標記、圓形或方形邊框、標記顏色與尺寸、五種標題位置,並共用內嵌的標題字型;可逆的 Unicode 匯出別名與合法且可區分的 neutral 狀態,在事件執行與已存 PDF 重新載入後依然成立

Version 2.913.2

Fixed

  • 旋轉的矩陣條碼會先嘗試完整解碼,再處理斷開的片段;QR finder 精確不符時直接拒絕,不做全格取樣;更緊的分組、原本的線性條碼行為、原子化掃描預算與不變的兩秒期限都照舊

Version 2.913.1

Added

  • 既有的隱含 XFA 值會透過設有上限的即時資料 context 解析,selector 不會重複解析而占用腳本操作額度,原始交易期限與明確綁定行為保持不變

Version 2.913.0

Added

  • 透過未變動的 Linux V1 JSON callback,為具型別填值與 FDF 或 XFDF 匯入挑選設定的原生 rich 字型家族,依彙總預算載入實際需要的 family 與樣式程式,並宣告兩個已實作的 rich 設定檔

Version 2.912.0

Added

  • 透過 Windows 檔案工作與 V1 callback 匯入匯出真實的 FDF 或 XFDF,輸入為不可變的自有資料,先備妥目前未儲存的圖,提供真正的四字型 rich 外觀與已驗證的 AES 簽章政策,兩個輸出 callback 都成功後才提交 context

Version 2.911.0

Added

  • 可建立原生 XFA 的矩形、線與弧形繪製,以及 inline PNG 或 JPEG 影像,具備實際取樣解碼、alpha 遮罩、貼合的長寬比與旋轉擺位,準備階段設有上限,取消之下仍維持交易式所有權

Version 2.910.0

Added

  • NoZoom 與 NoRotate 的 annotation 外觀會貼合轉換後的左上矩形錨點,縮放與旋轉之下 UserUnit、貼合的表單幾何、不透明度與實際頁面裁剪都保持一致

Version 2.909.0

Added

  • 每個 rich run 會挑選實際指定的具名 TrueType 家族與設有上限的 XHTML font-family 宣告,各家族的樣式度量與標記快取照舊保留,匯入真實 FDF 或 XFDF rich 值時採用感知家族的規範化比較

Version 2.908.1

Fixed

  • 合法的 inline rich-text 宣告會套用獨立的 important 優先權、外層計算出的 font-size 基準與明確的繼承屬性,CSS 註解與引號或函式宣告邊界照樣保留

Version 2.908.0

Added

  • 可直接從已儲存的執行階段資料建立真正的原生 XFA 下拉選單、清單方塊、多選欄位、核取方塊與結構範疇的單選群組,附成對的顯示/匯出標籤、per-instance 項目、存取旗標與獨立的原生外觀狀態

Version 2.907.1

Fixed

  • 名稱值與繼承表單欄位中的 PDF 十六進位跳脫與 UTF-8 位元組會如實解碼,含空格、標點與 Unicode 的按鈕匯出狀態在原生已存文件重新載入後依然保留

Version 2.907.0

Added

  • 透過實際的字型 CID-to-GID 對應渲染真正的 CID-keyed CFF 字形識別與設有上限的 notdef 替代,整個跳脫 CMap 解析過程中獨立的文字擷取與取消檢查都不受影響

Version 2.906.0

Added

  • 缺少附件錨點時,跨樣式的結合標記會依實際選中的字形邊界與規範結合類別定位,具備獨立字型縮放、同側堆疊,雙標記則採用實際解析的項目方向

Version 2.905.1

Fixed

  • 會在實際的 DecodeParms dictionary 內解析跳脫的 predictor 參數,並在外層 dictionary 語法配對完成後定位真正的串流 token,一般 Windows 載入時以空白為值的二進位 xref payload 依然保留

Version 2.905.0

Added

  • Linux 與 Windows 上可直接從 XDP 與已儲存的執行階段值建立原生 PDF 頁面樹、可編輯的重複欄位、按鈕與 Unicode 靜態文字,附真正的內嵌外觀,呼叫端輸出前的候選準備設有上限

Version 2.904.2

Fixed

  • 讀取實際外層的交叉參照串流 dictionary 時不會被巢狀加密設定混淆,跳脫的條目名稱會解析,一般 Windows 增量修訂中的直接加密 dictionary 依然保留

Version 2.904.1

Fixed

  • 完整的段落方向控制與成對括號,在自動獨立 shaping 與純多行欄位換行下都保留,具備實體行接續 context、不可變的段落快取與設有上限的總字形輸出

Version 2.904.0

Added

  • 原生 XFA 的 JavaScript、事件日誌、Data DOM、XML、FormCalc 與 ICU locale 執行階段可在 Linux 上執行,持有自有共享模組租約與真實單調時鐘,既有的 Windows Unicode 初始化照舊保留

Version 2.903.1

Fixed

  • 僅含方向控制的 Unicode shaping 群集字元間距維持零推進,邏輯控制符、字形識別與正常的可見群集及單詞間距不受影響

Version 2.903.0

Added

  • 換行的 rich 樣式行之間保留方向嵌入、覆寫、隔離與成對括號段落 context,提供設有上限的段落衍生與快取實體行排序 API,並以解析出的層級與文字系統對實際行項目做 shaping

Version 2.902.0

Added

  • 樣式化 FDF 與 XFDF 可透過真實的 Linux JSON C ABI callback 匯入匯出,設定的真實字型面會內嵌,簽章政策與 no-op 匯入的原始私有位元組精確保留,兩個 callback 輸出都成功後才發佈目前文件狀態

Version 2.901.0

Added

  • Coons 與 tensor patch mesh shading 可渲染,cubic 幾何設有上限,支援來源色彩空間插值、延續邊、摺疊處理,資源與取消限制走交易式管理

Version 2.900.0

Added

  • 原生 XFA Data DOM XML 的載入與儲存支援命名空間且以交易式進行,有序混合內容與資料綁定識別照舊保留,host 值以線性時間加引號,並在設有上限的引擎重播中保住精確的 per-session JavaScript 模組租約

Version 2.899.0

Added

  • 樣式化結合標記會掛到實際的 GPOS 基底、連字與標記錨點,字型縮放各自獨立,rich widget 裁剪內保留負原點的字形輪廓,可見堆疊標記則預留貼合的行範圍

Version 2.898.0

Added

  • 讀寫設有上限的 FDF 與 XFDF rich text,把原生 XHTML 樣式 span 解碼成四種真正的內嵌字型樣式,再以交易式把真實外觀匯入已簽署或加密的 PDF,包含既有唯讀 rich 值的規範化比較

Version 2.897.0

Added

  • 選中的 Unicode 樣式 span 會以真實的周圍 HarfBuzz context 進行 shaping,提供原生段落順序與方向 API,把具型別 rich 項目放進實際換行的實體行,邏輯樣式與物件所有權不受影響

Version 2.896.0

Added

  • 原生 XFA 綁定 SOM 會跨重複資料範疇解析,子孫走訪設有上限,支援跳脫名稱、Unicode 比對、per-instance 的缺葉 fallback,執行階段值同步走交易式

Version 2.895.1

Fixed

  • 靜態原生 XFA 事件支援會在每個自有 JavaScript 引擎上只編譯一次,並完整重播緊湊格式的動態事件引數,rollback 過程中保留閉包、記錄的 host 回應、實例隔離、原始日誌預算與交易期限

Version 2.895.0

Added

  • 真實的 FDF 與 XFDF 位元組可透過既有的版本化原生 Linux JSON callback 匯入匯出,Unicode 欄位值、AES 安全性與已驗證簽章政策照舊保留,輸出或結果發佈失敗時會回復目前文件

Version 2.894.0

Fixed

  • 過寬的具型別 rich text 會在完整的 Unicode grapheme 邊界換行,跨字型與顏色樣式皆然;先量測實際樣式範圍再分配行,不可分割的超大群集、混合字級與明確字元間距照樣保留

Version 2.893.1

Security

  • 接受簽章政策保護的表單更新前,會先在真正的 RFC3161 文件時間戳記內驗證必要的 Adobe 簽署 CRL 與 OCSP 證據;證據缺失、撤銷、過期或不受信任時,交易式流程會拒絕

Version 2.893.0

Added

  • 讀寫設有上限的原生 FDF 與 XFDF scalar 欄位資料,並以交易式把真實的 Unicode、選項與按鈕外觀匯入獨立發佈的 PDF,已驗證的簽章政策與 AES 加密照舊保留

Version 2.892.0

Added

  • 設有上限的自由形式與格點三角 mesh shading 可渲染,座標、旗標、函數、顏色與透明度語義如實處理,十六進位 Indexed 調色盤串流只解碼一次

Version 2.891.0

Added

  • 有序的原生 XFA XML 註解與處理指示在事件匯入、序列化、複製與交易式 rollback 中都保留,但會從 scalar 文字、rich text 與 SOM 元素選取中排除

Version 2.890.1

Fixed

  • Windows 原子化發佈的暫時性鎖定會以最多八次可取消的替換嘗試復原,精確目標、備妥位元組、永久性作業系統錯誤與自有暫存清理都照舊處理

Version 2.890.0

Added

  • 合法的 Unicode 單詞、不換行空格、標點與數字群組跨具型別 rich 樣式 runs 保留,整組以實際樣式字型推進貼合,混合字級基線照舊,樣式接縫處的 CRLF 會合併

Version 2.889.0

Added

  • 可見欄位提交後會同步具象化的隱藏與不可見 XFA scalar 別名,原生重複資料範疇、明確空值與精確交易式 rollback 都不受影響

Version 2.888.0

Added

  • 既有文件 API 即可套用完整的 Unicode 17 屬性與上下文換行,提供原始或 LB1 解析的可移植屬性查詢,既有的 enum 序數與客製化契約照舊保留,軟連字號禁則也會遵守

Version 2.887.0

Added

  • 可匯入並序列化持久的原生 XFA exData XML,腳本可立即讀取,命名空間與混合內容保留,重複實例識別維持不變,rollback 走交易式,儲存後的 XHTML 渲染真實可用

Version 2.886.0

Added

  • 可建立並驗證獨立的 RFC3161 PDF 文件時間戳記,串流設有上限,支援 SHA256、SHA384 或 SHA512 imprint、受信任的 TSA 身分與 nonce 綁定、必要的 ESIC 擴充宣告,以及已驗證的認證或欄位鎖定例外

Version 2.885.0

Added

  • 揭露 Unicode 17 的預設換行機會並在實際原生 rich 欄位中消費,不換行空格、連字號與標點群組及 Unicode 明確分隔符照舊保留,原始 V 與 RV 值精確不變

Version 2.884.0

Added

  • 提供可移植的 Unicode 17 預設延伸 grapheme 邊界,過寬的 rich 單詞在完整群集處換行,實際 Unicode 外觀內容照樣保留,substring shaping 後的連接形寬度變化也會修正

Version 2.883.0

Added

  • 可建立持久的原生 XFA 影像與幾何 value 子節點,真實渲染 PNG alpha、影像 DPI 與長寬比幾何,重複實例隔離與交易式 rollback 照舊;FPC 下先前渲染成黑色的影像像素已修正

Version 2.882.0

Added

  • Form、Type3 與 Pattern 渲染會繼承實際子串流的字型資源與 PDF 文字參數,圖形狀態的文字儲存保留,不可見的 Type3 文字會遵守,獨立的 annotation 外觀預設會重設

Version 2.881.0

Added

  • 標準分離式 CAdES 簽章會自動驗證必要的簽署憑證綁定,十六進位或跳脫字面 Contents 字串的讀取保持一致,涵蓋驗證、允許的表單更新與長期驗證證據

Version 2.880.2

Fixed

  • rich 段落對齊在空的起始 runs、inline 樣式變更與明確換行下都保留,要求的矩形或圓形邊框與量測出的高亮列會確實繪製,不再默默略過

Version 2.880.1

Fixed

  • 頁面渲染器配置與 context 安裝前、初始化過程中都會檢查取消,建構初期被拒時仍保留呼叫端生效中的色彩 context,借用的顯示清單會釋放且不發佈部分點陣圖

Version 2.880.0

Added

  • 腳本建立後會真實渲染原生 XFA scalar 繪製與標題值,明確空值與重複實例隔離照舊保留,後續原生繪製耗盡預算時 rollback 依然精確

Version 2.879.0

Added

  • 可建立持久的原生 XFA scalar value 子節點,欄位、資料與共享別名即時同步,具型別表單持久化、widget 提交、重複實例隔離與精確交易式 rollback 一應俱全

Version 2.878.0

Added

  • 會產生真實的 Windows 簽章外觀設定檔,內嵌 Unicode 字型,涵蓋合併與分離 widget、旋轉、加密與認證流程,並以實際產生的設定檔強制執行必要的 AppearanceFilter

Version 2.877.0

Added

  • 真正的彩色與無色 PDF tiling 與 shading pattern 可渲染,繼承 pattern 原點、巢狀 cell、重疊、筆畫與 stencil 塗佈、透明度與設有上限的取消,原生 Linux 與 Windows 目標都支援

Version 2.876.1

Fixed

  • 套用缺實例的表單與範本預設時,完整的 XFA SOM 綁定與實際發佈實例的資料選取照舊保留,不會從其他重複出現處借用值

Version 2.876.0

Added

  • 已驗證的 CRL 與 OCSP 證據會內嵌到簽署的 Windows Adobe RevocationInfoArchival 屬性,實際的 seed 政策會強制執行,發佈簽章前先驗證信任狀態、回應授權與新鮮度

Version 2.875.0

Added

  • 讀取時解析實際的 XFA 欄位預設值但不憑空造資料,明確的空實例值照舊保留,編輯會寫入獨立實例資料而不改動共享範本

Version 2.874.0

Added

  • 原生 rich-text 欄位可用具型別 Unicode 樣式 runs 編輯,實際內嵌 regular、bold、italic 與 bold-italic 字型,量測出的混合字級外觀基線、裝飾與同步的 V/RV 值跨 widget 與加密輸出皆一致

Version 2.873.0

Added

  • 原生腳本可建立持久的 per-instance XFA UI 選項,實際的文字、密碼與選項 widget 具備多行與量測的長單詞外觀

Version 2.872.0

Added

  • 可建立真實的 Windows DocMDP 認證簽章,附 P1、P2 或 P3 權限與已驗證的 Unicode 法務聲明,必要的 seed 政策與 FieldMDP 鎖定會遵守,後續簽章僅在已簽政策允許處放行

Version 2.871.1

Fixed

  • XFA 事件主體會在自己的詞彙與嚴格範疇中執行,外層範疇保留欄位別名,事件的 this 值、明確 return 與精確的失敗 rollback 都不受影響

Version 2.871.0

Added

  • 實際的原生事件腳本可補建缺失的 XFA 字型、段落、填色、顏色、邊框、邊緣與角落屬性,穩定的 per-instance 表單綁定會持久化並附精確 rollback,樣式實際變更後會重建可選的 widget 外觀

Version 2.870.0

Added

  • 原生 Windows Cairo 輸出真實渲染,明確採用 GDI 標準字型輪廓與正確的 Win32 OpenJPEG 呼叫慣例,原生相依釘選版本可重現,輸出驗收獨立進行

Version 2.869.0

Added

  • Windows 文件簽署走真實的同步 C ABI RFC 3161 傳輸 callback,支援 SHA256、SHA384 或 SHA512 imprint、已驗證的 TSA 信任與 CRL 檢查、必要的時間戳記 seed 限制與設有上限的交易式發佈

Version 2.868.0

Added

  • 遮罩密碼與字面檔案選擇欄位外觀會產生,Unicode 值與 AES-256 政策保留,跳脫的補充 Unicode 可通過原生 JSON ABI,subnormal PDF 十進位來源 token 照舊保留,並能在無螢幕 DC 下建立 RGB prefetch 緩衝

Version 2.867.0

Added

  • XFA rich text 跨 inline 樣式換行時具備量測的單詞邊界、明確換行、共享行基線與對齊、實際的兩端對齊詞距與片段連結幾何,原生重複實例的 XDP 持久化照舊保留

Version 2.866.1

Added

  • 原始簽章的 RFC 3161 token 會以其實際支援的 SHA256、SHA384 或 SHA512 message imprint 演算法驗證,既有的 SHA256 請求預設與完整的 token 信任及撤銷檢查不受影響

Version 2.866.0

Added

  • 混合字級的 XFA rich text runs 會對齊共同的已存 PDF 基線,呼叫端的文字位置模式照舊保留,相鄰段落取較大邊距,空段落過渡也一併套用

Version 2.865.0

Added

  • 可為明確的 SHA256、SHA384 與 SHA512 message imprint 請求並驗證 RFC 3161 時間戳記,不會對 imprint 重複雜湊,嚴格摘要長度、新鮮 nonce、設有上限的傳輸、信任鏈與撤銷驗證都保留

Version 2.864.0

Fixed

  • 條碼掃描期限維持原本行為:優先處理完整線性光柵與靜區候選群組,DataMatrix 投影 finder 邊框無效時在取樣內部模組前就拒絕,finder 容差維持不變

Version 2.863.0

Added

  • 合法繼承的 Windows 簽章 seed 與憑證限制會遵守,包含實際摘要與 CAdES 選擇、Unicode 簽章資訊、正規化的間接欄位鎖定、已驗證的歷史鎖定權限、允許的第二組簽章與加密表單政策

Version 2.862.0

Added

  • 真正的原生 function、axial 與 radial PDF shading 可渲染,幾何與函數求值設有上限,繼承裁剪與 Domain、Matrix、Extend、BBox 語義齊備,校準與特殊色彩、透明度、軟遮罩、混合與 knockout 群組都支援

Version 2.861.0

Added

  • 可匯出真正的原生合約審閱標註 PDF 與明確的 Unicode 高亮,附可見的 normal 外觀,來源內容與增量簽章修訂保留,已驗證的 P3 標註權限與加密使用者權利會強制執行,callback 發佈前先備妥設有上限的輸出

Version 2.860.0

Added

  • 原生 Linux 簽署與驗證選項可綁定實際摘要選擇、Unicode 簽章中繼資料、具名外觀設定檔、明確信任位元組、時間戳記傳輸身分與已驗證撤銷證據,發佈前的私有準備設有上限

Version 2.859.0

Added

  • 即時的 per-instance XFA 字型、段落與 scalar 本體覆寫會套用到實際 rich text 繪製與量測,inline CSS 優先權與明確空內容經原生 XDP 持久化保留,精確交易式 rollback 不變

Version 2.858.0

Added

  • 跳脫的 PDF 字型、編碼、字形、顏色與資源名稱在原生渲染與共用文字擷取中只解碼一次,字面 hash 資源鍵照舊保留,等價名稱與實際輪廓及字形度量保持對齊

Version 2.857.0

Added

  • 原生文件比較涵蓋頁面與物件數、Unicode 文字、正規化結構圖與實際渲染的 RGB 或亮度像素,語義串流等價、已驗證加密輸入,callback 發佈前的準備設有上限

Version 2.856.0

Added

  • 以註冊的設定檔名稱挑選實際的原生簽章外觀預設,產生不同的 approval、certification 與 compact 版面,已驗證的設定檔中繼資料與加密政策保留,未知設定檔在發佈前即拒絕

Version 2.855.0

Added

  • 套用原生 XFA 屬性 schema 預設並保留明確空值、per-instance 樣式,以及小數點數的字型、邊框與繪製量測,實際 AcroForm 與攤平 PDF 輸出皆然

Version 2.854.0

Added

  • 揭露原生 XFA 屬性與 attribute 物件,附持久的 per-instance 表單綁定、同步的值/資料寫入與實際的字型、邊框、段落及 UI 版面效果,交易式 rollback 與無腳本焦點預算照舊

Version 2.853.0

Added

  • 真正的 Adobe 撤銷證據會以已驗證 CMS 簽署屬性內嵌,發佈前以明確信任與最新 CRL 或 OCSP 證據驗證完整憑證與時間戳記鏈,必要的簽章 seed 撤銷內嵌會強制執行

Version 2.852.0

Added

  • 認證簽章可寫入已驗證的 Unicode 法務聲明,僅認證情境的 Legal seed 要求會遵守,既有的法務統計與 catalog 權限保留,加密字串政策不變

Version 2.851.0

Added

  • 路徑、文字、打包影像與 Indexed 調色盤中可渲染物理 Lab ICC 來源色與設有上限的 XYZ 相容輸入,校準與 ICC 替代色調經 RGB 或 CMYK 群組保留,內嵌 JPX 設定檔連同獨立或關聯 alpha 一併套用

Version 2.850.0

Added

  • 相容的缺字型文件可轉換為可搜尋文字與向量 PDF/A-4,明確採用設有上限的 Ghostscript 字型內嵌、真正的 veraPDF 驗證與原子化發佈,並在各發行版一致挑選原生 Unicode TrueType 字型

Version 2.849.0

Added

  • 內嵌的簡單 Type1 與 Type1C 字型以宣告或內建的 Adobe 字形編碼精確渲染,ToUnicode 擷取與顯示輪廓分離,並接受已驗證的中性筆畫調整與相對比色圖形狀態

Version 2.848.0

Added

  • 在每個萬用字元 context 內解析完整的 XFA 子孫路徑後綴,本地出現邊界保留,述詞在目前事件範疇執行並附精確交易式 rollback

Version 2.847.0

Added

  • 強制執行繼承的原生簽章 seed 與憑證限制,具備真實簽發者鏈、主體與金鑰用途政策、可選 CMS 摘要、加密 Unicode 簽章中繼資料與鎖定文件轉換

Version 2.846.0

Added

  • 揭露原生 XFA datasets 與資料節點,具備雙向表單綁定、動態實例資料鏡射、穩定保留的參照、獨立的未綁定表單值與交易式腳本重播

Version 2.845.0

Added

  • 從既有或繼承的簽章欄位鎖定發出已驗證的 FieldMDP 參照,加密 Unicode 欄位名稱與認證參照保留,鎖定權限層級照套且不削弱原始已簽政策

Version 2.844.0

Added

  • Separation 與 DeviceN 替代色調以設有上限的向量函數、打包影像與 CMYK 群組混合渲染,None 的 knockout 幾何保留,All 套印色對應一致

Version 2.843.0

Added

  • 動態 XFA SOM 路徑解析支援推斷與相對出現、範疇化述詞、class 與子孫選擇器、萬用字元集合,以及交易式的 script-object 屬性指派

Version 2.842.0

Added

  • 原生雙文件 C ABI 與 Pascal 語義合約比較經共用可移植核心提供,涵蓋來源字形幾何、加密與巢狀內容輸入、備妥的 JSON 或 HTML 檢閱輸出,並發鎖定順序穩定

Version 2.841.0

Added

  • 原生表單更新前先驗證原始 CMS 與 CAdES 修訂,強制執行原始 DocMDP 與 FieldMDP 權限及鎖定欄位,已簽內容與資源保留,按鈕標題中繼資料以原子化方式同步

Version 2.840.0

Added

  • 校準的 CalGray、CalRGB 與 Lab 來源色可渲染,校準群組與頁面混合、Indexed 基底、16 位元影像取樣與 XYZ 亮度軟遮罩都支援,轉換設有上限且 gamma 求值安全

Version 2.839.0

Added

  • FormCalc 實作值複製與穩定節點參照,支援透過參照指派、重新綁定與 null 分離、數值恆等比較、保留的 handle 與交易式 rollback

Version 2.838.0

Added

  • 執行階段產生的 FormCalc Eval 程式可在隔離計算範疇中執行,支援巢狀求值、Unicode 來源、設有上限的編譯重試與交易式 host 回應重播

Version 2.837.0

Added

  • 原生 Linux JSON 表單填寫可產生內嵌 Unicode 外觀,涵蓋文字、選項與多選欄位、核取與單選狀態及按鈕標題,交易式發佈與加密照舊保留

Version 2.836.0

Added

  • 同步 RFC 3161 時間戳記傳輸經相容的擴充原生簽署操作記錄提供,回應設有上限、取消共享,TSA 信任與撤銷驗證明確執行

Version 2.835.0

Added

  • 交易式執行 XFA host 狀態、頁面與生命週期旗標、per-instance 焦點變更、待存編輯驗證與重置操作,識別穩定且詞彙狀態可重播

Version 2.834.0

Added

  • CAdES 簽署憑證識別會對照實際簽署者驗證,與選用的憑證信任脫鉤,內嵌的 Encoding CMap 串流經原生字型配接器解析

Version 2.833.0

Added

  • 直排 Identity-V 與 Unicode 預定義 CMap 可渲染,真實處理 W2/DW2 原點、矩陣、文字位移與裁剪,內嵌 Encoding CMap 串流也能正確解碼

Version 2.832.0

Added

  • 透過原生 Linux callback ABI 簽署,支援 PEM 或設有上限的 PFX 身分、新的 Unicode 外觀欄位與認證,發佈成功後備妥的已簽文件仍留作目前 context

Version 2.831.0

Fixed

  • 簽署 seed、鎖定與唯讀限制對編碼 PDF 名稱一致套用,語義重複的鍵會拒絕,繼承的政策 dictionary 會驗證

Version 2.830.0

Added

  • 進階 XFA 數值、曆法、文字與複合 picture 子句經真實表單事件執行,輸入精度、locale 語義與交易式腳本重播保留

Version 2.829.0

Added

  • 原生頁面資源圖與轉換後的 annotation 外觀可匯入明文或加密文件,相容輸入可轉為可搜尋文字與向量 PDF/A-4,原子化發佈前先做真正的驗證

Version 2.828.0

Added

  • 四分量 CMYK 與 ICC 透明群組及頁面群組可渲染,涵蓋所有混合模式、巢狀 knockout 幾何與共享的色彩設定檔預算

Version 2.827.0

Added

  • 具 locale 感知的 XFA 日期、時間、數值與文字 picture 可執行,內嵌 locale 集、設有上限的交易式 locale 查詢與受保護的 JavaScript IEEE 算術一應俱全

Version 2.826.0

Added

  • 讀寫 Unicode 陣列值的選項選取,排序的選項索引照舊維護,可見與捲動的清單方塊選取都會產生對應外觀

Version 2.825.0

Added

  • 加密文件可透過 Windows JSON 與 C ABI 工作簽署,原始修訂、AES 安全設定、文件 ID 與簽章權限照舊保留

Version 2.824.0

Added

  • 建立原生 Linux HTML 文件、插入可見或貼合的可搜尋 Unicode 文字、執行設有上限且可取消的 Tesseract OCR,並經 Pascal 與 callback API 產出獨立驗證的點陣 PDF/A-4 輸出
  • 渲染圖形狀態的 Alpha/Luminosity 遮罩、設有上限的 transfer function、相加透明與頁面群組、knockout 形狀,以及延伸的 JPEG 2000 取樣與內嵌顏色和 alpha
  • 增量 DSS/VRI 發佈前先驗證提供的憑證、OCSP 與 CRL 證據,既有簽章與 AES 加密不受影響
  • 明確的具型別 XFA host 與 FormCalc 傳輸 callback 可執行,請求設有上限、回應有記錄且可交易式重播

Fixed

  • Free Pascal QuickJS API 回傳的 Unicode 值與例外診斷照舊保留

Version 2.823.0

Added

  • headless CMS 簽章可內嵌已驗證的 RFC 3161 時間戳記,涵蓋 message imprint、nonce、TSA 授權、信任與提供的撤銷證據檢查;必要時間戳記失敗時保留目標檔案
  • XFA script-object 詞彙狀態、巢狀閉包與獨立的重複實例模組照舊保留,具確定性的設有上限交易式重播
  • 明確的字元與單詞間距會套用到量測與產生的 headless Unicode 文字外觀

Fixed

  • FormCalc At 的 source/search 引數順序改為規格正確,空搜尋字串回傳第一個位置

Version 2.822.0

Added

  • 一般 QuickJS 與編譯後的 FormCalc XFA 事件可執行,具備即時重複實例 DOM 操作、交易式標準 form-packet 持久化、自動 initialize/calculate/validate/ready 生命週期,以及設有上限的執行與取消

Fixed

  • XFA 財務函數參數與現金流公式改為規格正確,含格里曆日期原點與負餘數行為,Delphi 與 Free Pascal 都維持 double 精度

Version 2.821.0

Added

  • 原生 headless 文件工作流擴充:版本化 Linux C ABI、真實的 callback 式 text/form/render/sign 操作、設有上限的取消與失敗 rollback、配 HarfBuzz/FriBidi shaping 的 multiline/comb/rotated/choice/button 外觀、PFX 身分、新的可見簽章欄位與 DocMDP 認證
  • 渲染設有上限的影像遮罩、軟遮罩、Indexed/ICC 顏色、PDF 混合模式、隔離 RGB 透明群組、Type3 字形與文字裁剪,並經已驗證的原生文件路徑解碼 JPEG、JPEG 2000、CCITT、JBIG2 與 RunLength 影像串流

Version 2.820.0

Added

  • 支援的原生 headless 單行 Unicode AcroForm 欄位可填寫,具備真正的內嵌 TrueType 外觀、精確字形寬度與 CIDToGID/ToUnicode 對應、交易式多 widget 更新、保留的 AES 安全性、受控字型內嵌,Linux 與 Windows 上皆有設有上限的原子化儲存

Version 2.819.0

Added

  • 支援的 PDF 路徑、水平文字、影像、Form 與既有 annotation 外觀可在 Linux 上以原生 Cairo/FreeType CPU surface 渲染成 PNG,工作量設有上限且可取消,來源保留,PNG 檔案原子化發佈

Fixed

  • PDF 未提供寬度時,十二種標準 Helvetica/Times/Courier 樣式改用規範的 Adobe AFM 推進值,避免替代字型度量造成文字位置累積漂移,明確與內嵌字型寬度不受影響

Version 2.818.0

Added

  • Linux 與 Windows 可發佈真正的原生 headless 增量 CMS/CAdES PDF 簽章,使用既有未簽欄位與明確 PEM 憑證,先前的修訂與 AES-256 安全性保留,精確驗證已簽位元組,並以設有上限的原子化發佈保護既有目標檔

Version 2.817.0

Added

  • 設有上限的 JSON 與 C ABI 文件工作可完整執行:已驗證的增量 PFX 簽署、既有簽章欄位、雙文件比較、六種原生比較模式與雙側合約 JSON/HTML/標註 PDF 檢閱,涵蓋協同取消、資源限制與原子化檔案發佈

Version 2.816.0

Added

  • 原生 headless PDF 簽章驗證具備精確的 ByteRange/Contents 綁定與串流 OpenSSL 3,可從明確 PEM 憑證產生真正的分離式 CMS/CAdES 簽章,Linux 與 Windows 上憑證信任與完整性分開回報

Version 2.815.0

Added

  • 設有上限的 XFA instance-presentation 輔助器可用於條件事件、明確重複綁定、獨立的實例存在與存取、穩定持久化識別、交易式 reflow、host 畫布繪製與無障礙記錄

Version 2.814.0

Added

  • Linux 與 Windows 可開啟原生 headless 的 AES-256 R5/R6 文件,驗證擁有者/使用者權限、解碼加密壓縮物件,並以精確的來源字首保留與設有上限的原子化輸出儲存加密增量表單值

Version 2.813.0

Added

  • 可在設有上限的頁面矩形內重排文字,跨基線與選定的共用 Form 呼叫,能變更字型與寬度、檢視保守的碰撞報告,並以封存的預覽搭配交易式 commit 或 rollback

Fixed

  • 物件序列化後的重複儲存會保留已載入文件的編輯,涵蓋串流轉檔儲存與輸出失敗後的重試

Version 2.812.0

Added

  • 相容的已載入文件可轉換為 PDF/A-4,原始文字、向量、影像與內嵌資源保留,組合可見的 annotation/widget 外觀,保留或加入可搜尋 OCR,明確回報損失,原子化檔案發佈前先驗證保存結果

Version 2.811.0

Added

  • 原生 headless 文件 API 可載入交叉參照串流、混合參照區與壓縮物件串流,驗證設有上限的成員索引與修訂優先序,精確保留寬數值來源,並在 Linux 與 Windows 儲存保留來源的獨立增量輸出

Version 2.810.0

Added

  • 掃描方向、連續角度歪斜、陰影、邊框與明確透視四邊形可用設有上限的可逆幾何校正,採用受信任的 Tesseract 方向證據,並把 OCR 單詞、基線、頁面四邊形與語義版面映射回原始掃描,產出可編輯的結構化輸出

Version 2.809.0

Added

  • JSON 與 C ABI OCR 工作可設定本機 Tesseract 與 RapidOCR 的 CLI 或 DLL 引擎,保留 Unicode 可搜尋文字與掃描像素,探索支援的配接器、驗證明確設定,並強制執行渲染/辨識預算,輸出原子化且發佈失敗會 rollback

Version 2.808.0

Added

  • 原生 Linux 主控台應用程式可載入 classic-xref PDF,抽取含繼承資源的 Unicode 頁面與巢狀 Form 文字,檢視並填寫 AcroForm 文字值,發佈保留來源的增量輸出,附具型別診斷、取消、資源預算與原子化替換

Version 2.807.0

Added

  • 單一光柵可定位多個分離的原生條碼,不同位置的重複 payload 照舊保留,含四角幾何的旋轉與投影 ECC 200 Data Matrix 符號可解碼,彙總掃描預算會強制執行,附取消與原子化結果發佈

Version 2.806.0

Added

  • 新增合約段落比對與字詞、句子層級的修訂比對,附插入、刪除、取代與移動記錄、雙側頁面定位、重複條款保留、明確排除制式樣板文字、設有上限的 HTML 檢閱,以及經原始文件核對的標註 PDF 輸出

Version 2.805.0

Added

  • 匯入 HTML 商用範本時支援巢狀 flex/grid 面板、會換行的列、grid 跨欄,以及並排方塊中的影像與表單控制項;明確提供的 font-face 資源在延後內嵌時仍會保留,並搭配獨立的已解碼影像快取額度

Version 2.804.0

Added

  • 新的 Linux 原生建置涵蓋共用的 PDF 物件、Direct File I/O、內容與字型解碼、壓縮、加解密與寫入器核心,採 POSIX 對應與同步機制,同時保留 Windows API,並正確序列化傳統 xref 項目

Version 2.803.0

Added

  • 新增具版本號的發票設定檔與國家規則層,驗證明確指定的 CII XML 或混合式發票時會產出標明涵蓋範圍的報告,並在明確設定的 Saxon 引擎上執行官方 XRechnung 3.0.2 與法國 CTC 發票規則,可選用已發佈的設定檔,診斷採出錯即封鎖策略

Version 2.802.0

Added

  • 可透過原生 API、JSON 工作與 C ABI,把具型別表格匯出成不依賴 Office 的 XLSX 活頁簿,保留值型別、貨幣與百分比格式、合併儲存格、精確的大整數與選用的來源中繼資料;暫存設有上限,發佈流程保證失敗安全

Version 2.801.0

Added

  • JSON 工作與 C ABI 如今能把已載入文件中選取的頁面匯出為語意化 HTML、XHTML、XML 或 JSON,並把具型別表格匯出為 CSV 或 JSON,支援原生選項、設有上限的暫存、取消、簽署欄位相容性、來源狀態保留與原子化檔案發佈

Version 2.800.2

Fixed

  • 圖形 rollback 之前會先讓已載入的表單關聯快取失效,簽署工作與失敗的文件編輯過後,原始文件仍可安全查詢與重複使用

Version 2.800.1

Fixed

  • 有序平行渲染如今按輸入順序受理記憶體預留,輸出還在等較早頁面時,後面的頁面不會把額度耗盡;Delphi 與 FPC 上仍保留取消機制與有上限的輸出

Version 2.800.0

Changed

  • SVG 文字、已載入的 FreeText 外觀與已載入的文字取代,如今會保留文件的 shaping 特性、script 自動 shaping 旗標與 GSUB 的 script 及語言選擇,使用各個所選字型的 OpenType 資料,並在換字型時保留 Unicode 對應

Version 2.799.0

Changed

  • SVG 向量匯入如今會為實線與漸層筆畫保留繼承的 dash array、dash offset 與 miter limit;原生渲染也會保留帶相位與零長度的 dash 圖樣

Version 2.798.0

Changed

  • 樣式化 Unicode 文字在 fallback 排版過程中如今能保留粗體與斜體字型;具樣式感知的 ResolveFontForCodePoint 與 AnalyzeUnresolvedGlyphs 多載讓 preflight 結果與實際輸出相符,FPC XML 字元參照也會保留 Unicode scalar,不再弄壞文字

Version 2.797.0

Fixed

  • SVG 匯入如今透過隔離的向量透明度 Form 來合成物件與群組的不透明度,保留填色與筆畫各自的 alpha,並在明確的額度限制下保留巢狀資源、clip、mask 與連結行為

Version 2.796.0

Added

  • 透過 JSON 工作與 C ABI 開放設有上限的 PDF/A-4 點陣化歸檔轉換,需明確接受資訊損失,具備結構化的額度錯誤回報、合作式取消、來源狀態還原與原子化檔案輸出

Version 2.795.0

Added

  • 已載入的 PDF 如今可正規化成通過驗證的 PDF/A-4 點陣文件,採嚴格的原生渲染、經驗證的 sRGB 色彩、設有上限的解碼與點陣資源、可取消、來源別名保護,並以原子化方式發佈檔案;轉換報告會點出刻意移除的互動內容與附件

Version 2.794.0

Changed

  • HTML5 匯入如今採用實測的混排方向文字行、會處理寡行與孤行的分頁、選用的連字號斷行、設有上限的 flex 與 grid 版面,以及可觀察的 CSS 診斷;FPC 原生點陣圖也會讓 GDI 直接繪圖與 LCL 影像快取保持同步

Version 2.793.0

Changed

  • 新增設有上限的動態 XFA instance-manager 增刪操作與範本出現事件,包含版面重新綁定、編輯狀態保留、原子化 rollback、資源限制,以及可保存的 XDP 輸出

Version 2.792.0

Changed

  • 擴充 SVG 匯入,支援經實測的內嵌 Unicode 字型、PNG/JPEG 資源、漸層筆畫,以及真正的 Alpha 與 Luminosity soft mask,並修正原生群組 alpha 與 FPC 點陣圖表面的合成

Version 2.791.0

Changed

  • 新增可預覽的已載入 Unicode 文字取代,支援內嵌字型、換行與寬度策略、逐筆比對的診斷資訊、過期取代計畫的偵測、設有資源上限與原子化提交,並提供 JSON/C ABI 的預覽與套用操作

Version 2.790.0

Changed

  • 字形渲染如今實作標準的 CFF Type 2 堆疊與 transient array 運算,字型子集化時也會保留經算術推導的 local 與 global subroutine 相依

Version 2.789.0

Changed

  • 擴充內建條碼解碼,新增 Code 128、EAN/UPC、可應付透視變形的 QR 復原、Data Matrix ECC 200,以及帶 Reed-Solomon 錯誤更正、資料負載解碼設有上限的 PDF417

Version 2.788.0

Changed

  • Windows FPC 如今透過經 ABI 驗證的 codec 橋接支援原生 TIFF、JPEG/JPX、ICC 轉換、JBIG2 與 Zopfli,並以真正的 worker 執行緒處理頁面、有序頁面、tile、band 與 JPEG 2000 tile 渲染,具備額度限制、有序 callback、取消機制與可重現的像素輸出

Version 2.787.0

Changed

  • C ABI 與 JSON 工作處理器如今共用同一組帶 schema 版本的文件操作,涵蓋能力查詢、渲染、Unicode 文字與表單、OCR 圖層、塗黑與 PFX 簽署,並有明確的資源額度、callback 失敗 rollback 與原子化檔案輸出;多頁 callback 輸入也能正確載入

Version 2.786.0

Changed

  • 編輯已載入的 FreeText 時,如今會以原子化方式重建內嵌 Unicode 與 rich text 外觀,涵蓋換行、對齊、不透明度、旋轉、引線、內縮與明確的溢出策略;改寫 stream 內容前會先留存原稿,transaction rollback 時即可還原原始文字

Version 2.785.0

Added

  • SearchableOCR 主控台範例在 RapidOCR 之外新增內建 OCR 與 Tesseract DLL 或 CLI 引擎,可產生三頁的掃描範例檔,並提供頁面選擇、信賴度過濾、辨識額度與詳細的轉換統計

Version 2.784.0

Changed

  • FDF 與 XFDF 批次匯入失敗時,如今會 rollback 先前對欄位與註解的更新,保留呼叫端自有的 transaction,並清除交換失敗的結果中繼資料

Version 2.782.0

Added

  • 本機 Tesseract OCR 轉接器可透過 THPDFTesseractOptions 設定頁面分割、辨識引擎模式、像素上限與逾時,支援單行、單字、稀疏文字與垂直區塊辨識

Fixed

  • 原生 Tesseract 轉接器遇到以垂直為主的基線時,改採文字框的橫向尺寸,避免垂直單詞的長度把可搜尋 PDF 的文字尺寸撐大

Version 2.781.0

Changed

  • Delphi 與 C++Builder 範例集如今新增多頁的條碼欄位實務指南(附商用標籤範例),以及一本完整的導覽手冊,含階層式書籤、具名目的地與可正常開啟的隨附文件連結;精簡版 PDF/A 範例移到 Miscellaneous,重複的獨立 outline 與中繼資料專案則淘汰

Version 2.780.1

Fixed

  • Showcase 的註解頁如今把內容預覽的說明文字與實際的 free-text、印章外觀分開,避免 PDF 閱讀器裡的標籤互相重疊,註解外觀隱藏時各範例仍能辨識

Version 2.780.0

Changed

  • 範例目錄如今以完整工作流程為優先,並把十七個極簡、單一主題或舊有的範例分類到 Miscellaneous 子資料夾;重複的 ImageCompression 與 AddDelPages 專案已移除,功能保留在主要範例與回歸測試裡

Version 2.779.0

Added

  • Delphi 與 C++Builder 的 Showcase 範例如今開啟的是一套十章俱全的文件工作室,附內嵌預覽、搜尋高亮、個人化封面、一鍵審閱浮水印、經驗證的頁面匯出,以及保留編輯內容的 AES-256 R6 保護副本;兩者使用同一套文件引擎,也支援不開視窗的命令列產生

Version 2.778.1

Removed

  • 重複的 Delphi 與 C++Builder TestNumeric GUI 範例已退役,改由自動化的數值回歸測試接手:儲存並重新載入未壓縮與 Flate 壓縮的 PDF 之後,驗證小數頁面尺寸與繪圖運算元,並把寫入檔案的數值陣列納入涵蓋

Version 2.778.0

Changed

  • 頁面與客戶報表範例如今提供更實用的流程:PageOperations 透過擷取、刪除、搬移、插入與附加命令編輯真實 PDF,並在重新載入後驗證;DBTable 則以表格引擎呈現會換行的列、重複表頭與自動分頁,附不需資料庫的預設範例

Version 2.777.1

Fixed

  • OCR 在發佈文字前會擋掉格式錯誤的 UTF-8、不支援的控制字元與不相容的原生偵測模型輸出,計算跨頁單詞上限時也會把丟棄的辨識結果算進去

Version 2.777.0

Fixed

  • 內建 OCR 如今把空白頁或辨識不出內容的頁面當成成功的空結果處理,掃描文件的批次因此能繼續跑完;同時保留 Windows FPC 點陣圖像素,並在整個影像分析過程中持續檢查取消狀態與時限
  • 原生 RapidOCR 的角度分類如今會保留短行的長寬比,而且必須先得到足夠有把握的上下顛倒預測,才會旋轉文字裁切區塊
  • 本機 Python RapidOCR 轉接器如今保留辨識出的行距與標點,不再改以一個個字元發佈、讓字元間冒出多餘空格;Tesseract DLL 轉接器則會在發佈文字前擋掉 C1 控制字元

Version 2.776.0

Added

  • 掃描式 PDF 的文字層如今能在存檔並重新載入後,以原子操作取代已標記的 HotPDF OCR 串流;辨識失敗或結果為空時保留既有圖層、回報被取代的頁面,並附上原生多語 RapidOCR 主控台範例做轉換,且不會覆寫既有檔案

Fixed

  • 同一行相鄰的拉丁與西里爾 OCR 詞之間,如今會補上明確的 Unicode 空格,讓片語搜尋和複製結果穩定;相鄰的 CJK 詞則維持不加分隔
  • Windows FPC 的 JPEG 掃描轉譯在轉成 OCR 點陣圖格式時,如今會保留已解碼的像素,避免 LCL 像素格式變動造成辨識輸入一片空白

Version 2.775.0

Added

  • 原生 RapidOCR 新增本機模型預設集,涵蓋簡體中文、繁體中文、英文、法文、德文、西班牙文、葡萄牙文、義大利文、荷蘭文、土耳其文、日文、韓文、俄文、阿拉伯文和印地文,附搭配的字元字典、經過驗證的模型安裝、水平閱讀順序與多語 Unicode 輸出,Delphi、C++Builder 和 Windows FPC/Lazarus 版本都可用

Fixed

  • 本機處理序 OCR 轉接器在 worker 結束後診斷檔案仍被短暫鎖住時,如今會重試清理暫存輸出

Version 2.774.0

Added

  • 新的原生 RapidOCR DLL 轉接器把本機 ONNX 模型留在處理序內,不需 Python 就能辨識點陣圖快照,支援選用的角度分類與 Unicode 可搜尋 PDF,並以合作式取消驗證輸出額度;Delphi、C++Builder 和 Windows FPC/Lazarus 版本都可用

Version 2.773.0

Added

  • 本機 RapidOCR 轉接器新增明確的 ONNX 模型設定、選用的角度分類、本機字元字典與字型、CPU 執行緒控制、離線 preflight,以及 Unicode 可搜尋 PDF 的辨識額度;Delphi、C++Builder 和 FPC/Lazarus 版本都可用

Version 2.772.1

Fixed

  • Tesseract DLL 與 CLI 轉接器如今能在 Windows FPC/Lazarus 的 Win32 和 Win64 版本上運作,保留 Unicode OCR 詞,並讀取目前的 LCL 影像像素來產生可搜尋 PDF 文字層

Version 2.772.0

Added

  • 新增選用的原生 Tesseract DLL 轉接器,帶來多語 OCR:頁面分割與引擎模式可設定、提供 Unicode 詞、信賴度、詞邊界和基線,另有合作式取消、辨識期限與輸出額度,用於產生可搜尋的掃描 PDF

Version 2.771.1

Changed

  • 內建 OCR 如今能辨識淺色或以深色為主背景上的標準、粗體、斜體和粗斜體 ASCII 文字,也接受灰階對比足夠的褪色字跡;含有不確定保留字形的詞會整詞省略,而不是默默丟掉個別字元

Version 2.770.175

Fixed

  • LoadedDocInspector 和 SignatureValidator 遇到讀不了的 PDF 時,如今回傳代表失敗的 exit code,並拒絕無效的命令列參數,不再回報一次成功的空檢查

Version 2.770.174

Fixed

  • LoadedImageExport 如今在匯出任何頁面之前,先驗證每一個影像目的地,避免路徑別名覆寫輸入 PDF 或另一個選取的頁面,並拒絕不支援的格式名稱

Version 2.770.173

Fixed

  • 已轉譯頁面磁碟快取在復原、查找、儲存、失效與淘汰時,如今都會跳過以連結形式掛進來的文件資料夾,快取以外的檔案不受影響

Version 2.770.172

Fixed

  • JSON 工作如今在執行任何操作之前,先拒絕格式錯誤的語法、結尾多餘內容、超出有限 Double 範圍的數字和過深的巢狀,失敗時並釋放已部分解析的值

Version 2.770.171

Fixed

  • PreflightCLI 如今在寫出前先檢查完整的報表輸出計畫,保護輸入 PDF 不被檔案別名覆寫,並拒絕互相衝突的報表目的地;遞迴掃描會跳過以連結形式出現的子目錄,避免陷入循環

Version 2.770.170

Fixed

  • CopyPage 如今在匯出前檢查檔案身分、拒絕衝突的輸出別名,而且在含句點的目錄裡,自動命名的輸出檔仍會放在無副檔名輸入檔旁邊

Version 2.770.169

Fixed

  • JSON 工作的值如今保留逸出的 null 字元、把超出帶號 64 位元範圍的有限數字序列化而不發生整數溢位,整數參數超出範圍時回傳預設值,而且不改變處理序的區域設定

Version 2.770.168

Fixed

  • 簡單物件解析器的復原邏輯,如今遇到未用方括號的陣列主體裡游離的右括號會直接結束,並且在格式錯誤的分隔符之後,仍保留緊接著的有效數字和字典鍵

Version 2.770.167

Fixed

  • HotPDFCLI 如今拒絕與輸入檔案互為別名的輸出路徑,並在開始批次匯出前檢查所有產生路徑,避免命令截斷或取代自己的來源資料

Version 2.770.166

Fixed

  • ExtractText 範例如今在輸出走目錄連接點(junction)或硬式連結時,也會保護輸入 PDF;LoadedImageExport 遇到讀不了的文件或頁面匯出不完整時,則回報失敗

Version 2.770.165

Fixed

  • 直接檔案讀取如今在 I/O 失敗後,會讓未完成的快取回填失效,並在接近帶號 64 位元位移上限時安全地限縮預讀範圍

Version 2.770.164

Fixed

  • RunLength 解碼如今只配置解碼後承載的大小,並在配置輸出前先檢查格式錯誤的 run,串流提早出現終止符時不再過度預留記憶體

Version 2.770.163

Fixed

  • Delphi 和 C++Builder 範例如今從專案資料夾與巢狀建置輸出目錄兩處,都找得到隨附的影像、中繼檔、色彩設定檔和選用的簽章測試素材

Version 2.770.162

Fixed

  • HugeFileBenchmark 範例如今在開始基準批次前,先拒絕與任何輸入文件相同的產生 PDF 路徑
  • C++Builder 範例如今為產生的 PDF 保留相對輸入子目錄,避免遞迴輸入的同名檔案共用到同一個輸出檔
  • 操作失敗、超出記憶體上限,以及無效的零頁載入,如今都會產生非零的 exit code,同時保留基準報表

Version 2.770.161

Fixed

  • Delphi 和 C++Builder 的 Preflight CLI 如今拒絕與輸入 PDF 相同的報表和彙總輸出路徑,報表因此不會覆寫來源文件

Version 2.770.160

Fixed

  • ASN.1 解析如今會拒絕超出所支援 32 位元 tag 範圍的 high-tag-number 編碼,不再接受繞回的 tag 編號

Version 2.770.159

Fixed

  • C++Builder 的 Preflight CLI 如今在遞迴報表和儀表板連結中保留相對子目錄,同名的 PDF 不再互相覆寫
  • Delphi 和 C++Builder 的 Preflight 儀表板,如今對特殊字元和非 ASCII 目錄名稱都能正確編碼報表連結
  • C++Builder 標準驗證失敗如今回傳 exit code 3,且在每一種報表格式的儀表板裡都顯示為無效,載入失敗的輸入也包括在內

Version 2.770.158

Fixed

  • C++Builder 的 PDF 合併範例,如今以執行檔所在目錄為基準解析相對輸入路徑,並避免檔案對話框改變工作目錄
  • 每個產生的書籤,如今指向從它自己的輸入文件複製過來的第一頁

Version 2.770.157

Fixed

  • 物件解析器如今把 PDF 字面字串裡未逸出的 CR 和 CRLF 行尾正規化成 LF,同時保留已逸出的歸位字元與行接續

Version 2.770.156

Fixed

  • LZW 串流壓縮在輸入為空時,如今回報實際寫出的位元組數
  • InitialCodeSize 設為 2 時,LZW 壓縮與解壓縮的往返如今結果正確;壓縮在寫出前會拒絕縮減後字母集之外的字面值

Version 2.770.155

Fixed

  • 在 Win64 版本裡,當應用程式解除浮點例外遮蔽時,匯入帶指數接近 100 之數字(例如 1e-100 或 5e99)的 SVG 或 XPS 路徑資料,不再觸發浮點溢位
  • 這類數字如今按實際數值讀取,尾數很長又帶大負指數的數字也能正確匯入

Version 2.770.154

Fixed

  • 未設定解碼區域時,DecodeLoadedPageBarcodes 如今在 CropBox 與 MediaBox 不同的頁面上,回報正確的條碼邊界;先前位置會被裁切框位移帶偏,或以錯誤的頁面高度縮放
  • 在這類頁面上,DetectLoadedRedactionFindings(啟用臉部偵測時)的臉部結果,如今落在偵測到的臉上,不再有位移偏差
  • 這兩個功能都轉譯可見頁面區域(CropBox 裁到 MediaBox),如今也把偵測到的位置經由同一個區域映射回去;傳給自訂 IHPDFFaceDetector 的頁面框,如今與它收到的點陣圖一致
  • 以明確區域解碼條碼,以及沒有 CropBox 或 CropBox 等於 MediaBox 的頁面,行為維持不變

Version 2.770.153

Fixed

  • ApplyLoadedOCRTextLayer 如今在 CropBox 與 MediaBox 不同的頁面上,能把隱形文字層放對位置;先前可搜尋文字會被裁切框位移帶偏,或以錯誤的頁面高度縮放,選取範圍和搜尋命中因此對不到看得到的字
  • OCR 點陣圖如今從可見頁面區域(CropBox 裁到 MediaBox)轉譯,辨識出的詞位置也經由同一個區域映射回去
  • THPDFOCRRequest 傳給自訂 IHPDFOCREngine 的頁面框,如今是轉譯出的可見區域,與它收到的點陣圖一致
  • 沒有 CropBox 或 CropBox 等於 MediaBox 的頁面,行為維持不變

Version 2.770.152

Fixed

  • GetLoadedInvoiceSummary 如今把買方名稱(BT-44)以解碼後的文字回傳,帶非 ASCII 字母的名稱(例如 "Müller & Söhne")不再回傳成還帶著 XML 逸出的原始 UTF-8 位元組
  • 買方名稱如今一律從買方交易主體本身讀取,與賣方名稱及其他彙總欄位的做法一致
  • ValidateVisualXmlConsistency 也一併受惠:帶音調符號字母或逸出字元的買方名稱,如今以頁面上實際印出的文字比對

Version 2.770.151

Fixed

  • THPDFTable 如今會把被 RowSpan 綁在一起的列留在同一頁:這組列在剩餘空間放不下時,整組會連同重複的表頭一起搬到下一頁
  • 跨越數列的儲存格,在其涵蓋的列續接到下一頁時,不再畫過下邊界
  • 比整頁還高的 row-span 群組仍會逐列拆分,跨列儲存格在每頁的下邊界處切開
  • TotalHeightRendered 會反映最後一頁上搬移後的群組

Version 2.770.150

Fixed

  • ColSpan 或 RowSpan 為零或負數的 THPDFTable 儲存格,如今按表格格線原本排定的位置畫成單一儲存格,不再把後面的儲存格擠到錯誤的欄
  • 負數 span 不再讓表格讀到格線之外,超出最後一欄或一列的 span,在量測和繪製時也都會在表格邊緣切齊
  • 第一個詞就比欄寬的儲存格,不再以空行開頭,列高因此不會比換行文字實際需要得還高

Version 2.770.149

Security

  • DOCTYPE 裡宣告內部實體的 XFA 表單,不再能靠反覆參照同一個大實體把記憶體撐爆:內部實體替換出的文字,每份文件上限 16 MB
  • 單一內部實體的值超過 1 MB 就會被拒絕
  • 超出任一上限的文件,載入時會擲出 EHPDFXFAError,不再膨脹成數 GB 的文字;正常使用實體不受影響
  • 含大量實體或字元參照的文字,解碼如今也是線性時間

Version 2.770.148

Fixed

  • RecalculateLoadedFormFieldsIncremental 如今對傳入的每一個變更欄位一視同仁,名稱列出的順序不再影響結果
  • 與某個來源欄位一起被直接寫入值的計算欄位,如今保留寫入的值;先前只有名稱排在該來源之後才不會被重算
  • 依賴這些變更欄位的欄位,仍按計算順序重算一次

Version 2.770.147

Fixed

  • 起始碼為 A 的 GS1-128 條碼(THPDFBarcode type 20),資料如今編在 code set A,與 Code 128 A 一致
  • 這類條碼裡的小寫字母,如今以 SHIFT 切到 code set B 來寫,不再用會被掃描器當成 set A 控制字元的 set B 碼字
  • 因此掃描含小寫文字的 GS1-128 A 符號,如今會得到原始文字

Version 2.770.146

Fixed

  • 啟用 Checksum 時,EAN-2 和 EAN-5 附加條碼(THPDFBarcode types 18 和 19)不再把計算出的位數附加到 Text
  • 反覆繪製這種條碼,如今每次都得到同樣的符號,不再每重繪一次文字就多一位、條紋樣式跟著變
  • 附加符號依定義就不帶檢查字元,所以 Checksum 對它們沒有作用;同位樣式仍像以前一樣由值推導

Version 2.770.145

Fixed

  • XFDF 匯出如今把表單欄位值和註解文字當成 PDF 文字字串解碼(ISO 32000-1 7.9.2.2):UTF-16BE 值、十六進位字串和 bullet 這類 PDFDocEncoding 字元,都會寫成實際的 Unicode 文字,而不是十六進位數字或字碼頁亂碼
  • 匯出到 XFDF 的註解內容、作者、主旨、狀態和疊加文字,如今保留非拉丁字元,例如中文或西里爾文的註解
  • 以 XML 宣告開頭的 rich text(/RC、/RV),如今嵌入時會拿掉宣告,匯出的 XFDF 因此仍是格式正確的 XML
  • XFDF 匯入不再把文字經系統 ANSI 字碼頁轉換:PDFDocEncoding 表示得了的值就照這種編碼儲存,其餘存成 UTF-16BE 文字字串,表單欄位和註解文字都適用
  • 匯出的 XFDF 檔案,ANSI 字碼頁之外的字元如今經 ImportLoadedFormFromXFDF 和 ImportLoadedAnnotationsFromXFDF 往返後保持原樣,不再變成問號

Version 2.770.144

Fixed

  • 發票彙總裡的名稱和其他文字,如今從 UTF-8 發票 XML 解碼,像 "Müller GmbH" 這樣的賣方不再回傳成亂碼多位元組字元
  • 逸出的標記字元和字元參照如今會解析,XML 裡的 "A & B" 回報為 "A & B"
  • 賣方名稱帶音調符號字母或 & 字元、而且頁面上確實印出時,ValidateVisualXmlConsistency 不再誤報它沒出現在可見頁面文字裡
  • 彙總文字以系統 ANSI 字碼頁回傳,因為彙總 record 的欄位是 ANSI 字串;該字碼頁表示不了的字元會變成問號

Version 2.770.143

Fixed

  • GetLoadedInvoiceSummary 如今從檔頭的金額加總取得發票層級的淨總額(BT-106),不再取第一個列明細項的金額
  • 稅額合計、總計金額和應付金額,同樣改從檔頭加總讀取,ZUGFeRD 1.0 發票也一樣
  • 開立日期(BT-2)如今回傳純日期值(例如 20260305),不再夾帶巢狀的 DateTimeString 標記
  • HPDFFacturXXMLElementText 如今回傳整個元素的字元資料並移除子標籤,也不再比對到名稱只是以要求名稱開頭的元素

Version 2.770.142

Fixed

  • XFDF 匯出如今把基本多文種平面以外的字元(例如 emoji 或罕見 CJK 表意文字)寫成有效的四位元組 UTF-8,不再分別編碼各個代理對半部,嚴格的 XML 讀取器因此能接受檔案
  • XFDF 匯入如今把 U+FFFF 以上的字元參照(例如 😀)解碼成完整字元,不再截斷成不相干的 BMP 字元
  • 沒有對應 Unicode 純量值的字元參照,以及匯出時不成對的代理對,如今都變成 U+FFFD,不再破壞文字
  • 舊版本寫出的 XFDF 檔案,仍能正確匯入

Version 2.770.141

Fixed

  • 含反斜線的欄位值和註解文字(例如 C:\Data\2024\001 這樣的 Windows 路徑),如今經 XFDF 匯出再匯入後保持原樣,數字序列不再被轉成控制字元
  • 反斜線若會在讀回時被當成逸出字元,XFDF 匯出如今比照 PDF 字面字串的寫法,把它寫成八進位逸出 \134(ISO 19444-1 5.8.2)
  • XFDF 匯入只解碼此格式用於控制字元和反斜線的八進位逸出;第三方檔案裡的其他反斜線序列照字面保留
  • 經同一個輕量 XML 讀取器讀入的 SVG 文字,也不再丟失反斜線序列

Version 2.770.140

Fixed

  • 由 RenderCacheFolder 啟用的常駐已轉譯頁面快取,如今對以 LoadFromFile、LoadFromStream 和 LoadFromRandomAccessSource 開啟的文件都生效;先前一般載入會跳過磁碟層,資料夾裡從來沒有寫入或讀出過任何頁面
  • 從檔案載入的文件,以檔案大小、最後寫入時間和頭尾位元組識別,重新開啟未變更的檔案時不必雜湊整個檔案,就能從快取讀回頁面
  • 從串流或隨機存取來源載入的文件,以其內容的 SHA-256 識別;這類文件要使用磁碟層,請在載入前先設定 RenderCacheFolder
  • 載入後又被編輯的文件,在該次載入的後續操作裡不再讀寫磁碟條目,編輯過的頁面因此不會拿原始檔案的快取頁面來充數,也不會被存成那些快取頁面
  • 磁碟條目如今也取決於頁面轉譯後端和 ICC 打樣流程,不同的後端或輸出設定檔不會重用其他設定轉譯出的頁面;加密文件一律不寫入磁碟快取

Version 2.770.139

Fixed

  • 匯入大型 XFDF 檔案,不再隨檔案大小以平方等級變慢:含數千個欄位或註解的檔案,如今以毫秒而不是秒或分鐘完成解析
  • 含大量換行或其他字元參照的欄位值,解碼如今是線性時間
  • 解析 XFDF 的記憶體峰值用量,不再隨元素數乘以檔案大小成長
  • 經同一個輕量 XML 讀取器讀入的 SVG 輸入,也享受同樣的提速

Version 2.770.138

Fixed

  • DecodeLoadedPageBarcodes 以 90 或 270 度重試頁面時,交給解碼器的點陣如今順時針旋轉,與 AttemptRotationDegrees 的文件說明一致
  • 只在這些重試中找到的符號,如今以頁面上的真實位置回報,不再是點對稱鏡射後的位置
  • 這類符號回報的方向,如今與它在頁面上的閱讀方向一致,不再差 180 度
  • 依賴文件所載順時針旋轉行為的自訂條碼解碼器,如今會收到正確旋轉過的點陣

Version 2.770.137

Fixed

  • 在文件之間複製頁面(CopyPageFromDocument、CopyPageByPhysicalIndex、頁面匯入與合併方法)時,含 "<<"、">>" 或 "["、"]" 的文字字串,不再被變成字典或陣列;像 "Read <<this>> [now]" 這樣的註解留言,先前會被複製成壞掉的字典
  • 十六進位字串(例如註解名稱和識別碼),如今以十六進位形式複製,不再寫成由十六進位數字組成的字面字串

Version 2.770.136

Fixed

  • 在新頁面上建立的註解(AddStampAnnotation、AddTextAnnotation 和 THPDFPage 其他註解方法),如今寫 /Rect 時左下角在前,即 [llx lly urx ury];先前有幾個方法把上邊寫在下邊之前,例如 [395 712 575 652],閱讀器接受這種寫法,但 PDF/A 驗證器和部分處理工具會拒絕或誤讀

Version 2.770.135

Changed

  • THotPDF.RenderCacheFolder 如今是字串型別(Delphi 2009 之後為 UnicodeString,C++Builder 為 UnicodeString),不再是 AnsiString,快取資料夾路徑含系統字碼頁之外的字元時(例如英文版 Windows 上的中文使用者名稱),按原樣使用,不再變成問號
  • 把 AnsiString 指派給這個屬性的程式碼照樣能編譯,值會在指派時轉成 Unicode

Version 2.770.134

Fixed

  • 以 Zoom 類別呼叫 SetOptionalContentGroupUsage 時,縮放範圍如今按 PDF 規格的定義,寫成 /min 和 /max 數字;先前整個值被當成文字字串寫在 /Min 底下,閱讀器會忽略它,圖層的縮放範圍因此毫無作用
  • Zoom 值是最小倍率,後面可選擇再接最大倍率,以空格分隔(例如 '0.5 4');不以數字開頭的值,如今會擲出例外

Version 2.770.133

Fixed

  • 內嵌 CFF/OpenType 字型的子集化,不再丟掉字形還在用的 subroutine;帶超過八個 hint、hstemhm hint 或 counter mask 的字形,先前會被掃描錯誤,用到的 subroutine 可能被換成空的,字形轉譯出來於是缺筆畫或外框破損

Version 2.770.132

Fixed

  • RegisterNChannelColorSpace(帶特別色著色劑定義的那個多載)如今能把含空格或分隔符的著色劑名稱(例如 "PANTONE 185 C"),正確寫成 /Colorants、/Solidities 和 /DotGain 字典的鍵;先前直接寫原始名稱會破壞檔案語法
  • AddPDFX6ExternalOutputIntentSpotData 的 solidity 和光譜資料著色劑鍵,也以同樣方式寫入

Version 2.770.131

Fixed

  • 以 EnableXMPMetadata 寫出的 XMP 中繼資料,在 Title、Author、Subject 和 Keywords 存著系統字碼頁文字時(例如以 AnsiString 指派的帶音調符號字元或中文字元),如今以有效的 UTF-8 帶入;先前直接寫字碼頁位元組,會讓整個封包變成無效 XML,PDF/A 驗證器和 XMP 讀取器都會拒收
  • XML 1.0 不允許的控制字元,如今不會出現在這些 XMP 值裡

Version 2.770.130

Fixed

  • 以 JBIG2Options.AccumulateGlobalsAcrossPages 寫出的 JBIG2 影像,在後面的頁面加入前面頁面沒用過的符號時,如今又能正確解碼;這類頁面先前一直參照第一頁的 globals 串流,裡面缺新符號,閱讀器顯示出來於是亂碼或根本顯示不出來
  • 只要有頁面加入符號,就會寫出一份涵蓋到該頁為止完整字典的 globals 串流,之後都用它;沒加符號的頁面,繼續共用最新那份

Version 2.770.129

Fixed

  • 存回物件帶非 0 世代編號(generation number)的已載入文件時,物件編號如今寫得一致:完整重寫(SaveLoadedDocument 及相關方法)把每個物件、參照和交叉參照條目都以 generation 0 寫出;先前物件標頭和 trailer 保留舊世代,參照和交叉參照表卻用 0
  • 增量更新(SaveIncrementalUpdate 及相關方法)如今以物件真實的世代編號參照既有物件;先前參照一律以 generation 0 寫出,原始文件用其他世代時,就會指向不存在的物件

Version 2.770.128

Fixed

  • THPDFPage.TextOutHTML 設 MaxWidth 換行時,不再丟失格式:多個樣式不同的 run 一起移到下一行時,先前會被合併成一個 run,並以換行當下生效的樣式繪製,顏色、粗斜體、字型、字號、上下標位移和連結於是全丟了;如今每個 run 在新行上都保留自己的格式

Version 2.770.127

Fixed

  • InvalidateRenderedPageCache 如今也會清掉平行轉譯共用的 Type 3 字形和 halftone 條目;整份文件失效後的下一次平行轉譯,先前可能重用為舊內容快取的字形
  • PreflightLoadedPAdES 檢查簽章的 PAdES 等級時,不再順手清空共用的轉譯快取,preflight 之後的轉譯因此保留快取的字形

Version 2.770.126

Fixed

  • 分析已簽署文件的修訂與修改時,欄位名稱含括號或以括號結尾(例如 "Total (net)")如今也能正確回報;先前最後一個字元會被切掉
  • 以八進位逸出或反斜線行接續寫出的欄位名稱,如今也能解碼

Version 2.770.125

Fixed

  • SplitPDFToFiles 寫出每個輸出檔時,不再用預設 PDF 閱讀器打開它;它建立的內部文件,如今關掉了 AutoLaunch

Version 2.770.124

Fixed

  • GetLoadedTrailerID 如今從 trailer 的 /ID 陣列,以十六進位文字回傳文件的永久檔案識別碼;先前它到 document catalog 裡找 /ID,那裡從來不會有,實際上每個檔案都回報不出識別碼

Version 2.770.123

Fixed

  • SetLoadedOpenActionPage 如今寫出的目的地會指名要求的頁面;先前頁面參照被寫成 0 0 R,閱讀器因此無法把文件開在那一頁
  • 目的地保留目前的檢視位置(left 與 top 為 null),不再強制設成 0 0 而跳到頁面左下角

Version 2.770.122

Fixed

  • SetLoadedViewerPreferences 如今把 HideToolbar、HideMenubar、FitWindow 和 DisplayDocTitle 寫成布林值;先前寫成名稱物件 /true 和 /false,閱讀器不把它們當布林,這些偏好設定因此毫無作用

Version 2.770.121

Fixed

  • 當簽章欄位的 /Ff 旗標把 /Reasons seed value 標成必填(bit 4,值 8)時,CheckLoadedSignatureSeedValue 如今會強制執行它;先前不在清單上的理由也能通過
  • 理由比對如今要求完全一致,比照 PDF 對文字字串的處理;seed value 列的是 "Approved" 時,"approved" 不再能過關

Version 2.770.120

Fixed

  • 以 StampLoadedPageText 或 StampLoadedPageShape 對已載入頁面蓋章多次時,每個章如今有自己的不透明度,文字章也各有自己的標準字型;先前第二個以後的章,會重用頁面上第一個章的透明度和字型
  • 不透明度和字型與先前相同的章,仍會共用資源,反覆蓋同樣的章不會膨脹頁面資源

Version 2.770.119

Fixed

  • ExtractLoadedPageStructureText 如今會追蹤 /K 條目為單純 marked-content 編號的結構元素(例如 /K 3 或 /K [0 1]),這是加標籤 PDF 最常見的形式;這類元素先前被忽略,方法對許多加標籤文件因此回報不出結構順序,或以繪製順序回傳文字
  • 文件沒有可用根物件時,方法不再讀到無效的 catalog 條目

Version 2.770.118

Fixed

  • StampLoadedPageText、StampLoadedPageImage、StampLoadedPageShape、StitchLoadedPage 和 FlattenLoadedAnnotations,不再弄壞從父 /Pages 節點繼承資源的頁面;先前它們會給這種頁面一個新的空 /Resources 字典,繼承來的字型和影像於是被藏起來,頁面原本的文字和圖片不再顯示
  • 如今會先讓頁面拿到繼承資源自己的一份複本,再加入新的字型、影像或 form

Version 2.770.117

Fixed

  • ComposeLoadedPagesNUp、ImposeLoadedPagesNUp、ImposeLoadedPagesBooklet 和各個頁面拼接方法,如今會帶上來源頁面從父 /Pages 節點繼承的資源;這類頁面先前排版時缺字型和影像,合成後的版面上,文字和圖片於是缺失或錯誤

Version 2.770.116

Fixed

  • SaveIncrementalUpdateAuthenticated 如今能寫回啟動增量更新時的來源檔案;先前已接受的更新無法取代目標,因為文件還開著來源,呼叫一律以拒絕存取的 commit 錯誤失敗
  • 與就地執行 SaveIncrementalUpdate 相同:取代前先釋放來源,取代失敗就重新開啟,而且要做下一次增量存檔前,必須重新呼叫 BeginIncrementalUpdate

Version 2.770.115

Fixed

  • 結構樹的元素被多個父節點列出(或形成循環)時,RepairPDFUA2Structure 不再花指數時間;語言繼承修復、標題順序修復,以及替代文字修復背後的 marked-content 掃描,如今每個結構元素只走訪一次。先前一棵 24 個元素、每個都把下一個元素列兩次的特製樹,大約要花 40 秒

Version 2.770.114

Fixed

  • 不可拆分的列在重複表頭列之下放不下時,HPDFPaginateTable 不再無止境加頁直到記憶體耗盡;在只裝得下重複表頭的頁面上,這列如今會被拆分(表頭塞滿整頁時,則擺上去並允許溢出)
  • 分隔符在頁面上不留空間,或空白頁面滿足不了註解的最小片段高度時,HPDFLayoutFootnotes 和 HPDFLayoutEndnotes 不再無限迴圈;註解如今直接擺在該頁上

Version 2.770.113

Fixed

  • 可拆分項目帶有比欄高還高的行時,HPDFBalanceColumns 不再卡死;先前它會永遠跳去下一欄。這種行如今單獨擺在空欄頂端並允許溢出,排版繼續進行

Version 2.770.112

Fixed

  • 以標準 security handler revision 4(RC4 或 AES-128 crypt filter)加密的文件,在加密字典省略選用的頂層 /Length 條目時,如今又能開啟;先前載入會失敗,錯誤訊息為 "Unsupported legacy Standard security handler V=4 R=4 Length=40"
  • 這類文件接受任何頂層 /Length 值,因為檔案金鑰固定是 128 位元

Version 2.770.111

Fixed

  • ProcessObjectStreamsForDecompression 和 ExtractRawObjectFromStream,不再信任物件串流宣稱的 /N 數量:超過一千萬的數量會被拒絕,數量也以串流標頭實際裝得下的物件編號對數為上限,特製檔案因此無法逼它們配置或走訪數百萬個空條目

Version 2.770.110

Fixed

  • Direct File API(DADirectEncryptFileAES256、DADirectDecryptFileAES256 及相關方法)如今讀傳統交叉參考區段的 /Root、/Info、/Encrypt、/Prev 和 /XRefStm 時,只認該區段自己的 trailer 字典;增量更新過的檔案,先前可能從較新修訂的物件(例如 outline item)或 trailer 撈到 /Prev,於是失敗或讀到錯的修訂
  • /Prev 鏈繞回已讀過的區段時,如今會停下來,不再重讀同樣的區段

Version 2.770.109

Security

  • 內容拆成多個串流的頁面,ApplyLoadedRedactions 如今也能移除遮蓋區域下的文字;當一個串流以運算子結尾、下一個串流以運算子開頭(例如 ET 後接 BT)時,接縫之後的文字先前會對到錯誤的運算元,區域雖然塗掉了,存檔後文字仍然讀得到
  • 沒有資料的內容串流如今一律跳過,其餘串流因此能與頁面上定位過的文字對齊

Version 2.770.108

Changed

  • GetLoadedOCGCount、GetLoadedOCGName、GetLoadedOCGVisibility 和 SetLoadedOCGVisibility,如今都用同一套索引:選用內容群組在文件 /OCProperties /OCGs 陣列中的位置。先前 Count 和 name 用預設組態 /ON 陣列的位置,visibility 用 /OFF 的位置,setter 用 /OCGs,同一個索引可能指到三個不同的群組;沒有 /OCGs 的文件,仍回退到 /ON 陣列
  • 群組列在 /OFF、或兩個陣列都沒有它而預設組態的 /BaseState 為 /OFF 時,GetLoadedOCGVisibility 如今回報它為隱藏

Fixed

  • SetLoadedOCGVisibility 不再把同一個參照物件同時放進 /OCGs 和 /ON 或 /OFF(文件釋放時它會被釋放兩次),移除條目時也不再洩漏

Version 2.770.107

Fixed

  • CopyLoadedPage 不再讓來源和目標頁面字典,共用同一個 /Contents 和 /Resources 條目物件;文件釋放或目標條目被替換時,共用物件會被釋放兩次,可能損毀記憶體
  • 目標頁面如今拿到來源內容和資源自己的一份參照(直接值則複製),其已轉譯頁面快取條目也會更新

Version 2.770.106

Fixed

  • 載入損壞的 PDF 時,每個讀不了的串流物件不再洩漏記憶體,例如既沒有 /Length 條目也沒有 endstream 關鍵字的串流,或字典或資料載入不了的串流;反覆開啟這類檔案,先前會讓處理序無限成長

Version 2.770.105

Fixed

  • 以空小數部分寫出的數字(例如 "21.",PDF 規格允許),不再讓載入失敗;間接串流的 /Length 若這樣寫,先前會丟掉整個串流,頁面於是一片空白
  • 帶前導加號、整數部分為空(例如 ".5")或整數部分超出 32 位元範圍的數字,如今也能正確讀取

Version 2.770.104

Fixed

  • PDFmerge demo:啟用書籤時,每個來源專屬的書籤如今開到該來源合併後的第一頁;先前所有書籤都指向合併檔的第一頁
  • PDFmerge demo:預設範例來源和輸出名稱,以及表單裡輸入的相對名稱,如今都以 demo 資料夾為基準解析;用對話框加檔案或選輸出,不再改變目前目錄而弄壞相對路徑

Version 2.770.103

Fixed

  • TextOut demo:產生的 TextOut.pdf 如今真的用壓縮內容串流,兌現範例註解的承諾;它把 Compression 設成 cmFlateDecode,不再依賴管不到壓縮的 BeginDoc 參數

Version 2.770.102

Fixed

  • enhanced 中繼檔裡以 AlphaBlend 繪製的影像,經 THPDFEmfPatcher.RenderEmfDirect 轉換中繼檔時,如今保留記錄下的不透明度;先前以零不透明度混合,影像於是消失
  • 記錄的 alpha 格式如今也會遵守,沒有 alpha 色版的影像以固定不透明度混合,不再失敗
  • 標頭或像素資料指向記錄之外,或像素資料比宣告的點陣圖還短的 bitmap 記錄,如今直接跳過,不再讀超出記錄範圍
  • 邊長超過 32768 像素或總量超過 64 百萬像素的點陣圖,如今直接跳過,不再完整配置

Version 2.770.101

Fixed

  • StitchLoadedPage、StitchLoadedPageSideBySide 和 StitchLoadedPageSideBySideEx,如今經由承載該頁內容、頁面框和資源的 Form XObject 繪製來源頁面;先前把頁面字典本身註冊成 XObject,閱讀器畫不出來,拼接後的頁面於是不顯示
  • 多頁拼到同一個目標時,每個拼接頁面都保留:各自取得自己的 XObject 名稱,不再全部共用一個會蓋掉前一頁的名稱

Version 2.770.100

Fixed

  • Form XObject 轉譯時,如今會裁到自己的 /BBox,符合 ISO 32000-1 的要求;form 畫在邊界框之外的內容,不再出現在頁面上
  • 巢狀超過四層的 Form XObject,如今會繪製;先前被當成遞迴而丟棄。巢狀允許到 32 層
  • 直接或透過其他 form 畫出自己的 form XObject 會被偵測到,重複的呼叫予以跳過,並在轉譯診斷裡記上一筆 recursion

Version 2.770.99

Fixed

  • PDFOptimize demo:每個文字頁上那排小矩形如今會描邊,長條看得到,內容串流的每條路徑也都以繪製運算子結尾,符合 ISO 32000-1 8.5.2 的要求;回報的文字 PDF 大小因此略有變動

Version 2.770.98

Fixed

  • 含成對括號且沒有反斜線的字面字串(例如 /Title (Report (draft) v2)),載入文件時如今會完整讀取;先前字串在第一個右括號就結束,字典其餘部分被誤讀
  • 逸出的括號,行為照舊

Version 2.770.97

Fixed

  • 字典物件的字串或名稱值在行尾含 "stream" 字樣時(例如 /Title (Livestream) 的 Info 字典),載入不再把它誤當成串流;先前物件被當串流讀,條目於是遺失
  • stream 關鍵字如今只在字典收尾 >> 之後且位於行尾時,才當成獨立的 token,比照 PDF 規格對串流物件的規定

Version 2.770.96

Fixed

  • Stamp demo:影像選擇器提供的 PNG 和 BMP 檔案,如今也能拿來做影像章;先前只有 JPEG 可用,其他檔案會以無效點陣圖錯誤失敗
  • Stamp demo:橡皮章註解如今如預期放在每頁右上方區域、角落影像章的下方,不再落在右下角與右下影像章重疊
  • Stamp demo:預設輸入、輸出和影像路徑以 demo 資料夾為基準解析,對話框裡選檔不再改變目前目錄,相對名稱因此持續指向同一批檔案

Version 2.770.95

Fixed

  • 帶 policy OID 的時間戳請求(HPDFRFC3161BuildRequest,以及以時間戳機構 policy 簽章),如今把要求的 policy 編成 RFC 3161 規定的單純物件識別碼
  • policy 先前被包在 RFC 3161 保留給請求擴充的 context tag 裡,嚴格的時間戳機構於是拒收請求或忽略 policy
  • 不帶 policy OID 的請求,行為不變

Version 2.770.94

Fixed

  • ViewerPref demo:Initial Zoom 不勾選,如今真的代表 "None (Default)";產生的 PDF 不再以適頁高度開啟,那是元件預設、demo 沒重設的值

Version 2.770.93

Fixed

  • FileAttach demo:從名稱含系統 ANSI 字碼頁之外字元的資料夾執行時,頁面層級的附件註解如今也能建立;附件檔案以純檔名傳入,不用絕對路徑

Version 2.770.92

Fixed

  • HTMLText demo:輸出路徑含系統 ANSI 字碼頁之外的字元(例如希臘文或西里爾文資料夾名稱),如今能正確寫出,不再失敗
  • HTMLText demo:產生的 PDF 不再自動用外部閱讀器開啟,與其他主控台 demo 一致

Version 2.770.91

Fixed

  • 匯入 SVG 和 XPS 路徑時,數百位數的數字,或長數字配上大指數,不再觸發 EOverflow;這類值比照其他超出範圍的數字,予以拒絕
  • 影響範圍是透過 SVG 匯入 API 放置的 SVG 影像和 XPS 路徑幾何,且限於浮點例外未遮蔽的編譯器
  • 一般數字(含帶負指數的長尾數),讀取方式照舊

Version 2.770.90

Fixed

  • EmfDraw demo:轉換失敗(例如輸入中繼檔遺失)如今以 exit code 1 結束而非 0,跑 demo 的指令碼和建置步驟因此能察覺失敗

Version 2.770.89

Fixed

  • CJKAnnotations demo:未安裝 Arial Unicode MS 時,demo 如今真的會退回 Microsoft YaHei;它改為檢查已安裝字型,不再等一個缺字型時永遠不會拋出的例外,CJK 文字於是不會落到沒有 CJK 覆蓋的替代字型上

Version 2.770.88

Fixed

  • 巢狀超過 32 個 q 運算子的內容串流,不再丟掉外層圖形狀態:更深的儲存先前被忽略,配對的 Q 卻仍然還原,巢狀區塊之後的文字和圖形於是用了某個外層 q 之前的狀態
  • 影響範圍是經 content device 介面的文字擷取,以及這類頁面的 SVG 匯出
  • 儲存的狀態如今隨巢狀深度增長;極深的巢狀仍能正確配對

Version 2.770.87

Fixed

  • ImageDemo:「Image zoom」書籤如今會跳到 IMAGE ZOOM 標題本身,而不是第一頁底部附近的某個點

Version 2.770.86

Security

  • 開啟以收件者憑證(橢圓曲線金鑰,ECDH 金鑰協商)加密的 PDF 時,如今會在原始共享密鑰與中間金鑰衍生緩衝區不再需要時立即清空,包括以另一種位元組順序重試時以及每一條提前失敗路徑
  • 找不到所需的 CryptoAPI 函式時,以 Windows 憑證存放區裡的憑證簽章不再把 crypt32.dll 和 advapi32.dll 留在載入狀態

Version 2.770.85

Security

  • 為 charstring 用 sbw 但運算元不足的 Type 1 字形描外框時,不再讀取運算元堆疊之前的記憶體;格式錯誤的運算子予以忽略
  • 以雙位元組運算子的 escape 位元組收尾的 Type 1 charstring,不再讀超過 charstring 結尾

Version 2.770.84

Fixed

  • CMap codespace range 裡字元碼的位元組長度,如今取自其十六進位字串的長度,如 ISO 32000-1 9.7.6.2 所規定;像 <0000> <00FF> 這樣的 range 先前因為上界塞得進一個位元組而被當成單位元組,轉譯和擷取文字時會把雙位元組字元碼切開
  • 從內建 CMap 載入的 codespace range 也會帶上自己的字元碼長度

Version 2.770.83

Fixed

  • 內嵌已安裝 TrueType 字型的子集時,組合字形(帶音調符號的字母之類)中每個帶縮放或 2x2 變換的部件如今都會保留;這種變換之後的部件先前會被誤讀,可能從子集中消失,或其字形參照被寫到變換位元組上
  • 部件互相循環參照、參照超出字型字形數,或指向空字形的組合字形,不再讓字型子集化當機或卡死
  • 在子集中,巢狀在另一個組合字形裡的組合字形,其部件參照只重新編號一次,而不是兩次

Version 2.770.82

Fixed

  • CFF 字型字典(FontMatrix、FontBBox、blue values 等)裡的實數,當同一個位元組裡數字旁還擠著正負號、小數點或指數時,如今也能正確讀取;先前同位元組裡的數字會被丟掉,-2.25 於是變成 -0.5
  • 這些值一律以句點作為小數點來解析,不受 Windows 區域設定影響;在使用逗號當小數點的系統上,先前會因轉換錯誤而失敗

Version 2.770.81

Fixed

  • 文字擷取和 ToUnicode 查詢不再為 beginbfrange 陣列條目回傳前一條多字元目標條目遺留下來的多字元字串;這類字元碼如今對應到自己的單一字元

Version 2.770.80

Fixed

  • 以指定的 axis 值實例化 TrueType 可變字型(例如透過 SetVariableFontAxis)時,當 gvar 資料在某個 tuple 之後還有 sparse tuple,字形不再變形;sparse tuple 先前會從前一個 tuple 的 delta 起算,把那些點移動兩次
  • sparse tuple 略過的點,如今只從該 tuple 列出的點內插,符合 OpenType gvar 規則的要求

Version 2.770.79

Security

  • AddTiffFromFile 如今會拒絕寬乘高超過 2 GB 點陣需求的 TIFF 頁面,改為擲出例外,而不是配置一個大小已繞回(wrap around)的緩衝區並讓解碼器寫過它的末尾(heap overflow)
  • 寬或高為零的 TIFF 頁面同樣會被拒絕
  • 很高的 TIFF 頁面(1200 列以上)如今回報配置失敗,而不是解碼進 nil 緩衝區

Version 2.770.78

Fixed

  • Type 3 字型字形如今遵循水平縮放(Tz):以 200% 水平比例繪製的一段文字,寬度會是自然寬度的兩倍
  • Type 3 字型字形如今遵循文字上升量(Ts),用 Type 3 字型排的上標和下標會升高或降低,而不是停在基線上
  • 字形步進原本就已隨縮放調整;字形形狀如今也與之對齊

Version 2.770.77

Fixed

  • HPDFRFC3161BuildRequest 建立的 RFC 3161 時間戳請求,如今一律把 nonce 編碼成最短形式的 DER INTEGER;隨機 nonce 以零位元組開頭時,請求先前會帶一個多餘的前導零,嚴格的時間戳伺服器會把它當成格式錯誤而拒收
  • 回傳的 nonce 仍保持要求的長度,拿它和時間戳回應比對的呼叫端不受影響
  • 物件串流解密後內容為空的 PDF 2.0 加密檔(AES-256-GCM),不再因 GCM 驗證錯誤而載入失敗;帶有效 authentication tag 的空物件串流如今會被接受,遭竄改的 tag 仍會被拒絕

Version 2.770.76

Fixed

  • Hyperlink demo:連結說明文字和 URL 含系統 ANSI 字碼頁之外的字元(例如希臘文、西里爾文或帶音調符號的文字)時,不再被換成問號;說明文字如今以 Unicode 繪製,上面再疊一個 URI 連結
  • Hyperlink demo:URL 裡的非 ASCII 字元存入 link action 之前,會先以 UTF-8 做百分號編碼,閱讀器因此能開啟預期的位址

Version 2.770.75

Fixed

  • 分量超出 0..1 的 CalRGB 色彩,轉譯時不再擲出浮點例外(EInvalidOp);分量會先裁剪回有效範圍,再套用 gamma
  • 在浮點例外被遮蔽的編譯器上,這類色彩如今轉譯成最接近的範圍內色彩,而不是未定義的顏色

Version 2.770.74

Fixed

  • 多條執行緒同時跑 Direct File API 重寫(例如 DADirectEncryptFileAES256 和 DADirectDecryptFileAES256)時,不再互相破壞輸出;它們共用的 byte-range 複製先前用的是全處理序單一緩衝區

Version 2.770.73

Fixed

  • THPDFSignatureValidationBatch 的共用撤銷快取,如今能為序號最高位元為 1 的簽署者憑證找到 OCSP 回應;這類回應先前儲存和查詢用的序號都少帶前導零位元組,之後的每一個簽章因此都錯過快取
  • 由委派 responder 簽署,或以金鑰識別 responder 的 OCSP 回應,如今儲存在憑證簽發者名下,批次裡之後的簽章可以重用;先前它們被存在 responder 名稱下,或者根本不存
  • 這些情況下,依賴同一批次裡較早簽章所快取證據的簽章,如今能得出受信任的結論,而不是未知的撤銷狀態

Version 2.770.72

Fixed

  • 按名稱查找內嵌檔案(GetLoadedEmbeddedFileSpec、ExtractEmbeddedFileBytes、SaveLoadedEmbeddedFileToDisk 及相關方法)時,當文件的 /EmbeddedFiles 名稱樹有節點把彼此或自己列進 /Kids,不再發生堆疊溢位
  • 每個名稱樹節點只搜尋一次,經由共用節點可達的名稱仍然找得到

Version 2.770.71

Fixed

  • PageSizes demo:中文 8K 和 16K 格式的頁面如今在每套系統上都能印出完整說明;中文格式名稱以拼音標注,因為說明文字用 Arial 繪製,它沒有 CJK 字形,而非 ASCII 文字在非 CJK 字碼頁上會變成問號

Version 2.770.70

Fixed

  • 軸向(Type 2)著色在著色軸遠離繪製區域時,如今也能覆蓋整個繪製區域,例如在頁面邊緣之外定義、帶 /Extend [true true] 的漸層;這類區域先前會留白不畫
  • 適用於 sh 運算子,也適用於當作填色或筆畫顏色的著色圖樣

Version 2.770.69

Fixed

  • Navigation demo:具名目的地 chapter-1 和 chapter-2 如今把頁面開在頂端往下 60 點的位置,而不是捲動到頁面底部;目的地座標用的是 PDF 預設使用者空間,原點在左下角

Version 2.770.68

Fixed

  • 從帶內嵌 TrueType 字型的 PDF 擷取文字時,當字型的 cmap 被截斷卻宣稱有數千個 segment 或 group,不再卡住好幾分鐘;如今會先檢查表長度再讀取 segment 和 group
  • 為內嵌 TrueType 字型建立字形對 Unicode 對照表時,改為按 segment 或 group 把每張 cmap 子表走一遍,而不是逐個查 65,535 個 BMP 碼位,帶大型 CJK 字型的文件擷取也因此提速
  • 經由被截斷的 format 4 或 format 12 cmap 子表查字形時,會停在字型資料末尾,而不是掃描根本不存在的 segment

Version 2.770.67

Fixed

  • 指數(Type 2)函式和拼接(Type 3)函式如今遵循單輸入的 /Domain,例如 [0 0.5];先前它被忽略並換成 [0 1],輸入於是被裁到錯誤的區間
  • 沒有 /C1 的指數函式如今使用預設值 [1.0];這樣定義的 Separation 色彩和著色先前會轉譯成黑色
  • 指數函式如今以輸入本身計算 C0 + x^N (C1 - C0),不再把它重新縮放到 0..1,在 [0 1] 以外的定義域上與 ISO 32000-1 一致
  • 指數函式的輸出只在 /Range 存在時才裁剪到它;帶 Lab 替代色彩空間的特別色(L* 可到 100)先前被裁到 0..1,轉譯出來近乎全黑
  • 指數函式的輸入超出其定義範圍時,如今直接拒絕,而不是擲出浮點例外

Version 2.770.66

Fixed

  • 有些工具以零長度密碼衍生金鑰,匯出時不設密碼的 PKCS#12 / PFX 檔案,如今能在 HPDFParsePFX、HPDFParsePFXByLocalKeyID、HPDFEnumeratePFXIdentities 和各個 PFX 簽章方法裡以空密碼開啟;先前它們會因驗證錯誤而失敗
  • 空密碼時先嘗試 RFC 7292 的標準編碼,再嘗試零長度形式,完整性檢查和金鑰解密都是如此,已經能開啟的檔案因此照原樣開啟

Version 2.770.65

Fixed

  • C++Builder DBTable demo 的頁首如今顯示 "Page 1",而不是 "Page1"
  • C++Builder DBTable demo 寫表格途中出錯時,如今會關掉寫到一半的文件,下一次點擊於是從乾淨狀態開始

Version 2.770.64

Fixed

  • C++Builder 主控台 demo AnnotationInteraction、FormFields、CanvasDraw、EmfDraw、FormXObject、GraphicDraw、ImageDemo、ImageMask、LineGraphicsState 和 RtLTextOut 在不帶參數啟動時,如今和 Delphi demo 一樣切換到執行檔所在資料夾,輸入檔案因此找得到,產出的 PDF 也寫在那裡,即使從別的目錄執行
  • C++Builder Graphic demos 不再對標題含其輸出 PDF 名稱的每個視窗發送關閉訊息,那可能會關掉不相干的視窗
  • C++Builder ImageMask demo 如今和 Delphi 版一樣:檢查 Mask.bmp 和 Image.jpg 是否存在、壓縮輸出、不開啟閱讀器,並回報錯誤,而不是以未處理例外收場
  • C++Builder EmfDraw demo 遇到錯誤(例如缺 Sample.emf)會回報錯誤並回傳非零結束代碼,而不是以未處理例外收場
  • C++Builder AddDelPages demo 以執行檔所在資料夾為基準解析相對輸入輸出檔名,和 Delphi 版一致

Version 2.770.63

Fixed

  • C++Builder FileAttach demo 如今把 FileAttach.pdf 寫在執行檔旁邊——這是 Delphi 版和 readme 用的名稱——而不是工作目錄裡的 Output.pdf,其 FileAttach.txt 附件也留在同一資料夾

Version 2.770.62

Fixed

  • Direct File API(DADirectEncryptFileAES256、DADirectDecryptFileAES256 和其他直接重寫方法)如今能正確讀取超過 2 GiB 的交叉參考串流偏移;這類偏移先前被截斷成負數,大檔案上半部裡的物件因此找不到
  • trailer 或交叉參考串流裡超過 2 GiB 的 /Prev 和 /XRefStm 偏移如今會被跟隨,而不是讀成 0,大檔案較舊的修訂版和混合交叉參考段因此不再被跳過
  • 載入大檔案和檢視其修訂版時同樣適用
  • 新增的 HPDFDirectReadUIntBE64 和 HPDFFindNameInt64 輔助函式會回傳完整的 64 位元值

Version 2.770.61

Fixed

  • /W 欄位寬度為負或大於 8 位元組的交叉參考串流,如今直接拒絕而不解碼;載入會退回掃描檔案尋找物件
  • 遇到這種檔案時,Direct File API 方法(例如 DADirectEncryptFileAES256)不再讀取解碼表格之外的記憶體,也不會再當機,而是拒絕該檔案

Version 2.770.60

Fixed

  • 文字擷取、搜尋和字形定位如今能正確讀取 " 文字運算子:它的第一個運算元是單字間距,第二個是字元間距;先前兩者被對調
  • 用 " 且帶非零單字或字元間距寫出的文字行,不再回報偏移的字形位置——那會讓擷取出的頁面文字合併或切開單字,也會讓搜尋命中位置錯位
  • 頁面轉譯不受影響

Version 2.770.59

Fixed

  • Table demo:「Group A」rowspan 覆蓋的列,其 item 和 note 如今顯示在 Item 和 Notes 欄;先前 note 文字被擠到隔壁欄並被丟掉
  • Table demo 產出的 PDF 不再自動用外部閱讀器開啟,與其他主控台 demo 一致;系統 ANSI 字碼頁之外的輸出路徑也保持原樣

Version 2.770.58

Fixed

  • 把 Flate 資料解壓進串流時,當來源或目標串流中途擲出例外(例如寫入失敗或串流達到大小上限),不再洩漏解碼器狀態(每次約 40 KB)
  • 壓縮字串途中擲出例外時,不再洩漏其暫存緩衝區
  • 成功的壓縮和解壓行為與原先完全一致

Version 2.770.57

Fixed

  • name constraints 擴充未標記為 critical 的憑證,簽章憑證驗證時不再被當成無法讀取而拒絕;這類 CA 憑證先前會讓每一條經過它的鏈都建不起來
  • 這類憑證的限制如今像 critical 一樣套用到鏈的其餘部分,落在許可子樹之外的簽署者名稱仍會回報為 name constraint 違規

Version 2.770.56

Fixed

  • 帶深層巢狀 if 或 ifelse 程序的 PostScript 計算器(Type 4)函式,轉譯時不再發生堆疊溢位;這類函式會被視為不可用,顏色像其他無效函式一樣退回
  • 巢狀上限為 64 層,遠超過實際計算器程式會用到的深度;一般的 Type 4 tint 變換和著色照舊轉譯
  • 求值計算器函式時,每層巢狀消耗的堆疊也更少

Version 2.770.55

Fixed

  • E-Invoice demo:擷取出的 Factur-X / ZUGFeRD XML 以 UTF-8 解碼,名稱和地址裡的帶調字母與其他非 ASCII 字元在 XML 面板中不再呈現亂碼
  • E-Invoice demo:在 Delphi XE2 及之後的版本上,電子發票綜合判定如今決定業務規則步驟的走向,規則檔或規則引擎出錯會讓驗證失敗,而不是靜默通過
  • E-Invoice demo:啟發式一致性檢查發現可見文字與 XML 不一致時,回報為警告,本身不再讓整體驗證失敗

Version 2.770.54

Security

  • CMS 簽章驗證(HPDFVerifyCMSSignature、HPDFVerifyCMSSignatureEx 和已載入的 PDF 簽章)在 signed attributes 缺少 content-type 屬性,或所標 content type 與被簽內容不同時,如今按 RFC 5652 的要求回報簊章格式錯誤;這類簽章先前會驗證為有效,為某個 content type 製作的 signed attributes 於是可以被拿來冒充簽署另一個
  • content-type 屬性重複出現的簽章照舊被拒絕
  • 按定義不帶 content-type 屬性的會籤(countersignature)和 RFC 3161 時間戳權杖照舊通過驗證

Version 2.770.53

Fixed

  • 第二次點擊 C++Builder Annotations demo 的按鈕時,不再先把上一次的文件再寫出一次,才開始新文件
  • C++Builder Annotations demo 建 PDF 途中出錯時,如今會關掉寫到一半的文件,下一次點擊於是從乾淨狀態開始

Version 2.770.52

Fixed

  • 同一個處理序裡多份文件或多個 THotPDF 實例使用同一個磁碟轉譯快取資料夾時,如今共用單一快取索引;先前每個實例各持一份索引,每次儲存都互相覆蓋,最近使用的順序因此丟失
  • 磁碟轉譯快取的文件數與總大小上限,如今在共用資料夾的所有實例之間一體執行,幾個檢視器或轉譯執行緒同時使用時,資料夾不再超出預算成長
  • 同一個資料夾無論大小寫或結尾路徑分隔符差異都能被識別為相同

Version 2.770.51

Fixed

  • 以 bicubic 或 Lanczos3 核心對點陣圖重新取樣,如今對每一種來源像素格式都正確;32 位元、8 位元或 1 位元的來源先前被當成每像素 3 位元組來讀,顏色通道因此錯亂,或讀過每一列的末尾
  • 這類來源會先轉成 24 位元,重新取樣後的影像顏色因此與來源一致;結果仍和以前一樣是 24 位元點陣圖
  • 24 位元來源和 halftone 核心不受影響

Version 2.770.50

Fixed

  • PreflightCLI demo:對單一 PDF 用 -d 時,即使檔案 preflight 未過,dashboard 索引也會寫出
  • PreflightCLI demo:preflight 途中擲例外的檔案會列為失敗,結束代碼也反映每一個失敗檔案
  • PreflightCLI demo:用 -r 時,不同子目錄裡同名 PDF 的報告如今寫進對應的子資料夾,不再互相覆蓋,用 -o 和寫進 dashboard 時都是如此
  • PreflightCLI demo:-f json 和 -f csv 無論帶不帶 --profile / --preset / --aggregate,如今產出同一種 schema,包括 CSV 的 spec 欄
  • PreflightReport demo:帶 profile 產出的 CSV 報告,spec 欄的填寫方式與不帶 profile 的報告一致

Version 2.770.49

Fixed

  • C++Builder LargeFile demo 如今會像 Delphi 版一樣產出 readme 所描述的基準測試輸入集:執行檔旁 BenchmarkInputs 資料夾裡的 LargeFile-Text.pdf、LargeFile-Image.pdf、LargeFile-Mixed.pdf 和 AES-256 加密的 LargeFile-Encrypted.pdf;先前它只寫一個 200 頁的 LargeFile.pdf
  • C++Builder LargeFile demo 接受 --output-dir、--scale(small、default、large、huge)和 --pages 選項,並為產出的資料夾印出 HugeFileBenchmark 命令

Version 2.770.48

Fixed

  • C++Builder Outlines demo 如今把 Outlines.pdf 寫在執行檔旁邊——readme 指名的檔案——而不是工作目錄裡的 Output.pdf,並回報儲存位置而不是開啟閱讀器
  • C++Builder Outlines demo 如今建出與 Delphi 版相同的 10 頁文件、帶 Arial 頁面標籤;先前 y = 830 的頁底標籤被頁面邊緣切掉,最後一頁的「Bottom」書籤指向它們下方
  • C++Builder Outlines demo 寫 PDF 途中出錯時,demo 不再卡到無法再建新文件

Version 2.770.47

Fixed

  • 常駐磁碟轉譯快取如今在名稱含系統 ANSI 字碼頁之外字元的資料夾下也能工作(例如名稱帶非拉丁字元的使用者設定檔資料夾);先前每一次頁面寫入在那裡都失敗,快取從未命中
  • THPDFDiskPageCache 以 Unicode 字串接收根資料夾,所有快取路徑都以 Unicode 保存,包括頁面檔案和快取索引的原子替換

Version 2.770.46

Fixed

  • 區域和瓷磚轉譯(RenderLoadedPageRegionToBitmap、RenderLoadedPageTiles、漸進式區域轉譯)不再讓某塊瓷磚留白——當它唯一的內容來自放置在原點之外的 form XObject 時;form 如今按其 /Matrix 與當前變換放置後,視為覆蓋其 /BBox
  • 用 TD、T*、' 或 " 放置的文字,判斷落在哪些瓷磚時如今落在正確的行上,段落的後續行不再從它們實際出現的瓷磚中被剔除
  • Td 偏移會乘上文字矩陣,並從行首起量,與文字實際繪製的方式一致
  • 估算一段文字的終點時,如今會把字元間距、單字間距、水平縮放和文字上升量算進去,也不再假定字形窄於一個 em

Version 2.770.45

Fixed

  • C++Builder MemStream demo 如今把 MemStream.pdf 寫在執行檔旁邊——Delphi 版用的名稱——而不是工作目錄裡的 Memory.pdf
  • C++Builder MemStream demo 如今會以 LoadFromStream 重新載入記憶體中的 PDF,並在儲存前確認它有一頁
  • C++Builder MemStream demo 寫 PDF 途中出錯時,demo 不再卡到無法再建新文件

Version 2.770.44

Fixed

  • C++Builder HelloWorld demo 啟動時,不再對標題含 HelloWorld.pdf 的每個視窗發送關閉訊息——那可能會關掉編輯器或檔案總管之類不相干的視窗
  • C++Builder HelloWorld demo 把 HelloWorld.pdf 寫在執行檔旁邊,且只有在給了 --open 時才開啟;和 Delphi 版一樣接受輸出檔名或 --output <file>

Version 2.770.43

Fixed

  • 載入頁面樹帶中間 /Pages 節點的 PDF 時,不再丟掉這些節點之下的頁面;這類文件先前只回報直接列在樹根下的頁面
  • 頁面保持頁面樹的順序,頁面索引、頁面框和內容因此與其他檢視器顯示的一致
  • /Type 以間接物件存放的頁面,在這一步排序時也能被識別為頁面

Version 2.770.42

Fixed

  • 載入頁面樹回指自身(某 /Pages 節點把自己列進 /Kids,或兩個節點互相列出對方)的 PDF 時,不再因堆疊溢位當機;每個頁面樹節點只走訪一次,深得離譜的樹會被切斷
  • /Kids 陣列或 /Type 名稱以間接物件存放的頁面樹節點,如今能載入其頁面,而不是失敗或讀到無效記憶體

Version 2.770.41

Fixed

  • THPDFPage.LastAnnotation 如今回傳 AddGoToLink、AddURILink、AddNamedDestinationLink、AddGoToRLink、AddLaunchLink、AddStructureDestinationLink 和 AddGoToRStructureDestinationLink 建立的連結
  • 剛加完連結就對 LastAnnotation 呼叫 SetAnnotationFlags、SetAnnotationBorderStyle 或 AddPopupAnnotationFor 時,不再靜默無效,也不會改到先前建立的其他註解

Version 2.770.40

Fixed

  • 傳給 THPDFJobProcessor.Execute、HPDFDocRunJob 和 HPDFDocRunJobWithCallbacks 的 job JSON 如今全程按 UTF-8 讀取:\uXXXX 轉義不再塌縮到 ANSI 字碼頁,😀 這類代理對轉義能產出預期字元,而不是兩個壞字元
  • merge、split、optimise、encrypt 和 validate job 裡的輸入輸出檔名,無論以原始 UTF-8 還是 \u 轉義書寫,都保留系統字碼頁之外的字元,這類檔案因此能以真實名稱找到和寫出
  • 十六進位位數不足四個的格式錯誤 \u 轉義會被丟棄,不會連帶吞掉後面的字元或收尾引號
  • job 文字開頭的 UTF-8 位元組順序標記會被忽略

Version 2.770.39

Fixed

  • 建簽章和時間戳請求時呼叫端提供的物件識別碼(signature policy、commitment type、claimed role、timestamp policy 之類 OID),當第一個 arc 為 2、第二個 arc 為 48 以上時,如今編碼正確;合併後的首個值先前被截成一個位元組,產出另一個錯誤的識別碼
  • 大到無法表示的物件識別碼 arc 如今以錯誤拒絕,而不是靜默繞回成另一個值

Version 2.770.38

Fixed

  • HugeFileBenchmark demo:用 --recursive --keep-output 時,不同子目錄裡同名的 PDF 不再互相覆蓋產出檔案;工作目錄如今對映輸入資料夾樹

Version 2.770.37

Security

  • 轉譯帶內嵌 TrueType 字型的 PDF 時,當其組合字形列出大量部件、每個部件又是組合字形,不再能卡死轉譯器或轉文字為路徑的匯出;一個字形如今在所有巢狀層級合計最多展開 1024 個部件
  • 回指自身字形的組合字形部件會被跳過,不再一路展開到巢狀上限

Version 2.770.36

Fixed

  • 直接或經由其他函式回指自身的拼接(Type 3)函式,不再一路遞迴到堆疊溢位;它會被視為不可用的函式
  • 影響範圍是以 RenderLoadedPageToBitmap 和其他轉譯路徑轉譯畸形或惡意 PDF 時的 Separation 與 DeviceN tint 變換、著色函式和轉移函式
  • 函式巢狀上限為 16 層;正常文件的巢狀遠淺於此

Version 2.770.35

Fixed

  • C++Builder PageOperations demo 如今跑與 Delphi 版相同的工作流程:也會以 InsertLoadedBlankPage 插入自訂尺寸的空白頁,並以 ExtractLoadedPagesText 印出第 1-3 頁的文字
  • C++Builder PageOperations demo 重排和擷取出的檔案,如今與 Delphi 版包含相同頁面——把最後一頁移到第 2 頁,並擷取第 2、5 頁

Version 2.770.34

Fixed

  • C++Builder Hyperlink demo 在連結清單一頁放不下時,會換新頁繼續;先前超出第一頁底部的連結被寫到頁面之外
  • C++Builder Hyperlink demo 在寫 PDF 期間停用 Add、Remove 和 Make PDF,連結清單因此不再中途變動,文件也不會在產生途中被第二次啟動

Version 2.770.33

Fixed

  • C++Builder Stamp demo 如今相對每頁尺寸放置文字浮水印和橡皮圖章註解;在橫向及其他非 A4 頁面上,圖章註解先前會落到頁面之外,浮水印也偏離中心

Version 2.770.32

Fixed

  • C++Builder ViewerPref demo 的每個按鈕如今都從全新文件開始;先前上一次點擊設下的閱讀方向、初始縮放等檢視器偏好仍然生效,例如 Test Direction 之後再按 Create PDF,寫出的仍是右至左文字和已不再選取的偏好
  • C++Builder PDF_INFO demo 如今把 PDFInfo.pdf 寫在執行檔旁邊——Delphi 版和 readme 用的檔名

Version 2.770.30

Security

  • 憑證路徑驗證(HPDFValidateCMSCertificatePath、線上變體和簽章批次)不再能被內嵌大量同名同金鑰憑證的簽章拖住;這樣一組憑證先前會讓路徑搜尋嘗試每一種排列,排列數以階乘成長,驗證可能忙上好幾個小時
  • 候選鏈裡每個簽發者簽章,如今每次驗證只驗一次並重用結果,而不是每條經過它的路徑都重新驗
  • 路徑搜尋有固定的工作量上限;達到上限時驗證回報沒有有效路徑可達信任錨,一般鏈遠遠碰不到這個上限

Version 2.770.29

Fixed

  • ImportLoadedInterchangeFromFDF 讀取註解和 FDF 狀態時,如今比對完整鍵名:/T 不再停在 /Type 或 /Text,/F 不再停在 /FreeText,/Status 也不再停在開頭相同的更長鍵,匯入的註解因此保留作者和旗標
  • 匯入註解裡巢狀字典的鍵,以及字串值裡長得像鍵的文字,不再被誤當成註解自身的條目
  • 匯入的 FDF 註解和狀態裡的字面字串,如今解碼 ISO 32000-1 定義的全部轉義:\t、\b、\f、八進位 \ddd 和反斜線續行,加上原有的 \n、\r 和轉義括號

Version 2.770.28

Fixed

  • 在使用 XE2 之前 Delphi 版本建置(採用隨附 PNG 讀取器)的程式裡,載入帶壓縮文字(zTXt)區塊的 PNG 時,不再讀過內部緩衝區;先前超過 256 位元組的文字會損壞且長得離譜,大區塊則可能當機
  • 壓縮文字區塊的壓縮方法如今從正確的位元組讀取,方法不支援的區塊會被忽略,而不是被當成 deflate 資料來解碼
  • 被截斷或畸形的壓縮文字不再有無限解碼迴圈的風險
  • 以 Delphi XE2 及之後版本建置的程式使用系統 PNG 讀取器,不受影響

Version 2.770.27

Changed

  • C++Builder SearchAndSelect demo 如今與 Delphi 版一致:建立範例 PDF、載入、以 SearchLoadedDocumentText 找到搜尋詞,並以 AddLoadedHighlightAnnotation 在每個命中上加高亮註解
  • C++Builder SearchAndSelect demo 接受輸入 PDF、搜尋詞、輸出檔和 --case-sensitive 與 --whole-word 選項,並檢查存檔副本中的新註解

Fixed

  • C++Builder SearchAndSelect demo 的高亮如今蓋住命中的單字;先前文字位置被當成基線而不是文字頂端,高亮放高了整整一行

Version 2.770.26

Fixed

  • C++Builder DigiPrint demo 如今能在以句點為小數點的系統上啟動;先前 demo.xml 裡的逗號小數按系統 locale 解析,表單建立途中就擲出錯誤
  • DigiPrint demo 從執行檔所在資料夾讀取 demo.xml 和兩個 JPEG 圖示,並把 demo.pdf 寫在那裡,專案也因此把執行檔放到 demo 資料夾、與這些檔案相鄰
  • DigiPrint demo 的頁尾頁面圖示如今畫在頁尾列之內,而不是頁面底線之下;標題、年份和頁尾文字採用報表樣式的字型大小
  • 多次點擊 DigiPrint 按鈕時,左邊界不再每點一次就往右移一次
  • DigiPrint demo 建 PDF 途中出錯(例如缺圖片檔)時,demo 不再卡到無法再建新文件

Version 2.770.25

Fixed

  • Showcase demo:頁首色帶、封面背景、漸層色票和封底強調色塊,如今與它們所填的形狀對齊;漸層座標以 PDF 預設使用者空間(原點在左下)給定,顏色不再錯位或翻轉
  • Showcase demo:Save Copy 不再切換工作檔案,Regenerate 和 Open External 於是繼續使用主藝廊,而不是最後寫出的副本
  • Showcase demo:產生藝廊失敗時,檢視器會重新繫結並繼續顯示最後載入的藝廊,而不是停在一片空白
  • Showcase demo:含系統 ANSI 字碼頁之外字元的輸出路徑原樣傳遞

Version 2.770.24

Fixed

  • 把四分量(RGB 加 alpha,或 YCC 加 alpha)的 JPEG 2000 影像載入 TJpeg2000Bitmap 時,紅、綠、藍和 alpha 如今放進 32 位元點陣圖的正確位元組;先前顏色通道整體錯位一個位元組,alpha 通道還會蓋掉其中一個
  • 這也修好了 32 位元 TJpeg2000Bitmap 經 SaveToStream 和 LoadFromStream 一來一回後顏色錯亂的問題
  • 三分量彩色影像、灰階影像和四分量 CMYK 影像的載入照舊

Version 2.770.23

Security

  • 值以 << 開頭、以 >> 結尾的文字字串(例如標題、作者、表單欄位值,或「<<URGENT>>」這類註解文字),如今一律存成字串;先前它被原樣寫出,破壞檔案語法,精心構造的文字因此能把動作字典之類的物件注入保存後的文件
  • 適用於新文件,也適用於以 SaveLoadedDocument 及相關方法保存的已載入文件

Version 2.770.22

Fixed

  • C++Builder Barcodes demo 把 Barcodes.pdf 寫在執行檔旁邊,而不是目前工作目錄,並接受可選的輸出檔名作為唯一參數
  • C++Builder Barcodes demo 執行完不再開啟 PDF 檢視器,並且像 Delphi 版一樣壓縮頁面內容、以適合高度縮放開啟
  • C++Builder Barcodes demo 的錯誤如今連同訊息文字一起回報;主控台先前只顯示一個記憶體位址

Version 2.770.21

Fixed

  • 在穩定的 C ABI 中,當同一 handle 上的另一個呼叫還在執行(來自另一條執行緒,或來自 read、write、progress、cancellation 回呼內部)時呼叫 hpdf_document_destroy,不再把該呼叫腳下的文件釋放掉
  • hpdf_document_destroy 一回傳 handle 即失效;文件本身在最後一個執行中的呼叫結束時釋放
  • 與銷毀並發查找 handle 的呼叫會得到 HPDF_STATUS_INVALID_HANDLE,而不是碰觸已釋放的記憶體

Version 2.770.20

Security

  • 以 GSUB 前後文查找回指自身的 TrueType/OpenType 字型整形文字時,不再堆疊溢位當機;巢狀深度如今真的會跨層級累計
  • 觸發大量巢狀查找的前後文規則,不再把查找相乘成近乎無限的迴圈:每個頂層命中最多執行 1024 個巢狀查找

Fixed

  • 從另一個前後文查找可達的鏈式前後文替換(GSUB lookup type 6)如今會被套用;先前它被按普通前後文版面讀取而永不命中,某些連字和前後文字形因此缺失
  • 前後文規則參照到的反向鏈式替換(GSUB lookup type 8)按 OpenType 規格的要求跳過,而不是被誤讀成前後文子表

Version 2.770.19

Fixed

  • 當頁面含影像 XObject 或內嵌影像時,RenderLoadedPageToDC 不再擲出存取違規;影像會畫進呼叫端的裝置內容
  • GetLoadedPageMetafile 在帶影像的頁面上不再失敗,影像也會記錄進回傳的 metafile
  • 裝置內容沒有裁剪區域時,影像對可見表面的裁剪如今使用傳給 RenderLoadedPageToDC 的尺寸

Version 2.770.18

Fixed

  • 啟用網格跳略的 JBIG2 半調區域,不再丟掉起點在區域左方或上方、但仍與區域重疊的網格格;這些格先前被當成遠在區域之外,灰度值被跳過,區域其餘的格也因此解碼錯位
  • 非整數像素的負網格座標,如今按 JBIG2 規格的要求向負無窮捨入,部分可見的格於是落在正確的像素上
  • 網格完全落在非負座標的半調區域不受影響

Version 2.770.17

Fixed

  • responder 以金鑰雜湊按標準 RFC 6960 形式(金鑰雜湊外帶明確的 [2] 標籤)識別的 OCSP 回應,如今重新被接受;憑證路徑驗證先前會丟棄它們,凡以金鑰指名自己的 responder,撤銷狀態於是一直未知
  • 直接 responder(簽發 CA)和以金鑰識別的委派 OCSP 簽章憑證都能匹配,較舊的隱含標籤形式照舊可用
  • HPDFDescribeValidationEvidence 如今以每個回應所指憑證簽發者的 DN(從回應的 issuer name hash 解出)作為 OCSP 描述項的鍵,而不是 responder DN;委派 responder 的回應和以金鑰識別的回應,其描述項因此能被按憑證簽發者的查找找到
  • 新增一個接受 CMS 簽章和額外簽發者憑證的 HPDFDescribeValidationEvidence 多載,用於以金鑰識別 responder 且未內嵌憑證的回應

Version 2.770.16

Fixed

  • Viewer demo:表單啟動時不再擲出存取違規;狀態列如今在檢視器繫結到文件之前就存在,並開始回報頁面切換
  • Viewer demo:在搜尋框按 Enter 如今會啟用第一個命中,而不是直接跳到第二個
  • Viewer demo:目的地頁面無法解析的書籤,列出時不再帶假的「(p0)」尾碼,點擊它們也不再擲出範圍錯誤

Version 2.770.15

Fixed

  • C++Builder Security demo 的解密步驟如今真的以使用者密碼「user」開啟加密範例;先前密碼參數被當成自動解密旗標,範例於是在無密碼下載入,Security-Decrypted.pdf 也不是解密後的副本

Version 2.770.14

Fixed

  • 以 W 或 W* 設定的裁剪路徑,如今按 ISO 32000-1 的要求在路徑繪製之後生效,而不是之前
  • 描邊同時設定裁剪的路徑(re W S)如今畫出完整的線寬;先前筆畫外側一半被路徑自身的裁剪切掉
  • 帶奇偶裁剪的填色加描邊(W* B)如今按繪製運算子自己的繞法規則填色;先前奇偶裁剪會在填色裡挖出洞
  • B* 和 b* 如今一律以奇偶規則填色,不受先前操作遺留的填色規則影響

Version 2.770.13

Fixed

  • 灰度平面採 MMR 編碼的 JBIG2 半調區域如今能解碼;先前各平面輸出反相、每八欄只讀一欄,且每個平面的末尾定位到錯誤位元組,後續平面於是從錯誤位置開始解碼
  • 每個 MMR 平面之後的 end-of-block 標記,無論緊跟在最後一列之後還是隔著位元組填充,如今都能識別,且每個平面都從其後的位元組邊界開始
  • 算術編碼的半調區域不受影響
  • 適用於帶 JBIG2Decode 過濾器、以內建解碼器載入、擷取或轉譯的 PDF 影像

Version 2.770.12

Fixed

  • job 處理器(THPDFJobProcessor.Execute、HPDFDocRunJob、HPDFDocRunJobWithCallbacks)和文件比較產出的 JSON,如今把引號和反斜線轉義成 \" 和 \;先前的 \x22 / \x5C 形式不是合法 JSON,標準解析器會因此拒收含引號或 Windows 路徑的結果
  • 控制字元以 \uXXXX 轉義寫出,輸出一律是格式良好的 UTF-8:非法 UTF-8 的位元組以 U+FFFD 取代,不再原樣複製進結果
  • job 結果和比較錯誤物件裡的錯誤訊息以 UTF-8 編碼,非英文的例外文字和檔名不再以 ANSI 字碼頁送達

Version 2.770.11

Fixed

  • RedactLoadedRect、StampLoadedPageText、StampLoadedPageImage、StampLoadedPageShape、StitchLoadedPage 和 FlattenLoadedAnnotations 在頁面的 /Contents 是串流陣列時,不再丟掉頁面既有內容;新運算子如今以額外串流加在陣列末尾,底襯(underlay)則加在最前面
  • 內容拆成多條串流的頁面上加底襯印章時,每條原始串流都會保留
  • 單一內容串流使用純 FlateDecode 以外過濾器(ASCIIHex、ASCII85、LZW、RunLength、過濾器鏈,或帶 predictor 的 Flate)的頁面,如今在附加新運算子前先解碼,印章、遮蓋框或攤平外觀因此真的畫得出來,原始內容也保持可讀
  • 當頁面的內容串流完全無法解碼時,它原樣保留,新運算子改寫到單獨的串流,而不是附加在已編碼的位元組後面

Version 2.770.10

Security

  • 轉譯內嵌 CFF 字型(FontFile3、Type1C 或 CIDFontType0C)存放 0x80000000 以上 INDEX 偏移的 PDF 時,不再讀取字型資料之外的記憶體;這類偏移先前被當成負數而繞過邊界檢查
  • 內嵌 TrueType 字型對 0x80000000 以上的字形位置和表長度得到同樣處理:字形或字型會被跳過,而不是從錯誤的位置讀取
  • 子程序互相呼叫很多層的 CFF 字形,不再能卡死轉譯或轉文字為路徑的匯出;每個字形如今有固定的 charstring 運算預算,遠高於真實字型的用量

Version 2.770.9

Fixed

  • 文字區域採 Huffman 編碼並在 13 像素模板下做符號精修的 JBIG2 影像如今能解碼;區域標頭裡精修自適應像素的位元組先前被跳過,實例數和其後每個欄位於是從錯誤偏移讀取,影像整個被拒收
  • 採算術編碼、或用 10 像素精修模板的文字區域不受影響,解碼結果與原先完全一致
  • 適用於帶 JBIG2Decode 過濾器、以內建解碼器載入、擷取或轉譯的 PDF 影像

Version 2.770.8

Security

  • 啟用 codec 隔離時,隔離 codec 工作序回傳的解碼影像大小,如今對照設定的輸出上限和主處理序配置的共用記憶體來檢查,而不是對照工作序自己能改寫的容量欄位
  • 被入侵或有故障的工作序,不再能讓主處理序複製到共用記憶體區塊末尾之外;這類回覆按協定錯誤拒收,影像也不會據此繪製
  • 工作序的回覆只複製一次並從該副本驗證,標頭因此無法在檢查與像素複製之間被改動

Version 2.770.7

Fixed

  • 為線上撤銷檢查建立的 OCSP 請求(HPDFCollectCMSRevocationRequests 和線上憑證路徑驗證),如今正確編碼 CertID 的 SHA-256 演算法識別碼;先前前兩個物件識別碼 arc 被寫成分開的位元組,雜湊演算法於是無效
  • 會拒收畸形請求的 OCSP responder,如今對這些請求回以正常狀態而不是錯誤,線上撤銷檢查不再因請求編碼問題而退回離線證據

Version 2.770.6

Fixed

  • 轉譯 Type 3 字型如今會畫出字形的每一次出現;先前同一文字段落裡重複的字形,或頁面上其他大小與方向相同的出現,只有第一次被畫出,之後一片空白
  • 影響 RenderLoadedPageToBitmap、RenderLoadedPageToDC、頁面 metafile 和影像匯出路徑,含共用轉譯快取與否皆然
  • 重複的 Type 3 字形仍使用字形快取,此修復不會為每次出現重新讀取字形程序

Version 2.770.5

Fixed

  • 穩定 C ABI 中,當 hpdf_document_load_from_io 在文件解析途中失敗(例如 read 回呼回報錯誤,或操作中途被取消)時,不再把輸入來源釋放兩次;這類載入先前可能破壞 heap 或讓主處理序當機
  • 失敗的載入如今回傳回呼或取消狀態,而不是內部錯誤,同一個文件 handle 之後可以再次載入
  • 把新文件載入既有 handle 時,前一個輸入來源要等新載入接管後才釋放

Version 2.770.4

Fixed

  • 在帶 /Rotate 90 或 /Rotate 270 的頁面上,DecodeLoadedPageBarcodes 的條碼結果如今回報符號真實位置的邊界,而不是對頁面鏡射後的位置
  • 這些頁面上回報的條碼方向,如今與符號在頁面空間中實際讀取的方向一致
  • ApplyLoadedOCRTextLayer 放在旋轉 90 度頁面上的不可見文字,如今落在辨識出的單字之上,選取和搜尋的高亮於是對準正確位置
  • 旋轉 90 度頁面上遮蓋偵測找到的人臉,如今也對映回正確的頁面區域
  • 未旋轉和上下顛倒的頁面不受影響

Version 2.770.3

Fixed

  • 32 位元建置中,載入或寫出 PixarLog 壓縮的 TIFF 影像不再因堆疊溢位當機;選擇 codec 時會建 companding 表,先前會撞上無限遞迴的指數輔助函式
  • 32 位元建置中的 SGILog(LogLuv)TIFF 影像同樣走修正後的數學輔助函式
  • TIFF codec 使用的 32 位元向下捨入輔助函式,如今對負值向負無窮捨入,且接受大數值而不擲出溢位錯誤,與 64 位元建置一致

Version 2.770.2

Changed

  • 轉譯時,以不超過自身像素尺寸一半繪製的影像,如今在解碼後立即以面積平均縮到精確的繪製尺寸,而不是保留全尺寸、繪製時再拉伸
  • 縮小的影像裝得進解碼影像快取:為了還原 alpha 而以黑白各畫一次的透明群組,如今這類影像只解碼一次,而不是每個 pass 一次;重繪同一頁也是
  • 帶軟遮罩的影像,如今在繪製尺寸下與遮罩逐像素合成,遮罩也一併縮小;這避免為大影像及其遮罩建立並預乘一份全尺寸副本,遮罩邊緣也不再以最近鄰取樣
  • 在範例頁面上,4229 x 4629 的帶遮罩影像以此類群組內約四分之一尺寸繪製時,轉譯從約 4.5 秒降到約 1.8 秒
  • Stencil 影像遮罩保持全解析度,公開的區域解碼方法也照舊回報文件所載的尺寸

Version 2.770.1

Fixed

  • 64 位元建置中,只要透明群組自己沒有設軟遮罩,轉譯帶透明群組的頁面就會以 list index 錯誤失敗——這是 2.769.3 版引入的退步;這類頁面如今恢復正常轉譯

Version 2.770.0

Added

  • 新增 RenderColorimetricLuminosityMasks 屬性,選擇亮度軟遮罩在群組帶 CIE 基混合色彩空間(CalGray、CalRGB、Lab 或 ICCBased)時,如何把顏色換算成遮罩值
  • 設為 true 時按 ISO 32000-1 11.5.3 取 CIE Y;兩種設定下轉譯的點陣圖分開快取

Changed

  • 預設下,亮度遮罩如今不管混合色彩空間為何,都像 DeviceRGB 一樣為其群組的解析顏色加權,與常見 PDF 檢視器一致。CIE Y 以線性尺度量測,ICC 或校準群組裡的中灰先前只遮掉約五分之一,陰影和淡出因此比其他檢視器亮很多
  • 遮罩的 /BC 背景色跟隨遮罩群組內部繪製所用的同一設定
  • 群組使用裝置色彩空間的遮罩照舊轉譯

Version 2.769.3

Fixed

  • 以 Normal 以外混合模式繪製的透明群組——例如設計工具匯出的 Multiply 陰影——如今把自己的顏色和 alpha 與背景混合(ISO 32000-1 11.3.6 和 11.4.8)。群組半透明處的像素先前已含背景色,接著又與自身混合:Multiply 陰影於是過暗,還染上背景的色相
  • 透明群組的內容從 Normal 混合模式起步,因為混合模式是對群組整體生效的(11.6.6)。它先前保留群組繪製時的混合模式,隔離群組於是把自己的內容乘進空的起點,畫成一片黑
  • 與混合模式設在同一個圖形狀態裡的軟遮罩,其遮罩群組以 Normal 混合繪製(11.6.5.2);混合模式先前會把白色的遮罩群組變黑,蓋掉遮罩本該顯示的內容
  • 求非隔離群組的 alpha 時,當其自身的圖形狀態以正常方式混合,群組會以黑白各畫一次;這類頁面的轉譯因此略慢

Version 2.769.2

Changed

  • 帶軟遮罩的影像如今按繪製尺寸解碼,與不帶遮罩的影像一致,其遮罩也按該尺寸解碼;JPEG 遮罩走縮小尺寸的 JPEG 解碼器,而不是完整解碼
  • 影像與其遮罩一律整幅解碼,遮罩因此不會相對影像偏移,裁剪也把繪製內容保留在可見部分
  • 在帶 4229 x 4629 陰影影像和 2114 x 2314 JPEG 遮罩、繪製寬約 1000 像素的頁面上,72 dpi 轉譯從 3.7 秒降到 1.6 秒
  • DecodeLoadedImageRegionAtResolution 對沒有區域解碼器的格式,直接以已解碼狀態回傳整幅影像,不再多複製一次

Version 2.769.1

Changed

  • 軟遮罩建得更快:建遮罩不再保留整頁的第二份副本用來對照——設計工具匯出的漸層和陰影這類多遮罩頁面,先前每個遮罩都要付一次這個代價
  • 校準或 ICC 基混合色彩空間上的亮度遮罩,如今查 sRGB 曲線表,而不是為每個像素的每個通道現算;常見的灰階遮罩內容則經由單一表轉換
  • 帶約二十個軟遮罩的 1125 x 1600 頁面,轉譯大約快五分之一;轉譯出的像素不變

Version 2.769.0

Changed

  • 設定頁面的 Width 或 Height 不再掩蓋錯誤:失敗如今會擲出例外,而不是讓尺寸靜默未生效;對畫布已關閉的頁面設定尺寸,會擲出新的 EHPDFPageClosedError,訊息裡說明原因
  • 這類失敗之後,頁面不再停在後續尺寸變更只更新其 MediaBox、卻不更新繪製所用頁面尺寸的狀態

Fixed

  • 調整已載入 PDF 的頁面尺寸時,不再覆寫其他物件:數值以獨立物件存放的 MediaBox,或多個頁面共用的 MediaBox 陣列,會為被調整的頁面複製一份,其他頁面的尺寸因此不動
  • 調整 MediaBox 數值少於四個的已載入頁面時,如今寫出帶新尺寸的完整 MediaBox;先前新尺寸被忽略

Version 2.768.20

Fixed

  • 文字擷取不再進入會繪製自身的 Form XObject——無論直接還是經由其他 form;這種 form 先前在每個巢狀層級都被再讀一次,文字重複多達十二次,繪製自身兩次的 form 更要跑 4,096 個 pass
  • 落在 form 邊界框(會裁掉它)之外的 Form XObject 文字,不再算進頁面文字

Version 2.768.19

Changed

  • 大文件載入再提速:走訪頁面樹不再為每個頁面搜尋全部已載入物件,LoadFromFile 帶 AutoDecrypt 的加密檢查也改用與載入相同的緩衝區讀檔。56 MB 的 PDF Reference 1.7 如今約 8 秒載入,而不是 22 秒

Version 2.768.18

Fixed

  • 頁面轉譯如今找得到 Windows 以本地化名稱回報的已安裝字型,例如中文 Windows 上的 Microsoft YaHei 或日文 Windows 上的 Yu Mincho;PDF 未內嵌這類字型時,其中的文字先前會用替代字型繪製
  • 不帶空格書寫的字型名稱,如今能匹配 Windows 把部分單字連寫的字族,例如 Microsoft YaHei 對 MicrosoftYaHei、Microsoft JhengHei 對 MicrosoftJhengHei、MS PGothic 對 MSPGothic;先前查找時在每個大寫字母前插空格,從來找不到
  • 轉譯器會記住哪些字型名稱已安裝,帶大量未安裝字型的文件不再在每一頁為每個名稱探詢 Windows

Version 2.768.17

Changed

  • 大文件載入大幅提速:操作遙測如今在操作內至多每 10 ms 取樣一次記憶體,而不是解析器每讀一個物件取樣一次——那次取樣要走訪記憶體管理器的每個區塊。1,236 頁的 PDF Reference 1.6 從約 30 秒降到約 2.5 秒,56 MB 的 PDF Reference 1.7 從四分多鐘降到約 22 秒
  • 這種拖慢會隨應用程式自身 heap 的尺寸增長,持有大量記憶體的應用程式獲益最大
  • UpdateOperationTelemetrySample 新增可選的 Force 參數,不顧間隔直接取樣;每個操作結束時仍然取一次

Version 2.768.16

Fixed

  • 載入空檔案不再卡死;LoadFromFile 先前會從檔案開頭往回讀、永遠迴圈下去
  • 找不到任何頁面的檔案——空檔案、純文字或隨機位元組——不再按大小猜成一或三個空白頁載入;LoadFromFile 如今回傳 0 或擲出例外,與其他不可讀檔案一致
  • 頁面位於加密物件串流裡的加密檔案,在不帶密碼載入時如今擲出例外說明需要密碼,而不是載成空白頁;請改用帶密碼的多載

Version 2.768.15

Fixed

  • 頁面文字不再重複在自身上重繪的字元——疊印標誌,以及以微小偏移把文字畫兩次來偽造粗體的做法就是如此;這類文字先前被擷取兩次,例如「Bold wordsBold words」,對它的搜尋也可能失敗
  • 文字、欄、版面和語意文字擷取都只讀這類字元一次;字形清單仍回報每個繪製過的字形

Version 2.768.14

Fixed

  • 完整 Adobe Glyph List 的字形名稱如今在文字擷取和轉譯中都能解析,包括連字 fi、fl、ff、ffi、ffl,以及較舊的西里爾文、希伯來文和阿拉伯文字型使用的 afii 名稱;以這類名稱命名字形的字型編碼,先前會給出錯誤字元,例如 "defined" 被擷取成 "deÞned"

Version 2.768.13

Changed

  • LoadFromFile 以 64 KB 讀取緩衝區讀取低於 LocalFileMappingThreshold(預設 8 MB)的檔案,映射關閉或不可用時則所有檔案都如此;物件多、又帶傳統交叉參考表的檔案載入快非常多,例如 912 頁的 PostScript Language Reference Manual 從近 3 分鐘降到約 1 秒

Version 2.768.12

Fixed

  • 對 /W 寬度陣列未按 CID 排序的 CID 字型(Type 0),文字擷取如今能擺對字形位置;先前多數字形拿到預設的全 em 寬度,文字行於是衝出頁面邊緣,行尾也從擷取文字和搜尋中消失

Version 2.768.11

Fixed

  • 內嵌 CFF(Type 1C)字型裡由基礎字母加音調符號組合而成的帶調字母(不少從 Type 1 轉換來的字型就是這麼建構的),如今轉譯得出來;ü、é 這類字母先前一片空白,"München" 這樣的詞中間因此斷出一個洞
  • 內嵌字型時,同樣這些字母在 SVG 匯出裡如今也完整無缺

Version 2.768.10

Fixed

  • 內嵌 TrueType 字型的組合字形,如今把每個部件擺在自己的偏移位置:é、Å 這類帶音調符號的字母先前會丟掉符號,彎雙引號則顯示成單引號後面跟一段空隙
  • 內嵌字型時,同樣這些字形在 SVG 匯出裡如今也完整無缺

Version 2.768.9

Fixed

  • 標記 /Interpolate false 的影像,縮小到自己解析度以下繪製時如今會做平均;先前是好幾個像素才取樣一個,以影像放置的圖表因此出現鋸齒、發暗的座標軸標籤與斷掉的細線,其他檢視器裡這些都是平滑的
  • 放大的 /Interpolate false 影像照舊保留硬朗的像素邊緣

Version 2.768.8

Fixed

  • 以窄於一個像素的筆畫繪製的文字(文件常拿這種筆畫做假粗體),如今按原寬度轉譯;先前筆畫一律被畫成整整一個像素寬,這類標題因此顯得糊開、明顯比其他檢視器裡的更粗
  • 內嵌字型與已安裝字型的小字形,在文字轉譯模式 1 與 2 下也以抗鋸齒描邊,用描邊顏色、在填色之後進行

Version 2.768.7

Fixed

  • 對已載入文件呼叫 ProcessObjectStreamsForDecompression,不再把載入時讀到的物件串流丟棄:壓縮物件之後仍可供 ExtractRawObjectFromStream 與 ExtractObjectFromStream 取用,先前則一個都讀不到
  • 方法自行掃描檔案時(例如文件帶傳統交叉參照表的情況),如今找得到緊跟在另一個串流後面的物件串流,並從它自己的字典讀出物件數與偏移量
  • 物件串流快取已釋放該串流時,ExtractRawObjectFromStream 會重新解碼,而不是傳回空結果

Version 2.768.6

Fixed

  • Stamp 範例現在可以在 Win64 上成功建置

Version 2.768.5

Fixed

  • 在中、日、韓語版的 Windows 上,交叉參照串流字典裡帶二進位字串(例如附加檔案的總和檢查碼)的文件,如今不到一秒就能載入;先前一個附了九個 PDF 檔的 4 MB portfolio,開啟要花上兩分鐘
  • 剖析器如今直接在檔案的原始位元組裡找關鍵字,不再透過 Windows 字碼頁轉換過的文字裡找,關鍵字旁的二進位資料再也藏不住它、也挪不動它的位置

Version 2.768.4

Fixed

  • Form XObject 裡的內容,如今以它自己設定的不透明度、軟遮罩與混合模式轉譯;先前 form 內的一切都用全不透明繪出,半透明的浮水印與圖章因此變成了實色
  • 自行帶不透明度的 form 仍像之前一樣整體合成一次

Version 2.768.3

Fixed

  • 頁面文字如今包含頁面透過 Form XObject 繪出的文字,例如頁首頁尾、浮水印與圖章;先前只回傳頁面自身內容裡的文字
  • form 文字出現在 form 被繪製的位置,按 form 的矩陣擺放、以 form 自己的字型解讀,form 裡再巢狀 form 也會跟進
  • 純文字、版面文字、欄文字與語意文字都適用;字形層級的擷取仍只回傳頁面自身內容的字形,其位置也指向該內容

Version 2.768.2

Fixed

  • AES-256 的 EncryptFile 與 DecryptFile,不再損壞字典裡把 /Length1 列在 /Length 之前的內嵌字型檔(Ghostscript 與其他工具就是這樣寫的);這類字型先前被當成單一位元組加密,輸出因此讀不成
  • 長度存在壓縮物件串流裡的串流,經 AES-256 加解密後資料完整;先前這種串流的最後一個位元組可能會丟掉

Version 2.768.1

Fixed

  • 串流長度存放在壓縮物件串流裡的文件(Ghostscript 的寫法),如今能完整載入;先前這種檔案的每個頁面內容串流都被丟棄,頁面轉譯出來一片空白,也抽不到文字
  • 長度指向不存在之物件、或根本沒有長度的串流,如今會一路讀到結尾標記,而不是直接丟棄

Version 2.768.0

Added

  • BuildLoadedPageSVG 與 SaveLoadedPageAsSVG 新增選用的 EmbedFonts 參數;預設關閉,既有呼叫的匯出結果與之前完全一致
  • EmbedFonts 設為 True 時,TrueType 或 CFF 字型程式內嵌在 PDF 裡的文字,改以該字型自己的字形輪廓繪製,系統上沒裝這些字型,SVG 看起來也一樣
  • 每個字形輪廓只寫入一次,字元再出現就重複引用,文字密集的頁面檔案體積因此壓得下來
  • 文字仍以透明文字疊在輪廓上方留在 SVG 裡,照樣可以選取、搜尋,螢幕閱讀器也讀得到
  • 填色、描邊與填色加描邊的文字、線寬、旋轉或縮放的文字,以及當裁剪路徑用的文字,輸出效果與轉譯後的頁面一致
  • 未內嵌的字型、Type 1 字型程式與直排 CJK 文字維持一般的 SVG 文字

Version 2.767.4

Fixed

  • 未內嵌字型的描邊文字與填色加描邊文字(文字轉譯模式 1 與 2),轉譯時如今遵守線寬;先前無論線寬設多少,描邊一律只有一個像素寬
  • 這類描邊如今按已安裝字型的精確字形、在精確位置繪製,與填色文字的既有做法一致
  • 已安裝字型缺字、由 Windows 從後備字型取來的字元,描邊時同樣保住線寬

Version 2.767.3

Fixed

  • 未內嵌字型的文字,如今按其編碼所指名的字元繪製。先前字元碼原封不動送進已安裝字型,後者卻按自己的字元集解讀,於是每個 /Differences 條目、以及 StandardEncoding 或 MacRomanEncoding 與 Windows 字元集不同的碼,都畫出錯誤字元,例如未帶編碼的 Type 1 字型把彎引號畫成直引號
  • 在中、日、韓語版的 Windows 上,自 2.766.83 起,未內嵌字型裡字元碼高於 127 的字元(帶音調符號的字母、彎引號、版權符號等)被畫成問號;如今重新按已安裝字型的字元集解讀
  • Symbol 字型維持自己的字碼對應

Version 2.767.2

Fixed

  • 內嵌字型的大字形如今也有抗鋸齒。超過 64 像素的字形(例如列印解析度下的標題與大字)先前填色時不做抗鋸齒,邊緣鋸齋分明;現在到 256 像素為止都會做抗鋸齒,已安裝字型的更大文字則維持系統的抗鋸齒文字輸出

Version 2.767.1

Fixed

  • 版面文字、欄文字與語意文字擷取,如今以頁面單位丈量頁面。它們先前拿位置與 Tf 給的字型大小、與文字空間的推進量比較,而在許多透過文字矩陣定字型大小的文件裡,這些值只是實際距離的零頭,結果版面文字把每個字母攤到好幾欄、欄文字丟光所有詞間空格、語意文字幾乎一詞一行
  • 三者如今都只回傳可見範圍內的文字,並像純頁面文字一樣,把靠移動文字位置隔開的詞分開
  • 版面文字如今把單詞的字母黏在一起;m、W 這類寬字母先前會把空格擠進詞中間
  • 單欄頁面的語意文字不再每行後面都空一行:連續的整行寬度文字構成一個區段,只有行與行被隔開超過一個行距時,區段切換才把行分開
  • 這些方法的說明頁描述了各自的回傳內容,欄方法也補上完整語法

Version 2.767.0

Added

  • LoadFromFile 與 LoadFromStream 新增帶 AutoDecrypt 參數的多載。AutoDecrypt 為 True 時,以空使用者密碼加密的文件(只限制列印、複製或編輯的文件正是如此)會像檢視器那樣在記憶體中解密開啟,不必提供密碼就能擷取文字、轉譯與匯出頁面
  • 需要密碼的文件與未加密的文件,載入行為與普通多載完全相同;空密碼能否打開文件,在載入前先從檔案的幾個小區段判斷
  • 與帶密碼的多載一樣,這種方式開啟的文件在記憶體中不再是加密狀態,儲存時寫出的是未加密副本

Version 2.766.83

Changed

  • 未內嵌字型(如標準 14 種字型與已安裝的 Office 及中文字型)的小字,如今按未做 hinting 的字形輪廓、在精確位置轉譯,抗鋸齒處理與內嵌字型相同。先前採用系統文字輸出,把每個字形落在整個像素上、形狀遷就像素網格,小字因此間距不勻、觀感斑駁;轉譯後的頁面如今與其他檢視器的形狀和間距接近得多
  • 已安裝字型缺的字形與大字形仍走系統文字輸出,後者能從連結字型取到缺字

Fixed

  • 內嵌字型的小字形繪製更快,因為抗鋸齒背後的點陣圖改為重複利用,不再每個字形重做一份

Version 2.766.82

Fixed

  • 轉譯頁面裡以已安裝字型繪製的文字,如今採用灰階抗鋸齒。先前跟隨系統的 ClearType 設定,轉譯點陣圖裡的黑色文字因此帶著隨機器而異的紅藍邊緣,儲存、列印或縮放後的影像裡也去不掉

Version 2.766.81

Fixed

  • 內嵌 CFF 與 OpenType CFF 字型的小字,如今與 TrueType 文字一樣以抗鋸齒轉譯。這些字形先前填色不做抗鋸齒,在小字級與一般螢幕解析度下,窄於一個像素的筆畫直接消失,正文碎成斷片;以 Helvetica Neue 這類字型排版的表單與文件,現在 72 DPI 下就讀得清

Version 2.766.80

Changed

  • 頁面文字擷取只回傳頁面顯示出來的文字。落在可見範圍(media box 內的 crop box)之外的字形不再納入,裁切邊外的印刷標記、slug 線與其他內容不會再出現在擷取文字裡。字形層級擷取仍回傳每個字形及其位置

Version 2.766.79

Fixed

  • 透過文字矩陣定大小的文字裡,抬升的上標或輕微偏移的基線不再讓頁面文字擷取斷行。先前只要文字上下移動 Tf 字型大小的一半就另起新行,而這類文件裡該值常常是 1,挪動半點就中招
  • 旋轉文字(例如沿頁側向上的標籤、斜向浮水印)不再一字一行。如今以文字行進方向上的橫向位移、對照頁面上文字高度的一半來區分行

Version 2.766.78

Fixed

  • 當 SVG 匯出對未安裝的字型退到通用字型家族時,如今先指名該類的常見字面:serif 之前給 Times New Roman、sans-serif 之前給 Arial、monospace 之前給 Courier New。瀏覽器對光禿禿的通用家族按自身語言設定挑字面,中文或日文瀏覽器因此挑到 CJK 字型,其寬體拉丁字母在取自 PDF 的位置上互相重疊

Version 2.766.77

Fixed

  • SVG 匯出如今對以 GB2312 舊名(如 KaiTi_GB2312 或其中文寫法)為名的字型,指名系統上已安裝的中文字型家族。Windows 應用程式透過系統的字型替代找到這些字型,瀏覽器不會,這類文字因此一直以瀏覽器預設字型顯示
  • 只以單一語言命名的字型,如今也補上已安裝家族的另一個名字(例如 SimHei 連同其中文名),外加一個符合其風格的通用家族

Version 2.766.76

Added

  • THPDFGlyphRecord 新增 GlyphEndX 與 GlyphEndY,即字形自身寬度沿基線在頁面空間中的終點,不含字元間距與單詞間距

Fixed

  • 頁面文字擷取如今能把靠移動文字位置(而非輸出空格字元)隔開的詞分開。許多產生器寫出 [(PDF)-240(Reference)],或用各自的定位運算子擺每個詞,這些詞先前會黏成 PDFReference
  • 字形自身寬度之後的空隙超過文字高度的 0.15 時補上空格;以頁面單位丈量,透過文字矩陣定大小的文字與按字型大小定大小的文字待遇一致
  • kerning、略微放寬的間距、位置調整還回來的緊字元間距、疊印文字與真正的空格字元都保持原樣;兩個中、日、韓文字元之間,無論兩端對齊把它們拉開多遠,都不補空格

Version 2.766.75

Fixed

  • 文字擷取、SVG 匯出與轉譯如今認得 Symbol 字型的字形名,如 copyrightsans、registerserif、trademarksans,以及大括號與方括號的部件(parenlefttp、braceex、integralex 等)。子集化的 Symbol 字型常把這些名稱重新編碼,先前這些字元輸出成原始控制碼
  • ITC Zapf Dingbats 的全部字形名(a1 到 a206)也一併支援,表單欄位與項目符號清單常透過這些名字挑核取記號、叉、箭頭與圈圈數字,如今都能擷取成對應的 Unicode 字元
  • 為字元反查字形名時,仍優先取常用名(如 arrowright、spade),而非 ZapfDingbats 名

Version 2.766.74

Fixed

  • HPDFExtractGlyphsViaDevice 不再因無效的指標操作而失敗。它建立的文字擷取裝置採參照計數,函式卻又明確釋放一次,每次呼叫最後都把裝置釋放了第二遍

Version 2.766.73

Fixed

  • 文字擷取如今按規範要求,以 Q 還原文字狀態(ISO 32000-1 9.3.1)。先前只還原變換,q ... Q 裡設定的字型、字元間距或行距,對後續文字繼續生效
  • 當 q ... Q 內選用的字型以兩位元組碼編碼、外面的字型以單位元組碼編碼時,Q 之後的文字被當成兩位元組碼解碼而整段丟失。Word 及同類產生器就是這樣寫頁面的,典型的受害者是目錄的前導點與夾在中文字串之間的拉丁詞
  • 修正同時涵蓋頁面文字 API 與基於裝置的文字擷取介面

Version 2.766.72

Fixed

  • RestoreState 之後繪製的文字,如今必定先選好字型。頁面會跳過與上一條重複的字型選擇,卻沒考慮到 RestoreState(即 Q 運算子)會把讀取端帶回 SaveState 之前生效的字型。在 RestoreState 之後以配對內所選字型顯示的文字,因此落到無字型或錯字型狀態,檢視器可能直接丟掉它,文字擷取也讀不到
  • 字元間距、單詞間距、水平縮放與行距也照同樣規則跟隨 SaveState 與 RestoreState;RestoreState 之後重設的值會寫出,不再被跳過、而讀取端其實已回到較早的值
  • 選用 Type 3 字型,不再導致下一次選回先前字型時被跳過
  • 轉成 PDF 的 XPS 文件正受其害,因為每段字形都在各自儲存的圖形狀態裡繪製

Version 2.766.71

Fixed

  • 當簡單字型(Type 1、TrueType 或 Type 3)的 /ToUnicode CMap 宣告兩位元組碼空間時(有些產生器對每個字型都這麼寫),文字擷取與 SVG 匯出會把它的碼當兩位元組讀。簡單字型的碼永遠是單位元組(ISO 32000-1 9.6.6),於是每兩個字元被併成一個未知碼,大部分文字就此消失,只剩單一字元組成的字串

Version 2.766.70

Fixed

  • SVG 匯出先前以頁面單位、而非文字空間移動 Td、TD、T*、' 與 " 的運算元(ISO 32000-1 9.4.2)。字型大小來自文字矩陣的文字(文書處理器常寫成 1 Tf 加縮放的 Tm),行與行全疊在第一條基線附近;如今排版與 PDF 一致
  • 內容裝置文字擷取器 THPDFTextExtractDevice 同樣獲得此修正

Version 2.766.69

Fixed

  • 頁面轉譯器把帶 #xx 跳脫的字型名原樣遞給 Windows,這類命名的非內嵌字型(以中文字寫成的 KaiTi_GB2312 等 CJK 字型很常見)比對不到任何已安裝字型,只能用替代字面繪製。跳脫如今會解碼;UTF-8 名稱保留其字元,其他位元組按系統字碼頁解讀

Version 2.766.68

Fixed

  • SVG 匯出先前把帶 #xx 跳脫的字型名原樣寫進輸出,以 UTF-8 位元組存放的 CJK 字型名(如以中文字寫法的 KaiTi_GB2312)到了 font-family 變成 #e6#a5#b7...,永遠比對不到已安裝字型。跳脫如今會解碼;合法的 UTF-8 名稱保留,其他編碼的位元組照舊捨棄

Version 2.766.67

Fixed

  • SVG 匯出先前在 Q 處不還原文字狀態:q ... Q 內設定的字型、大小、間距、縮放、行距、抬升與轉譯模式,全帶到其後的文字。在儲存的狀態裡用 2 Tr 加粗標題的頁面,後面的正文全部被畫成描邊粗字。文字狀態如今與其餘圖形狀態一併儲存與還原(ISO 32000-1 9.3.1)

Version 2.766.66

Fixed

  • SVG 匯出對描邊類轉譯模式(1、2、5、6)的文字描邊時不帶線寬,套用的是 SVG 預設的一個文字空間單位;PDF 產生器用細描邊加粗的文字(如 2 Tr 0.25 w)輸出後粗了一大截。線寬如今從 user space 換算到文字元素的空間,寬度為零時給一像素線,line join 也保留

Version 2.766.65

Fixed

  • trailer 把 /Encrypt 給成直接字典而非參照的文件(某些 PDF 產生器會這樣寫),先前被當成未加密載入:就算密碼正確,頁面照樣轉譯成空白,文字擷取與 SVG 匯出兩手空空,SaveLoadedDocument 寫出的檔案更是損壞——丟了 /Encrypt 卻留著加密串流。如今這類文件的開啟、解密與儲存,與帶間接加密字典的文件待遇相同
  • 交叉參照載入器先前在第一個 >> 處就把 trailer 截斷,trailer 裡巢狀字典之後的條目因此丟失;如今會讀到與之配對的收尾分隔符為止

Version 2.766.64

Fixed

  • 轉譯、SVG 匯出、檢視器與列印先前顯示的是已載入頁面的整個 /MediaBox。頁面的顯示與列印應走 /CropBox、並以 /MediaBox 為界裁剪(ISO 32000-1 14.11.2),帶 crop box 的頁面因此出來偏大、偏移,還帶著本該藏起來的內容
  • RenderLoadedPageToBitmap、tile、band、metafile 與裝置 context 各轉譯器、BuildLoadedPageSVG、檢視器的頁面幾何、高亮與區域快照,以及列印,如今都以可見範圍為準;沒有 /CropBox 的頁面不受影響

Added

  • THotPDF.GetLoadedPageVisibleBox 回傳已載入頁面的可見範圍,即 /CropBox 裁到 /MediaBox 內的結果
  • THPDFPageDisplayList.CropBox 為編譯後的 display list 給出同樣的範圍

Version 2.766.63

Fixed

  • 內建字形清單的搜尋計數比表少 13 條,排序墊底的字形名(y、z、zero、zeta、yen、ydieresis、zcaron 等)因此永遠找不到。文字擷取無視指名這些字形的 /Differences 條目,頁面轉譯器對帶 WinAnsiEncoding 或 MacRomanEncoding 的內嵌 CFF 字型,y、z 與 0 一律用替代系統字型繪製
  • 反查 U+0060 這類音調符號的字形名時,回傳的是 MacExpertEncoding 的小型大寫名(Gravesmall)而非 grave,內嵌 CFF 字型裡這些音調符號也因此漏掉

Version 2.766.62

Fixed

  • 頁面轉譯器把線寬與虛線長度當裝置像素、而非 user space 單位處理(ISO 32000-1 8.4.3.2 與 8.4.3.6);線在各種解析度下像素寬度不變,cm 帶來的任何縮放都被無視。經 macOS Quartz 匯出的簡報(以 1/12700 縮放、EMU 為寬度描邊形狀)整個被描邊顏色蓋滿
  • 描邊寬度與虛線如今跟隨路徑被描邊當下 CTM 的縮放,以描邊類轉譯模式繪製的文字也適用

Version 2.766.61

Fixed

  • SVG 匯出先前漏掉 Type 1 函數式 shading(ISO 32000-1 8.7.4.5.2),無論是 sh 繪製還是用在 shading pattern 裡;如今它沿 /Domain 對 shading 的函式取樣,生成內嵌 PNG 影像,按 shading 的 /Matrix 擺放、裁到 /BBox,底下還墊著 pattern 的背景色

Version 2.766.60

Fixed

  • 頁面轉譯器會繪出 mesh shading 經 sh 顯示時的 /Background 顏色,而 PDF 規範對此不予理會(ISO 32000-1 8.7.4.5.1),mesh 周圍整個裁剪區域因此染上該色
  • 函數式、軸向與放射狀 shading pattern 的背景色,頁面轉譯器先前不畫;如今先填 pattern 的區域再畫 shading,shading 沒鋪到的地方就露出背景色
  • SVG 匯出如今以同樣方式繪製 shading pattern 的背景色,且與轉譯器一樣,對 sh 不予理會

Version 2.766.59

Fixed

  • 頁面轉譯器無視函數式、軸向與放射狀 shading 的 /BBox(ISO 32000-1 8.7.4.5.1);sh 繪製或用在 shading pattern 裡的鋪開 shading 蓋滿整個裁剪區域,不在自己的框前止步。mesh shading 一直守這個框

Version 2.766.58

Fixed

  • SVG 匯出先前把 Type 3 字型的文字寫成以已安裝字型呈現的 SVG 文字,用字形程序畫文字或符號的頁面因此形狀全錯;如今它逐字形繪製其程序,依字型的 /FontMatrix、字型大小與文字矩陣定位(ISO 32000-1 9.6.5)
  • 以 d1 開頭的 Type 3 字形用目前填色繪製,自己設定了顏色的字形保留其色

Version 2.766.57

Fixed

  • 文字擷取與 SVG 匯出把 Type 3 字型的 /Widths 當千分之一 em,實際上它們位在 glyph space、要按字型的 /FontMatrix 縮放(ISO 32000-1 9.6.5);[0.01 0 0 0.01 0 0] 矩陣字型的字形,彼此間距只擺了推進量的十分之一,擷取文字裡的詞也因此黏成一團

Version 2.766.56

Fixed

  • 轉譯已載入頁面時,每個 Type 0 字型先前都被當成 Identity-H 讀取:每碼兩位元組、每碼各自對一個 CID。以中、日、韓字集預定義的 UCS2 與 UTF16 CMap(如 UniGB-UCS2-H)或以內嵌 CMap 編碼的字型,如今把碼映射到 CID,/W 寬度與內嵌字形都能按正確的 CID 查到;先前 STSong-Light 文字裡的小寫拉丁字母,彼此隔了整整一個 em
  • 碼按 CMap 的 codespace 範圍讀取,單位元組與四位元組(代理對)的碼都能整讀,名稱以 -V 結尾則選直排書寫

Version 2.766.55

Fixed

  • 轉譯已載入頁面時,名稱帶樣式片段或 PostScript 拼法的非內嵌字型(如 TimesNewRoman,Bold、TimesNewRomanPS-BoldMT、Arial,BoldItalic、SegoeUI-Semibold)先前被畫成替代字面;如今會在已安裝字型裡查找名稱的家族部分(也試詞間帶空格的形式:Times New Roman、Segoe UI),樣式則取自名稱與字型描述器

Version 2.766.54

Fixed

  • 標準字型沒帶 /Widths 陣列時(ISO 32000-1 9.6.2.2 允許標準 14 種字型如此),轉譯已載入頁面、匯出 SVG 或擷取文字都按固定的半 em 推進排版,字母擠成一堆;Helvetica、Times 與 Courier 家族(含以 Arial、TimesNewRoman、CourierNew 為名的情況)如今從已安裝的 Arial、Times New Roman 與 Courier New 取寬度,兩者度量本就相同
  • 沒帶 /Encoding 的標準 Type 1 字型,如今按其隱含的 StandardEncoding 解碼,例如碼 39 讀成右單引號

Version 2.766.53

Fixed

  • 轉譯已載入頁面時,字型的 /Widths 陣列若是間接物件(許多產生器都這麼寫)就會被無視,文字按固定的半 em 推進排版;如今這類文字按自身寬度取間距
  • 以間接物件給出的字型描述器,轉譯時如今也會讀取,非內嵌字型的 ForceBold 與 Italic 旗標、斜體角度因此生效
  • SmallCap 旗標不再把文字變粗:粗體如今跟隨 ForceBold 旗標(ISO 32000-1 Table 123)

Version 2.766.52

Fixed

  • 轉譯已載入頁面如今會裁到轉譯模式 4 至 7 顯示的文字(ISO 32000-1 9.3.6):文字物件結束時字形併入裁剪路徑,直到圖形狀態被還原。先前模式 7 的文字被無視,本該從字母透出來的 shading 或影像蓋滿整片區域,模式 4 至 6 則畫出文字卻不裁剪
  • 裁剪文字取自與繪製文字相同的字形輪廓,內嵌字型與 Type 3 字形都算在內

Version 2.766.51

Fixed

  • SVG 匯出如今會裁到轉譯模式 4 至 7 顯示的文字(ISO 32000-1 9.3.6):從文字物件結尾到圖形狀態結尾,字形成為 SVG 裁剪路徑,透過文字繪製的 shading 或影像只出現在字母裡面
  • 模式 7 的文字不再無聲消失、什麼都沒裁;模式 4 至 6 仍像模式 0 至 2 那樣填色或描邊

Version 2.766.50

Fixed

  • 軸向、放射狀與函數式 shading 的 /Function 若是單輸出函式的陣列(每個顏色分量一個,ISO 32000-1 8.7.4.5.1),轉譯已載入頁面時先前畫不出來;如今畫得出來,陣列裡的函式無論直接給出還是以間接物件給出都行
  • SVG 匯出把這類軸向與放射狀 shading 寫成漸層,經 shading pattern 填路徑的情況也在內

Version 2.766.49

Fixed

  • SVG 匯出先前把粗體與斜體文字寫成常規樣式:如今文字從字型名的樣式片段(如 Arial-BoldMT、Helvetica-Oblique、MinionPro-It)與字型描述器的 weight、旗標、斜體角度,得到 font-weight="bold" 與 font-style="italic"
  • 標準 14 家族之外的字型,先前把樣式片段連著寫進家族名(SegoeUI-Semibold),比對不到任何已安裝字型;如今家族名單獨給出、也給帶空格的形式(SegoeUI, Segoe UI),後面再按描述器旗標或名稱補一個通用家族

Version 2.766.48

Fixed

  • SVG 匯出先前把 form XObject 的內容畫成黑色,而非 form 繪製處生效的填色與描邊色(ISO 32000-1 8.10.1);form 內的 Q 如今也會還原這些顏色
  • 內容裝置可透過新的 IHPDFContentInheritedColorDevice 介面,以呼叫端的顏色起繪巢狀內容

Version 2.766.47

Added

  • SVG 匯出如今對用 tiling pattern 的路徑,以 SVG <pattern> 填色——按 pattern cell 的 XStep 與 YStep 間距重複,並裁到 cell 的 /BBox;先前這類路徑被填成黑色或保留前一個顏色
  • 未上色的 tiling pattern(PaintType 2)以隨 pattern 給定的顏色繪製 cell,例如 /CS0 cs 0 0 1 /P1 scn 裡的分量
  • 以 shading pattern 填充的路徑,取得 pattern 的軸向、放射狀或 mesh shading,並裁到路徑
  • pattern 矩陣在使用它的頁面或 form 的空間裡套用(ISO 32000-1 8.7.2),pattern 不會跟著目前變換矩陣縮放或移動,Q 也能還回 q 存下的 pattern
  • 內容裝置可透過新的 IHPDFContentPatternDevice 介面接收 pattern 選擇

Version 2.766.46

Added

  • 帶 color-key /Mask 陣列的影像(ISO 32000-1 8.9.6.4),轉譯已載入頁面時如今會套遮罩:各分量全落在 key 範圍內的像素不上色,讓頁面透出來
  • SVG 匯出套用同樣的 color-key 遮罩,並把這類影像寫成帶 alpha 通道的 PNG
  • key 與取樣值按儲存原樣比較,Indexed 影像因此按調色盤索引遮罩,即使兩個條目同色也分得開;每分量 1、2、4 位元的影像都涵蓋在內
  • 新的 DecodeLoadedImageColorKeyMask 方法把已載入影像的遮罩回傳成黑白點陣圖;涵蓋 Flate、LZW 與未過濾的影像——失真編碼器保不住精確的取樣值,不在支援之列

Version 2.766.45

Changed

  • CompressDocument 與 CompressLoadedDocument 讓每個物件串流最多裝 250 個物件,而非 100 個;容器更少、更大,壓縮率更好,需要的字典也更少
  • 已用物件串流緊湊寫出的 PDF,載入後再壓縮,如今輸出大小與原檔相當,多數還略小一點,不再略大
  • 透過 ConfigureAdaptiveObjectStreamPacking 設定的上限會被保留,CompressDocument 在 EndDoc 時恢復該上限,普通物件串流儲存維持每容器 100 個物件

Version 2.766.44

Changed

  • 以物件串流寫出的檔案,其交叉參照串流對每一欄採用該欄所需的最小欄位寬度,16 MB 以下檔案的偏移量因此只要 3 位元組而非 4 位元組(ISO 32000-1 7.5.8.2),字典本身也以緊湊方式寫出
  • 帶交叉參照串流但不帶物件串流的檔案不受影響

Version 2.766.43

Changed

  • 未加密且以物件串流寫出的檔案,如今把文件目錄與文件資訊字典也裝進物件串流一併壓縮;ISO 32000-1 7.5.7 只要求把加密字典排除在外
  • 加密檔案的這兩個字典如同之前留在最上層

Version 2.766.42

Changed

  • 以物件串流寫出的檔案(包括 CompressDocument 與 CompressLoadedDocument 的輸出),字典與陣列的寫法更緊湊,省去 PDF 語法不需要的空格與換行(ISO 32000-1 7.2.2);進不了物件串流、維持未壓縮的串流字典獲益最大
  • 簽章字典與加密字典保留帶空格的排版,對以物件串流寫出的文件簽署,行為與之前相同
  • 不帶物件串流寫出的檔案逐位元組不變

Version 2.766.41

Fixed

  • 以物件串流寫出的 PDF 檔案,開頭不再重複出現 %PDF- 標頭與二進位註解行;凡以 UseObjectStreams、CompressDocument 或 CompressLoadedDocument 儲存都受此影響
  • 檢視器容得下重複的標頭,但嚴格的驗證器可能標記它,而且每個檔案多花 15 位元組

Version 2.766.40

Fixed

  • 物件串流裡存放裸數字的已載入 PDF(許多產生器以這種方式存串流長度),如今可以編輯與儲存;之前任何修改都會讓儲存中止,報 "Cannot rewrite compressed object N: the source member could not be loaded"
  • 這種數字如今按數字讀取;之前剖析器越過成員末端去找間接參照,找不到就放棄,成員因此完全載入不了
  • 不加修改直接儲存這類檔案不受影響,因為未變更的檔案會原樣複製

Version 2.766.39

Fixed

  • PDF/A-2 及之後版本與 PDF/X-6 文件中的圖章註解,之前只顯示框線,沒有 APPROVED、CONFIDENTIAL 這類圖章名稱
  • 名稱如今以頁面目前字型繪成大寫(該字型與頁面文字一起內嵌),用註解顏色,在矩形內置中
  • NOTFORPUBLICRELEASE 這類長名稱會縮小字級,以符合矩形寬度
  • 文件仍通過 PDF/A 驗證;其他文件中的圖章寫法不變

Version 2.766.38

Added

  • 新的 CompressLoadedDocument overload(帶選項)能把已載入的 PDF 壓到最小,而外觀絲毫不變:捨棄未使用的頁面資源、合併相同的字型與表單、對內嵌字型做子集化、以 Flate 重新壓縮串流,並在下一次儲存時改用物件串流寫出
  • 每一步都無損,影像不重新取樣、不重新壓縮;內嵌完整 Arial 與 SimSun 字型的三頁文件從約 10 MB 降到約 20 KB,另外三份樣本 PDF 也縮小 15-50%
  • 帶簽章欄位的文件預設拒絕處理、維持原狀,因為每一步都會改寫已簽署的位元組;設 AllowSignatureInvalidation 則照樣壓縮
  • SubsetLoadedFonts 新增 CompactTrueTypeSubsets 選項(預設關閉),為經 identity CID 對應的 CIDFontType2 字型所用的 TrueType 字型建構緊湊子集;彩色字型與帶 /CIDSet 的字型維持一般子集
  • 不帶參數的 CompressLoadedDocument 維持只重新壓縮未過濾串流的既有行為

Version 2.766.37

Added

  • 新的 CompressDocument 屬性(預設關閉):單一開關,把下一份文件寫到最小而外觀不變
  • 對該文件,它會開啟最高層級的 Flate 壓縮、帶物件串流的交叉參照串流(ISO 32000-1 7.5.7 與 7.5.8)、字型子集化與緊湊字型子集;中英混排的三頁文件從約 10 MB 降到約 20 KB
  • 物件串流需要 PDF 1.5,版本較舊的 Version 會升到 1.5,除非版本已被鎖定;PDF/A-1 輸出維持傳統交叉參照表
  • 你自己的設定不被更動:EndDoc 之後,Compression、CompressionLevel、UseXRefStream、UseObjectStreams、字型子集化選項與版本,讀回來都仍是你設的值
  • 影像不重新取樣、不重新壓縮

Version 2.766.36

Added

  • 新的 CompactFontSubsetting 屬性(預設關閉):字型子集為保留的字形重新編號,內嵌字型不再為來源字型的每個字形各帶一個條目;明確的 /CIDToGIDMap 串流把頁面的字形碼對應到重新編號的字形(ISO 32000-1 9.7.4.2)
  • CJK 字型縮減最多:SimSun 的兩個中文字只需要約 3 KB 字型資料,而不是約 25 KB;Microsoft YaHei 文件從 114 KB 降到 6 KB
  • 適用於開啟 EnableFontSubsetting 時以 Type 0 字型寫出的 TrueType 字型,以及以 RegisterUnicodeTTF 註冊的字型——後者之前只有在 PDF/A 下才拿得到緊湊子集
  • 頁面內容、字形寬度與文字擷取都不變;OpenType-CFF 字型維持一般子集,無法緊湊化的字型也退回一般子集

Version 2.766.35

Fixed

  • 以逐字前進量繪製的文字,在註冊的 Unicode 字型涵蓋基本多文種平面之外字元(如音樂符號或 emoji)時,後續文字不再偏移;之前每個後續字元會拿走前一個字元的前進量,如今該字元以前兩個條目的總和前進
  • 含這類字元的齊行 Unicode 文字方塊對齊方塊邊緣,這些文字的底線或刪除線長度也與文字一致

Version 2.766.34

Added

  • SVG 匯出如今把影像遮罩(/ImageMask,包括內聯遮罩)以目前填色繪成模版:未上色的部分變成透明,而不是被畫成黑白圖片
  • 帶 /SMask soft mask 或明確 /Mask 樣板的影像,匯出成帶 alpha 色版的 PNG,被遮掉的部分因此不再蓋住背後內容
  • 遮罩或影像遮罩上的 /Decode [1 0] 會被遵循,比影像更精細的遮罩也保留細節

Version 2.766.33

Fixed

  • 頁面轉譯如今遵循影像明確的 /Mask 樣板:遮罩涵蓋的部分不上色,而不是整張影像畫出,影像被旋轉或鏡射時也一樣
  • 遮罩上的 /Decode [1 0] 陣列會反轉保留的部分
  • soft mask 與比影像精細的遮罩以遮罩自身解析度套用,低解析度照片上的細緻 1 位元遮罩因此邊緣不糊

Version 2.766.32

Fixed

  • 頁面轉譯如今透過完整變換矩陣繪製影像:旋轉 90 度或其他角度的影像、鏡射影像,以及帶 /Rotate 頁面上的每張影像,不再以直立未鏡射的姿態畫進其邊界框
  • 影像遮罩(/ImageMask true)如今以目前填色繪成模版,縮小時邊緣抗鋸齒,而不是被畫成灰階圖片
  • 帶 /Decode [1 0] 的影像遮罩如今繪製取樣值 1,與 PDF 規定一致
  • 內聯影像遮罩(BI /IM true)恢復繪製,其 /D 陣列也被遵循
  • 帶 soft mask 的影像在旋轉或鏡射後保留其遮罩

Version 2.766.31

Added

  • SVG 匯出如今能轉換以 k/K(DeviceCMYK)以及以 cs/sc/scn 在任何具名色彩空間設定的顏色:ICCBased、calibrated、Lab、Indexed、Separation 與 DeviceN 顏色的輸出與頁面轉譯器一致,不再是黑色
  • 以 cs/CS 選擇色彩空間時如今會設定其初始顏色,例如特別色的滿濃度;以 Q 還原圖形狀態,也會取回這樣設定的顏色
  • 以參照方式指向 ICC 設定檔、查找表或濃度函式的色彩空間,會在 SVG 匯出時透過所匯出的文件解析
  • 路徑列舉如今回報 CMYK 填色與筆畫顏色,而不是沿用前一個顏色

Version 2.766.30

Fixed

  • THPDFEmfPatcher.RenderEmfDirect 在任何解析度下都以相同大小與位置繪製加強型中繼檔的點陣圖;解析度不是 72 時,之前會被乘上 72 / Resolution 縮放

Version 2.766.29

Added

  • SVG 匯出如今套用 W 與 W* 裁剪路徑:每個裁剪都變成一個 SVG clip path,涵蓋其後繪製、直到圖形狀態還原為止的內容,被 PDF 裁掉的影像、著色與路徑不再整張畫出
  • SVG 匯出時,Form XObject 會被裁剪到其 /BBox,軸向與放射狀著色也裁到其 /BBox
  • even-odd 裁剪(W*)保留其填色規則;與 W 一併上色的路徑會在新裁剪生效前繪出,與 PDF 規定一致

Version 2.766.28

Fixed

  • 以 DrawChart 繪製的圖表在任何解析度下版面都正常;圖表的邊界、標題、座標軸標籤與線寬都是點值,之前會隨解析度縮水
  • 新頁面,以及再次成為目前頁面的頁面,其預設字型在任何解析度下都是 12 點,而不是 12 個繪製單位
  • 版面診斷覆蓋層的線寬與標籤大小在任何解析度下都維持不變

Version 2.766.27

Fixed

  • DrawInlineImage 與 DrawFormXObject 以繪製單位決定影像或 form 的大小,位置也是如此;解析度不是 72 時,寬高之前被當成點,物件因此偏大

Version 2.766.26

Fixed

  • 透過 CurrentPageNumber 再次成為目前頁面的頁面,繼續以排版時的單位繪製;解析度不是 72 時,之前會切換成點,之後畫上去的東西大小與位置全錯
  • 再次回到該頁時,頁面也保留自己的頁面解析度

Version 2.766.25

Fixed

  • 文件解析度不是 72 時,以 ShowImage 放置的影像在以 Width 與 Height 指定大小的頁面上維持尺寸;解析度 144 時,之前只剩一半大小且位置偏移
  • ExtTextOut 在這類頁面上按給定的前進量擺放每個字元,而不是只擺一半
  • 這類頁面上的內嵌字形序列,字形偏移與前進量都獲得保留

Version 2.766.24

Added

  • SVG 匯出如今遵循軸向與放射狀著色的 /Extend 項目:未延伸的端點(即預設行為)依照 PDF 不上色,而不是把端點顏色鋪滿整個裁剪區
  • 對放射狀著色,起始端未延伸時,起始圓內部也因此留空

Version 2.766.23

Fixed

  • 攤平頁面旋轉時,註解外觀串流如今跟著頁面一起旋轉,外觀已寫入或攤平的註解因此與旋轉頁面上的呈現一致,不會被側向壓進旋轉後的矩形
  • widget 旋轉(/MK /R)會隨頁面旋轉一併調整,攤平後重新產生的表單欄位外觀因此保持方向
  • 帶 NoRotate 旗標的註解攤平後保持直立與原有大小,固定在左上角,與檢視器在旋轉頁面上的呈現一致

Version 2.766.22

Fixed

  • 標記式 PDF 攤平頁面旋轉時,若先走訪結構樹才走到頁面樹,註解矩形不再被旋轉兩次
  • 攤平頁面旋轉不再旋轉頁面上所用 Form XObject 的邊界框;其幾何位於 form 空間,頁面旋轉已透過內容變換作用其上
  • 攤平單一頁面時,屬於其他頁面的結構元素版面邊界框不再被更動

Version 2.766.21

Fixed

  • 讀取已載入頁面的出血框、裁切框或美工框時,不再抓到父節點 /Pages 上放置的 /BleedBox、/TrimBox 或 /ArtBox;這些框在 PDF 中不可繼承,沒有自身條目的頁面如今按規格要求回報其裁剪框
  • 攤平頁面旋轉也不再把這種父節點層級的出血框、裁切框或美工框複製到頁面上

Version 2.766.20

Fixed

  • 文件解析度不是 72 時,畫在頁面 Canvas 上或以 ShowMetafile 放置的中繼檔裡的文字維持大小;解析度 144 時,之前只有一半大小,其餘繪製卻是正確的
  • 在以 Width 與 Height 指定大小、以點繪製的頁面上,頁面 Canvas 與 ShowMetafile 以正確大小繪製;解析度 144 時,之前繪製會變兩倍大
  • 頁面 Canvas 與 ShowMetafile 也遵循頁面自身設定的解析度,而不是按它縮小繪圖

Version 2.766.19

Fixed

  • 設定字元間距時,齊行的 Unicode 文字方塊如今收在方塊邊緣;之前每個字元在齊行位置之外又加上間距,每一行因此超出右緣「間距 × 字元數」
  • 帶水平縮放的齊行 Unicode 文字方塊重新填滿整個方塊寬度,不再少了縮放係數的寬度
  • 字間距如今計入齊行列的自然寬度,也就是斷行當下所用的寬度
  • 以逐字前進量繪製的文字,無論字元間距或水平縮放為何,都落在指定的位置

Version 2.766.18

Fixed

  • 攤平頁面旋轉時,/Rotate 90 與 /Rotate 270 的頁面如今順時針旋轉,攤平後的頁面因此與旋轉後的原頁面完全一致,而不是相對它上下顛倒
  • 註解、連結目的地與結構幾何也以同樣方式跟著頁面移動
  • 攤平沒有 CropBox 的頁面時,不再添上一個把頁面裁成正方形的框;只旋轉頁面實際具有的頁面框

Version 2.766.17

Fixed

  • 在以當地語系化名稱回報字型的 Windows 系統上,字型後備鏈如今找得到 SimSun、Microsoft YaHei 這類字型,WideTextOutBox、WideTextOutBoxEx 與 TextOutWithFallback 裡的 CJK 混排文字因此以後備字型繪製,不再顯示空白方框
  • 字型本身即是這類字型的文字,不再被拆成後備字型序列,也不會被未解析字形診斷回報為未解析
  • 字型可用其攜帶的任何家族名稱、以任何語言列入後備鏈;Windows 只以其他字型替代的字型仍會被跳過

Version 2.766.16

Fixed

  • N-up 拼版如今把 /Rotate 90 與 /Rotate 270 的頁面順時針轉正放進儲存格;之前轉錯方向,被擠出儲存格,常常跑出紙張之外
  • /Rotate 180 的頁面如今在紙張上轉正,而不是以直立狀態拼入
  • N-up 拼版如今遵循從頁面樹繼承的頁面框與 /Rotate,這類頁面不再被跳過或以未旋轉狀態拼入
  • 插入已載入文件的空白頁,包括拼好的 N-up 紙張,不再被從頁面樹繼承的 /Rotate 或 /CropBox 旋轉或裁剪

Version 2.766.15

Fixed

  • HPDFTokenizeContentStreamAppend 如今可以在 token 陣列計數歸零後重複使用:前一輪殘留的 token 會先釋放,其字串不再洩漏,陣列項目或內聯影像資料也不會再出現在新 token 上
  • 把許多小內容串流附加進同一個 token 陣列時,陣列如今至少以兩倍容量成長,不再每次附加都重新配置並搬移;由數千個小串流組成的頁面之前因此編譯緩慢

Version 2.766.14

Fixed

  • /Rotate 90 或 /Rotate 270 的頁面如今按 PDF 規格順時針旋轉轉譯,而不是沿對角線鏡射;之前 90 度頁面的左上角會跑到右下角
  • 修正涵蓋頁面與區域轉譯、點陣圖、中繼檔與分帶 PNG/TIFF 匯出,以及 SIMD 轉譯後端
  • 檢視器的頁面↔檢視與檢視↔頁面座標轉換,以及搜尋與高亮覆蓋層,也跟著同樣順時針旋轉,命中結果與命中測試因此對得上轉譯後的頁面

Version 2.766.13

Fixed

  • SVG 頁面匯出如今按文件宣告以 UTF-8 寫出文字,帶重音與 CJK 的字元得以保留,不再變成問號或讓檔案讀不出來的位元組;XML 不允許的控制碼轉成 U+FFFD
  • 文字矩陣對文字做縮放或旋轉(許多 PDF 產生器正是以這種方式設定字型大小)時,一行第一段之後的文字,以及 TJ 字距調整之後的文字,如今位置正確
  • 文字抬升與水平縮放如今跟隨縮放或旋轉過的文字矩陣,TJ 調整也尊重水平縮放
  • 以轉譯模式 4 到 6(繪製並裁剪)繪製的文字會被匯出而不是丟棄;隱形文字仍推進文字位置,描邊文字保留筆畫不透明度
  • 字間距不再套用到恰好等於 32 的兩位元組碼;連續空格予以保留,每個字元因此留在自己的位置
  • 連字字形會匯出其所代表的所有字元;一位元組與兩位元組碼混用的字型逐一按碼讀取
  • /MediaBox 原點不在 (0,0) 的頁面如今落在 SVG 畫布上,不再被移出畫布

Version 2.766.12

Fixed

  • 在 THPDFPage.Canvas 上繪圖,以及以 ShowMetafile 帶位置與縮放把中繼檔當向量圖形播放時,設定裁剪區域之後,左緣與頂緣不再缺一角;之前每個裁剪區域在這兩側各被內移一個單位,沿左緣或頂緣的框線或填色因此比右緣、底緣的細
  • 裁剪區域如今在填色時與相同區域對齊,在任何 THotPDF.Resolution 下涵蓋相同面積

Version 2.766.11

Fixed

  • 以 TextOut、UnicodeTextOut、RtLTextOut 與 ExtTextOut 繪製的 Unicode 文字,底線與刪除線如今恰好與文字等長;之前量測的是轉成系統字碼頁後的文字,含西里爾、希伯來、希臘、CJK 或其他字碼頁之外字母的文字,底線因此比文字短或超出文字
  • 底線與刪除線也會跟隨字元間距、字間距、水平縮放,以及傳給 ExtTextOut 的位移

Version 2.766.10

Fixed

  • 多個匯出同時執行時(例如在伺服器上),報表與表格匯出附加元件(FastReport、QuickReport、ReportBuilder、DevExpress 與 DBGrid)不再互相覆蓋輸出;之前暫存檔以計時器命名,而計時器每 10 到 16 毫秒才變動一次,同時啟動的匯出因此寫到同一個檔案

Version 2.766.9

Fixed

  • 設定字元間距、字間距或水平縮放時,TextWidth 如今按實際繪製方式量測文字;之前間距不受水平縮放影響、負字間距被忽略、句尾空格拿不到字間距,段落續行、連結矩形與置中或右對齊文字因此對不上繪出的文字
  • TextWidth 與 GetWideTextWidth 對相同文字回傳相同寬度

Version 2.766.8

Fixed

  • ReportBuilder 裝置(TppHotPDFDevice)如今把原生文字畫進其文字方塊內;之前把文字位置當成基線對位,每個文字物件都低了一行的起點,最後一行還跑出方塊
  • 置中與右對齊的原生文字,以實際繪製所用的 Unicode 寬度量測,系統字碼頁之外的文字(例如西方系統上的中文)因此對位正確

Version 2.766.7

Fixed

  • FastReport 匯出如今把 memo 文字畫進 memo 內;之前把文字位置當成基線對位,每個 memo 的文字都低了一個字型高度,底部對齊的文字更畫到 memo 之外,被裁剪藏掉
  • 頂部、置中與底部三種垂直對齊都從第一行頂部起量,純文字與 HTML 標籤 memo 一體適用

Version 2.766.6

Fixed

  • FastReport 匯出過濾器(TfrxHotPDFExport)恢復可編譯;NotEmbeddedFonts 屬性讀取了型別不同的欄位,原生圖片匯出則用了 TfrxPictureView 沒有的 Clipped 屬性
  • 原生圖片匯出如今像 FastReport 一樣把每張圖片裁剪到其檢視範圍,大於檢視的圖片不再溢到相鄰物件上
  • 置中的圖片,框線與裁剪維持在檢視邊界,只有圖像本身置中;之前框線會跟著圖像移動

Version 2.766.5

Fixed

  • DBGrid 附加元件如今在把儲存格文字裁短以符合欄寬之前,以實際繪製所用的 Unicode 文字寬度量測;系統字碼頁之外的文字(例如西方系統上的中文)之前被量成問號寬度而溢出儲存格,中日韓系統上的雙位元組文字則在儲存格遠未填滿時就被裁短
  • 裁短後 ... 之前不會留下半個代理對

Version 2.766.4

Fixed

  • DBGrid 附加元件(TDBGridHotPDFExport 與 DBGridHotPDFExportToFile/ToStream)如今把儲存格文字畫進儲存格內;之前把文字位置當成基線對位,每列文字都坐在儲存格下緣上,被下一列的格線切到
  • 標頭文字在標頭列內置中,標題也不再貼到表格頂端

Version 2.766.3

Fixed

  • 在地區設定以逗號當小數點的系統上,GetLoadedPDFVersionString 如今回傳 %PDF-1.7 這類字串;之前回傳的是 %PDF-1,7
  • GetLoadedDocumentReport 的 pdfVersion 欄位也以同樣方式修正

Version 2.766.2

Fixed

  • HTML 匯入(RenderHTML 與 RenderHTML5)在任何 THotPDF.Resolution 下都產出相同頁面;CSS 長度與匯入器的 Margin、BaseFontSize、ListIndent、BlockSpacing 都以點為單位,但解析度 144 時,文字、邊界、清單與表格之前只有一半大小
  • 匯入前後自行繪製的文字與圖形仍使用 1/Resolution 英吋
  • 以預設解析度 72 建立的文件,輸出與之前完全相同

Version 2.766.1

Fixed

  • 以 ApplyXFAAsAcroForm 或 FlattenLoadedXFA 攤平的 XFA 表單,在任何 THotPDF.Resolution 下都維持範本的位置、大小與字型大小;解析度 144 時,之前整個表單縮成一半,擠在頁面左上角
  • 攤平前後自行繪製的文字與圖形仍使用 1/Resolution 英吋
  • 以預設解析度 72 建立的文件,輸出與之前完全相同

Version 2.766.0

Added

  • THPDFPage.UserWidth 與 THPDFPage.UserHeight 以繪製所用單位(1/Resolution 英吋)回傳頁面大小,排版程式碼因此能在任何 THotPDF.Resolution 下把它與座標、邊界及 TextWidth 相比;Width 與 Height 仍回傳點,既有程式碼讀到的值與之前相同

Fixed

  • THotPDF.Resolution 設成 72 以外的值時,段落如今按邊界之間的實際寬度換行,到底邊界就換到下一頁;之前以點量測頁面,解析度 144 時邊界較寬的段落可能每個字元就斷行,佔掉過多頁數
  • 跨頁續排的段落在任何解析度下都維持相同頁面大小、座標與字型大小;解析度 144 時,續排頁之前會切換成點座標,頁上文字只剩一半大小
  • THPDFTable 只有在列到底邊界時才開新頁;解析度 144 時,放在頁面下半部的表格之前每一列都自成一頁
  • HTML 匯入的文字在任何解析度下都排滿整個頁面寬度,而不是只占左半
  • 置中繪製在頁面上的中繼檔,以及涵蓋整頁的中繼檔裁剪區域,在任何解析度下都用滿整頁
  • 頁面圖層與已送出頁面的版面診斷,以繪製單位回報頁面大小
  • 以預設解析度 72 建立的文件,輸出與之前完全相同

Version 2.765.52

Fixed

  • 含非 ASCII 字元的 AES-256 密碼,如今在其他 PDF 閱讀器也能用;HotPDF 之前以系統字碼頁雜湊密碼,而 ISO 32000-2 規定以 UTF-8 計算,含中文或帶重音字元的密碼因此被其他閱讀器拒收;revision 5 與 revision 6 都已修正
  • 超過 127 位元組的 AES-256 密碼,如今依標準定義截到 127 位元組,遵循標準的閱讀器即可接受
  • HotPDF 如今能開啟其他產生器所出、密碼含非 ASCII 字元的 AES-256 檔案
  • 舊版以這類密碼加密的檔案,仍可用同一密碼在 HotPDF 開啟

Version 2.765.51

Fixed

  • 同一字型下,在 Unicode 文字之後寫出的 ANSI 文字不再顯示成空白方框;當頁面先以 TextOut 寫 Unicode 文字,又在同一字型(例如另一個字號的 Arial)用 TextBox 或 TextOutBoxEx 時,ANSI 文字之前被寫進 Unicode 字型,檢視器找不到對應字形;如今它取得自己的字型資源,顯示與擷取都正確
  • 只用 ANSI 文字或只用 Unicode 文字的頁面,輸出與之前相同

Version 2.765.50

Fixed

  • 以 AES-256 revision 6(UseAES256R6 與 PDF 2.0 AES-256)加密的文件,如今能在其他 PDF 閱讀器中開啟;之前密碼雜湊每一輪都帶著 salt 計算,owner 端又漏了 user 項,qpdf、MuPDF 等閱讀器對 user 與 owner 密碼都拒收,HotPDF 只認得自己寫出的檔案
  • HotPDF 如今能以 user 或 owner 密碼開啟其他產生器建立的 revision 6 檔案,而不是回報密碼錯誤
  • Security 範例的 AES-256 R6 樣本可在其他閱讀器中開啟

Version 2.765.49

Fixed

  • 齊行的 Unicode 文字方塊不再把字元撐開、超出方塊右緣;以名稱選字型(例如 Arial)時,之前每個齊行列寬度約是方塊的兩倍,蓋住旁邊的內容;如今每個齊行列都收在方塊邊緣
  • 以逐字前進量繪製的文字,在同樣情境下如今落在指定位置,而不是每個字元都被往右多推一個字元寬

Version 2.765.48

Changed

  • Delphi 與 C++Builder 的 HelloWorld、CJKAnnotations、TextOut 與 RtLTextOut 範例,如今只內嵌實際用到的字形;之前內嵌整套 Arial Unicode MS 之類的系統字型,一頁的 hello world 約 15 MB,由右至左範例約 30 MB;同樣的頁面如今介於 80 KB 到 650 KB,外觀不變

Version 2.765.47

Fixed

  • 某些字型下,由右至左文字的字母順序不再錯亂;Arial Unicode MS 的希伯來文在許多詞裡相鄰字母對調,Microsoft Sans Serif 的阿拉伯文則完全沒有反轉,因為把行轉成視覺順序時,這些字型的字形編號被誤當成重音符號
  • RtLTextOut 範例的希伯來文行列如今讀起來正確

Version 2.765.46

Fixed

  • GetWideTextWidth 如今與 TextWidth 一樣,把實際繪製所用的字元間距與字間距計入;設了間距的自動換行與置中 Unicode 文字,之前被量得太窄
  • TextOutHTML 如今會呈現以 SetWordSpacing 設定的字間距:之前它把每段文字按量測寬度擺放,漏掉了間距;HTML 匯入的 CSS word-spacing 與 letter-spacing 走同一套排版

Version 2.765.45

Fixed

  • SetWordSpacing 如今對內嵌字型也生效;內嵌字型的文字以兩位元組字元碼寫出,而 PDF 只對一位元組的空格碼套用字間距,因此只要開了 FontEmbedding 或文字需要 Unicode 字型,間距就被默默忽略
  • 間距如今以文字定位調整的形式加在每個空格之後,所有 PDF 檢視器都遵循;沒有字間距的文字寫法與之前完全相同
  • TextOut 範例的字間距列,如今能看到多出來的間距

Version 2.765.44

Fixed

  • Delphi 與 C++Builder 的 AnnotationInteraction 範例,如今每個連結標題都收在自己的連結矩形內;之前文字起始位置過低,矩形框線從中穿過,文字也比矩形寬

Version 2.765.43

Fixed

  • 刪除線文字(fsStrikeOut)如今劃過小寫字母的中央;之前線畫在基線下方半行處,比底線還低,加刪除線的文字看起來像有雙底線,TextOutHTML 的 <s> 也受影響
  • 旋轉文字的底線如今在基線下方,而不是沿字母頂部;刪除線則劃過字母
  • 每條文字路徑上,刪除線都與底線同粗;之前 Unicode 與純拉丁路徑畫出的線細得多

Version 2.765.42

Fixed

  • HTMLText 範例如今只產出一頁,五個範例都在上面;之前它在文件既有首頁之後又加了一頁,首頁因此空白,而且從頁面底部附近開始寫,實體範例與自動換行段落被擠出頁面

Version 2.765.41

Fixed

  • Delphi 與 C++Builder 的 Layer 範例,如今看得到圖層文字;可見圖層的文字之前以背後矩形的顏色繪製而看不見,隱藏圖層的文字則接近白色
  • Patterns 範例的標題改以黑色繪製,不再填上平鋪圖樣;之前標題被圖樣切成碎片
  • AlphaTransparency 範例的標題不再以半透明綠色加 Multiply 混合模式繪製;透明圖形如今自行保留透明度

Version 2.765.40

Fixed

  • Delphi 與 C++Builder 的 GraphicDraw 範例,曲線切線如今繪製正確;之前左曲線的第一條控制點線沒畫到標記點,右曲線只剩一小段水平筆畫,而不是從起點經控制點到終點的線
  • 矩形與橢圓頁的小節標題恢復黑色,不再沿用最後一個繪製圖形的顏色

Version 2.765.39

Fixed

  • PrintHyperlink 之後繪製的文字與圖形,如今保留之前設定的顏色;之前灰色會變成別的顏色(白色變藍),CMYK 或經色彩空間設定的顏色則退回較早的 RGB 顏色
  • 超連結顏色如今只套用在連結文字上,不論頁面當時使用什麼色彩空間

Version 2.765.38

Fixed

  • TextOutOutline 如今在任何 Resolution 下都按字型大小繪製字形外框;Resolution 不是 72 時,外框之前會被多縮一次,例如 144 時縮成一半
  • 每 em 不足 1000 單位的字型(如 SimHei),其外框不再畫成數倍大

Version 2.765.37

Fixed

  • Delphi 與 C++Builder 的 CJKUnicode 範例,在沒有 Arial Unicode MS 的系統上如今顯示得出韓文行;之前用找到的第一個中文字型繪製,那種字型沒有諺文,該行因此空白;如今所選字型無法顯示韓文時,改用 Malgun Gothic

Version 2.765.36

Fixed

  • 以 SimHei 這類字型寫出的中文與日文,字元不再疊在一起;同一字型用於第二段文字時,之前許多表意文字被給了幾個單位的寬度,而不是整個 em
  • 受影響的字型所存的先前進量比字形數少;超過最後一個已存寬度的字形,如今沿用該寬度,符合 TrueType 格式要求

Version 2.765.35

Fixed

  • 設計網格每 em 不足 1000 單位的字型(如 SimHei,以及只有 256 的 SimSun),其 Unicode 文字間距如今正確;之前寫進 PDF 的字形寬度大了約四倍,檢視器因此在空格與其他初次使用的字元後留出大片空隙

Version 2.765.34

Fixed

  • PDFOptimize 範例的掃描影像情境,如今壓縮真正的文字頁;其 1 位元測試影像之前整張全黑,CCITT G4 與 JBIG2 是在純色矩形上比較的
  • PDFOptimize 範例的影像情境,如今只內嵌頁面標籤的字形,回報的大小因此能反映各影像壓縮方法的差異,而不是被整套內嵌字型蓋過

Version 2.765.33

Fixed

  • E-Invoice 範例的發票頁面如今從頂部往下排版:標題在頁面頂端,發票、買賣雙方與金額依序排在下方;之前整頁順序顛倒,標題貼近底緣,頁尾註記跑到頂部

Version 2.765.32

Fixed

  • 以嚴格無損編碼的 JBIG2 影像(Lossless 搭配 LossyLevel = 0)如今保留每個像素;預設把小黑點當掃描雜訊移除的機制之前無視這些設定,宣稱無損的影像裡,小字中的句點與 i、j 的點因此消失
  • 面向掃描的預設(LossyLevel = 5 搭配 RemoveIsolatedBlackPixels)仍像之前一樣移除斑點

Version 2.765.31

Fixed

  • 匯出已載入頁面到 PNG 或 TIFF 時,不再以 "received too many rows" 失敗;在轉譯帶不是整數點的解析度下(例如 SaveLoadedPagesAsImages 預設 150 DPI 搭配 Letter 頁面),捨入讓每個帶都比預定多一列像素,各帶加總的列數因此超過影像本身

Version 2.765.30

Fixed

  • TextWidth、TextHeight、GetWideTextWidth 與 GetWideCharAdvances 如今以 Resolution 的頁面單位回答,也就是文字繪製所用的單位;Resolution 不是 72 時,之前以點回答,量出來的文字因此對不上擺放的座標
  • Resolution 不是 72 時,以 TextOut 繪製的文字如今從其 Y 開始,而不是偏高;底線與刪除線以正確距離與粗細涵蓋整段文字,而不是只涵蓋一部分
  • 在任何 Resolution 下,TextBox、TextOutBoxEx 與 WideTextOutBoxEx 都按實際文字寬度置中與右對齊,表格儲存格與段落據此換行,TextOutHTML 的樣式片段也不再互相重疊
  • WideTextOutBoxEx 內的後備字型序列,在任何 Resolution 下都維持字型大小,不再縮小
  • Resolution 72 的輸出不變

Version 2.765.29

Fixed

  • Windows 無法自行套用 EMF 中繼檔的世界轉換時,HotPDF 會自行合併各變換;合併變換的垂直偏移之前用錯了項,這類中繼檔的內容因此可能上下偏移

Version 2.765.28

Fixed

  • 顯示 EMF 中繼檔時,不再把 [WMF_DEBUG] EMR_POLYGON16 record found 這類診斷行印到主控台應用程式的標準輸出;中繼檔追蹤在 release 組建中被忘記關閉

Version 2.765.27

Fixed

  • 以 ShowMetafile 顯示的 EMF 中繼檔文字,如今落在 Windows 繪製的高度;靠上對齊文字(TCanvas.TextOut 的預設)之前高了整整一行,靠下對齊的文字也偏高
  • 基線對齊與旋轉的中繼檔文字不變

Version 2.765.26

Fixed

  • 帶位置與縮放的 ShowMetafile,如今把中繼檔左上角畫在指定點,並按要求縮放;之前無視這些參數,一律以原始大小畫在頁面左上角
  • 不帶位置的 ShowMetafile 不變

Version 2.765.25

Fixed

  • 以 ShowMetafile 顯示的 EMF 中繼檔裡,AngleArc 繪圖如今畫出其描述的弧線(兩個方向都正確),其後接續從弧線終點延伸的直線;之前畫成整個圓,而且中繼檔一帶偏移,大小就跟著錯

Version 2.765.24

Fixed

  • 在 PDF/A 與 PDF/X 下,內容為純 ASCII 的自由文字註解如今顯示得出文字;之前外觀只畫框線與填色,因為註解預設外觀指名的 Helvetica 在這些標準下不得未內嵌使用
  • 文字如今以 12 pt 用頁面目前字型繪製(該字型與頁面文字一起內嵌),依註解方塊換行,並按所選對齊方式對齊,與非 ASCII 內容既有的處理一致
  • 在 PDF/A 與 PDF/X 之外,純 ASCII 內容的自由文字註解寫法完全不變

Version 2.765.23

Fixed

  • 開啟 AutoShapeArabic 後,TextOut 與 UnicodeTextOut 如今會把阿拉伯文、波斯文與烏爾都文的字母接合成字首、字中、字尾形式與連字,正如 RtLTextOut 既有行為;之前每個字母都以獨立形式顯示
  • 同樣適用於 AutoShapeSyriac、AutoShapeNko、AutoShapeAdlam、AutoShapeHanifiRohingya,以及希伯來文點號重排(ShapingFeatures 的 sfHebrewReorder)
  • 開啟這些選項時,字形編號恰好落在阿拉伯文或希伯來文字元範圍的文字,之前可能顯示成錯誤字形;如今不會了
  • 以頁面字型繪製的自由文字註解,與頁面文字做同樣的塑形
  • 這些選項關閉時的輸出不變

Version 2.765.22

Fixed

  • 曲線圖形如今遵循 72 以外的 Resolution 值;Ellipse、Circle、Arc、DrawArc、Pie、DrawPie、Chord 與 ArcTo 之前位置與大小都錯,直線、矩形與圓角矩形則正確
  • 預設解析度 72 的輸出不變

Version 2.765.21

Fixed

  • 以 Pie 或 DrawPie 畫出的扇形如今是單一封閉圖形,外框在直邊與弧線相接處有正常轉角,而不是兩個斷開的線端
  • 以 ShowMetafile 顯示的 EMF 中繼檔裡,弦形如今沿弧線兩端點間的直線閉合;之前那條線跑到離圖形很遠的點

Version 2.765.20

Fixed

  • DrawArc 與 DrawPie 如今繪製其文件所描述的橢圓部分:從起點到終點逆時針,與 Windows GDI 的 Arc、Pie 呼叫一致;之前畫的是另一側,四分之一弧變成四分之三
  • 以 ShowMetafile 顯示的 EMF 中繼檔裡,扇形、弦形與 ArcTo 弧線如今與 Windows 畫的一致,兩種弧方向都對;之前顯示的是橢圓的另一側,單純弧線本來就正確
  • 以角度為參數的 Arc、Pie、Chord 與 ArcTo 方法不變

Version 2.765.19

Fixed

  • 以 RectangleRotate 畫出的旋轉矩形如今是封閉圖形,與 Rectangle 畫出的一致;之前描邊時少了第四邊,只畫外框的旋轉矩形因此只有三個邊
  • 填滿的旋轉矩形,以及旋轉文字的底線與刪除線,外觀與之前相同

Version 2.765.18

Fixed

  • 寫進產生 PDF 的負數如今捨入正確;-50 這類值之前會寫成 -49.99,頁面內容、註解矩形與類似條目裡的負座標、偏移與位置因此可能偏差達 0.01 個單位
  • 負值如今以遠離零的方向捨入,與正值完全對稱;捨入到零的負值寫成 0
  • 零與正數的輸出不變

Version 2.765.17

Fixed

  • 內容含中文、日文、韓文、阿拉伯文、西里爾文或其他非 ASCII 文字的自由文字註解,如今在每種檢視器裡都顯示得出文字;之前依賴檢視器以 Helvetica 繪製,而 Helvetica 只能表示西文字元,Poppler 之類的檢視器因此只顯示 ASCII 標點
  • 這些註解如今自帶外觀(ISO 32000-1 12.5.5):文字以頁面目前字型繪製,與頁面文字一起內嵌並子集化,依註解方塊換行(在詞與詞之間,無空格的文字則在字元之間),按所選對齊方式對齊,並疊在與之前相同的框線與填色上
  • PDF/A 下也會寫出外觀,內嵌字型讓文件持續符合標準,註解文字看得到,而不是空白方框
  • 純 ASCII 內容的自由文字註解寫法完全不變

Version 2.765.16

Fixed

  • 以 InsertLoadedBlankPage 插入已載入文件的空白頁面,如今帶有每個頁面都必備的資源字典(ISO 32000-1 Table 30),qpdf 之類的驗證器不再把頁面樹回報為受損,之後也能繼續在頁面上加入內容

Version 2.765.15

Fixed

  • 在 Table 範例中,小計金額如今照預期橫跨 Qty 與 Price 兩欄;之前用錯了儲存格索引,把 Qty 欄留成空儲存格

Version 2.765.14

Fixed

  • THPDFTable 儲存格裡的影像如今畫在儲存格內部,並遵守垂直對齊設定;之前位置低了恰好一個影像的高度,落到儲存格下方、表格之外

Version 2.765.13

Fixed

  • Unicode 文字寬度(GetWideTextWidth 與齊行用的度量)如今與字型相符;Arial 這類字型之前量出的寬度約為應有值的兩倍
  • 建立在這些寬度之上的表格、自動換行文字,以及右對齊、置中或齊行的文字,版面如今恢復正常:儲存格裡的短文字不再換行,右對齊的數值能貼到儲存格邊緣,表格儲存格裡的 HTML 文字也不再出現字間大空隙

Version 2.765.12

Fixed

  • 含核取方塊或選擇鈕的表單,如今在表單預設資源裡列出 ZapfDingbats 字型(/ZaDb);自行繪製這些欄位的檢視器(AutoFormAppearances 關閉時的預設行為)會到那裡查找字型來畫出勾選記號,之前以 Poppler 為基礎的檢視器會回報未知字型,且不顯示任何記號

Version 2.765.11

Fixed

  • 在 CJKAnnotations 範例中,每個語言列的第一個便條圖示如今與該列其他圖示對齊;之前它的位置高了 5 點

Version 2.765.10

Fixed

  • 以英文名稱請求的字型,如今在其他語言的 Windows 系統上也找得到;在中文、日文或韓文 Windows 上請求 SimSun、Microsoft YaHei 或 MS Gothic,之前會被當成字型不存在,因為 Windows 以系統語言回報名稱,文字於是未經提示就改用 Arial Unicode MS

Version 2.765.9

Fixed

  • Windows 存放在 TrueType 集合(.ttc)裡的字型,例如 SimSun、Microsoft YaHei 與 MS Gothic,如今會內嵌成有效的獨立字型;之前內嵌字型的每個資料表都指向錯誤的資料,檢視器因此拒用而退回系統字型,在沒有該字型的電腦上,文字還會顯示錯誤的字形
  • 所請求的字型缺失、被 Windows 對應到集合字型的文件也受影響,例如系統上只有 SimSun 可用時,以 Arial Unicode MS 呈現的 Unicode 文字

Version 2.765.8

Fixed

  • 內含非 ASCII 文字的原始碼檔案,如今再度以帶位元組順序標記(BOM)的 UTF-8 儲存;少了這個標記,Delphi 會以建置電腦的字碼頁讀取原始碼,在中文、日文、韓文與其他非西方語系的 Windows 系統上,範例裡的 CJK、阿拉伯文、希伯來文與帶重音文字,在產生的 PDF 中都成了亂碼,程式庫的錯誤訊息也會顯示錯誤字元
  • 無論在哪裡編譯,CJKAnnotations、Annotations、HelloWorld、RtLTextOut、PageSizes、TextOut、Showcase 與 ViewerPref 範例如今都能產出預期的文字

Version 2.765.7

Fixed

  • 以 UTF-8 提供的文件資訊(Title、Author、Subject、Keywords、文章執行緒標題,以及 SetLoadedDocumentInfo 搭配 SetLoadedTitle 系列)如今以 Unicode 儲存,檢視器因此能正確顯示帶重音與 CJK 的文字,文件資訊也與 XMP 中繼資料一致
  • 系統字碼頁的文字(例如中文 Windows 上的中文標題)如今也能正確儲存,因為不構成有效 UTF-8 的位元組會以該字碼頁解讀

Version 2.765.6

Fixed

  • 新文件的初始檢視(InitialZoom)如今寫出完整的符合頁寬與符合頁高目的地;ISO 32000-1 Table 151 要求的運算元之前缺席,以致 Poppler 之類的檢視器對每份以預設設定建立的文件都回報目的地陣列過短

Version 2.765.5

Fixed

  • 不從第一頁開始的頁面標籤,如今也涵蓋第一個範圍之前的頁面,這些頁面維持普通數字;頁面標籤樹必須包含第一頁(ISO 32000-1 12.4.2),否則檢視器可能顯示錯誤的標籤
  • SetLoadedPageLabel 如今按頁面順序保存各範圍,並取代起始頁相同的範圍,檢視器因此顯示預期的標籤;之前新範圍會亂序附加,還可能重複
  • SetLoadedPageLabel 不再丟棄把標籤存放在獨立物件中的文件既有的標籤,也會更新拆成多個節點的標籤樹
  • 以 UTF-8 提供的頁面標籤前綴,如今以 Unicode 儲存

Version 2.765.4

Fixed

  • 以 UTF-8 提供的連結描述(AddURILink、AddGoToLink、AddGoToRLink、AddLaunchLink、AddNamedDestinationLink 與結構目的地連結)如今以 Unicode 寫入,螢幕閱讀器與檢視器因此顯示帶重音與 CJK 的文字,不再是亂碼
  • 以 AddLoaded...Annotation 方法加到已載入文件的註解,其文字與作者也一體適用,與新文件中建立的註解一致

Version 2.765.3

Fixed

  • AddGoToLink 如今可連向新文件中稍後才加入的頁面,第一頁上的目錄因此能向前連結;這類連結之前會被直接丟棄,不報任何錯誤
  • 目標頁面始終未加入的連結,如今保留連結區域但不含動作,不再指向不存在的頁面

Version 2.765.2

Fixed

  • SetLoadedOutlineOpen 如今能開啟與收合已載入文件中的書籤;之前它寫入的是檢視器忽略的鍵,書籤因此維持原狀
  • AddLoadedOutline、SetLoadedOutlineURI 與 SetLoadedOutlineDestination 如今作用在所指定的書籤上;索引大於 0 時,之前會改到錯的書籤,或者毫無作用
  • 在已載入文件中加入書籤,如今會更新其父項、各祖先與大綱的可見項目計數,檢視器不再顯示錯誤的展開狀態或項目總數
  • 對已載入書籤設定網頁連結,如今會移除其頁面目的地;設定目的地則會移除其動作,因為書籤只能兩者擇一
  • 以 UTF-8 傳給 AddLoadedOutline 與 SetLoadedOutlineTitle 的書籤標題,如今以 Unicode 儲存,不再是亂碼位元組

Version 2.765.1

Fixed

  • 新文件中的書籤如今會記錄可見項目的數量,符合 ISO 32000-1 12.3.3 的要求;之前大綱與每個開啟的書籤都把所有巢狀項目算進去,包括收合書籤裡的項目
  • 在子項目加入後才設定書籤的 Opened,如今會在檢視器中展開它;之前這項變更從未寫進檔案
  • 對既有書籤指定 Title,如今會改變文件中顯示的標題
  • 含非 ASCII 文字、以 UTF-8 提供的書籤標題,如今以 Unicode 寫入,帶重音與 CJK 的標題因此正確顯示,不再是亂碼
  • 書籤如今帶有規格要求的父項參照

Version 2.765.0

Added

  • HPDFTokenizeContentStreamAppend 能把內容串流直接 tokenize 進既有的 token 陣列,需要合併多個串流的呼叫端因此不必為每個串流配置一個暫存陣列

Changed

  • 為轉譯而編譯頁面時,不再為內容串流裡的每個數字與運算子配置記憶體;頁面內容如今直接 tokenize 進該頁的顯示清單,而不是事後複製過去
  • 平行頁面轉譯在冷文件上的擴展性大幅改善:在一份 128 頁的向量測試文件上,4 個 worker 如今比 1 個 worker 快約 3 到 3.5 倍(先前 32 位元建置約 1.4 倍,64 位元建置約 1.7 倍)
  • 單執行緒的頁面編譯與轉譯在該文件上也快了約 35%;token、顯示清單與轉譯輸出維持不變

Version 2.764.7

Changed

  • 轉譯經常儲存與還原圖形狀態(q/Q)的內容時,不再為每次儲存配置記憶體;之前這會讓平行頁面轉譯的 worker 執行緒在記憶體管理員裡互相等待
  • 128 頁向量測試文件的冷平行轉譯,4 個 worker 快約 7–10%,單一 worker 也快約 5%;轉譯輸出不變

Version 2.764.6

Fixed

  • 頁面先前轉譯過、顯示清單仍在快取中時,平行頁面轉譯不再退化成一次只轉譯一頁
  • 之前每個待繪製的頁面都握著自己的記憶體保留額,一次卻只繪製一頁,其他 worker 於是在共享記憶體預算上卡住;如今等待中的頁面數達到 worker 數時,就會平行繪製
  • 第一頁依舊會提早送達,而一批所保留的記憶體如今維持與 worker 數成正比,不再吃滿整個預算

Version 2.764.5

Fixed

  • SetStructureClassMapEntry 如今可以把同一個屬性字典註冊到多個類別名稱下,或再次註冊到同一個名稱下,而不會釋放它
  • 之前移除或替換其中一個條目會釋放共用的字典,其餘 /ClassMap 條目因此指向已釋放的記憶體,儲存文件時可能寫出垃圾資料或擲出存取違規
  • 直接建立的屬性字典如今在註冊時會變成間接物件,每個 /ClassMap 條目都參照它;字典歸文件所有,呼叫端不得自行釋放

Version 2.764.4

Fixed

  • 當頁面的 /Font、/XObject 或其他資源表直接寫在 /Resources 裡、且其中每個條目都未使用時,RemoveUnusedLoadedPageResources 不會再於移除該資源表之後又寫入它
  • 之前該寫入落在已釋放的記憶體上,通常無人察覺,卻可能在同一個工作階段稍後損毀記憶體或擲出存取違規
  • 清空的資源表仍會從 /Resources 移除,儲存的輸出不變

Version 2.764.3

Fixed

  • 以 PubSecKeyMaterial、經 LoadFromFile 或 BeginIncrementalUpdate 開啟公鑰(憑證)加密的 PDF 時,不再從已釋放的記憶體讀取收件者信封來還原檔案金鑰
  • 這個失敗取決於記憶體恰好被重用的方式:文件通常能開啟,但可能被當成未指定金鑰材料而遭拒,或解封出錯誤的位元組
  • 多收件者文件、收件者選擇 callback,以及以 AddPubSecKeyMaterial 註冊的額外金鑰材料,全都使用同一份修正後的信封清單

Version 2.764.2

Fixed

  • 為已載入表單產生的欄位外觀(出自 AddLoadedTextField 與其他 AddLoaded* 欄位方法、EnsureLoadedFieldAppearanceStream 或 FlattenFormFields)如今各自持有 AcroForm /DR 字型的參照,不再共用 /DR 條目
  • 替換或刪除 AcroForm /DR 字典,或移除最後一個表單欄位(這也會一併移除 AcroForm),都不會再讓這些外觀指向已釋放的字型物件
  • 此前,事後釋放文件可能觸發一個隱蔽的存取違規,導致文件其餘部分得不到釋放,或記憶體受損,又以 64 位元建置最常見
  • 直接寫在 /DR 裡的字型,在外觀首次用到它時會變成間接物件,因此儲存出的檔案裡,欄位外觀與 /DR 參照的是同一個字型物件

Version 2.764.1

Fixed

  • 在 LoadFromFile 之後呼叫 ProcessObjectStreamsForDecompression,不再讀取載入時已經關閉的檔案串流,而是改為重新掃描已載入的檔案,object stream 成員因此仍可供 ExtractObjectFromStream 使用
  • 這個錯誤取決於記憶體實際配置的方式:通常不會被察覺,但可能擲出存取違規,或掃描到不相干的記憶體,又以 64 位元建置最常見
  • FindAllObjectStreams、ScanAndLoadReferencedObjects 與 ForceLoadMissingReferencedObjects 在載入之外被呼叫時如今什麼都不做,不再碰已關閉的串流

Version 2.764.0

Changed

  • 一個 THotPDF 執行個體(例如拖放到表單上的元件)如今可以接連寫出任意多份文件:EndDoc 之後再呼叫 BeginDoc 會開始一份全新且獨立的文件,而不是擲出例外
  • EndDoc 會丟棄為已寫文件註冊的一切,包括其影像、字型、表單欄位、大綱、文件 JavaScript、具名目的地、頁面標籤、ICC 設定檔與輸出意圖,下一個 BeginDoc 則會釋放其頁面與物件,這些都不會帶進下一個檔案;開啟 ReproducibleOutput 時,重複使用的執行個體所寫的第二份文件,與新執行個體寫出的同一份文件逐位元組相同
  • 在 EndDoc 與下一個 BeginDoc 之間完成的註冊,例如 AddPDFAOutputIntent 或透過 Names 加入的指令碼,都歸下一份文件所有,不會再被 BeginDoc 清除
  • FileName、Compression、PDFACompliance、Author、Title 這類屬性設定,連同頁面圖層與字型後備鏈,都會延續到下一份文件;為某份文件自動升高的 PDF 版本,會回到 Version 屬性的值
  • 已寫文件在 EndDoc 之後仍可使用,直到下一個 BeginDoc,ValidatePDFUA2Structure、CurrentPageNumber、PagesCount 與版面診斷因此能繼續對它運作
  • 由於受保護文件一經加密,密碼即被清除,當 ActivateProtection 仍為開啟且未設定新密碼時,BeginDoc 會擲出例外,而不是用空密碼保護下一個檔案
  • 在同一個執行個體上改寫已載入文件之後再開新文件,同樣會得到乾淨的檔案

Version 2.763.1

Fixed

  • 轉換 EPUB,或以 HTML5 設定檔匯入 HTML 時,段落放不進目前頁面不再有觸發存取違規的風險;段落如今一律畫在新頁面上
  • HPDFRenderHTMLDocument 所用緊湊區塊轉譯器中的段落、清單項目與水平線,也一併獲得相同的修復
  • 這個錯誤取決於記憶體實際配置的方式,因此只偶爾發作,又以 64 位元建置最常見,可能讓轉換沒有產出,或損毀其內容

Version 2.762.1

Fixed

  • 對已經寫出新文件的 THotPDF 執行個體再次呼叫 BeginDoc,不再以存取違規收場;此時會擲出例外,要求改用新的執行個體,因為原執行個體仍握有已完成文件的物件、影像、字型與表單欄位
  • 若不擋下,第二份文件本會夾帶第一份文件的物件,包括其內容與表單欄位;一份新文件配一個執行個體,每個檔案才能只含自己的內容
  • 以 LoadFromFile 載入既有文件再改寫的用法不受影響

Version 2.762.0

Fixed

  • 文字、自由文字、線條、方形、圓形、圖章與檔案附件註解,在 PDF/A-2、PDF/A-3、PDF/A-4 與 PDF/X-6 文件中看得到了;先前它們只帶著一個只為滿足驗證器的空外觀串流,而檢視器畫的是外觀,結果什麼都沒顯示
  • 這些外觀如今真的會畫出註解:方形與圓形的框線、線條、以註解顏色繪製的便條圖示與附件圖示、圖章框線,以及填上自身背景顏色的自由文字方塊
  • PDF 2.0 輸出會為上述每一種註解、延伸標記註解與新表單欄位提供外觀串流,並寫入 /NeedAppearances false,符合 ISO 32000-2 Table 166 的要求;在 PDF/A 與 PDF/X 之外,自由文字與圖章名稱以 Helvetica 繪製
  • 在 PDF/A 與 PDF/X 中,自由文字與圖章的外觀不繪製文字,因為那裡用到的每個字型都必須內嵌;文字仍留在註解裡,交由檢視器顯示

Version 2.761.6

Fixed

  • 檔案附件註解(AddFileAttachmentAnnotation)如今可在檢視器中再次開啟與儲存:檔案規格先前把內嵌檔案串流本身直接寫成 /EF,而 ISO 32000-1 Table 44 要求的是一個 /EF 字典,把串流放在其中的 /F 底下,讀取器因此回報檔案項目遺失
  • 這類附件的內嵌檔案串流類型標為 /EmbeddedFile,註解文字也會一併存成檔案的描述

Version 2.761.5

Fixed

  • 具名目的地、文件層級 JavaScript 與文件附件寫出時,名稱樹的鍵會依排序後的順序排列,符合 ISO 32000-1 7.9.6 的要求;先前按註冊順序寫入,會搜尋名稱樹的讀取器可能因此漏掉條目(qpdf 便回報這些樹未排序)
  • 附加兩個同名檔案,不再產生兩個條目共用同一個鍵(先前只剩一個附件存得到);第二個附件會取得如 a (2).txt 這類帶編號的鍵,並保留原本的檔名
  • AddLoadedDocumentJavaScript 與 AddLoadedNamedDestination 的變更會確實存檔;先前名稱樹若位於直接字典中,編輯過的名稱樹不會寫回,新條目因此遺失。兩者如今都插在排序後的位置,在拆成 /Kids 節點的樹裡也一樣,並會取代同名的既有條目
  • AddLoadedDocumentJavaScript 改為把 JavaScript action 存成名稱樹的值,而不是裸指令碼串流;AddLoadedNamedDestination 則會寫出其 /XYZ 目的地的縮放運算元
  • RemoveLoadedJavaScript 與 RemoveLoadedJavaScriptAll 會把指令碼從文件本身移除;以往只有 getter 回傳的清單變了,指令碼仍留在存出的檔案裡
  • SetDocumentAttachmentMetadata 重新命名的是傳入的附件;先前它改掉的是樹中最後一個附件的鍵,如今重新命名的條目會移到排序後的位置

Version 2.761.4

Fixed

  • 新建的 AcroForm 一律會在表單的預設資源(/DR)中定義欄位預設外觀字串所指名的 Helvetica 字型,符合 ISO 32000-1 12.7.3.3 的要求;先前沒有 AutoFormAppearances 時這個字型不存在,會自行建構欄位外觀的檢視器便無字型可用
  • AddLoadedComboBox 建立的是真正的下拉式清單方塊;先前它設了 Edit 旗標而非 Combo 旗標,欄位因此變成清單方塊,檢視器把所有選項列成一覽表
  • 加進已載入文件的欄位,會把 /NeedAppearances 寫成布林值 true 而非名稱 /true;為它們建立的 AcroForm 會取得其 /DA 字串所引用的預設外觀字串與預設資源
  • AddLoadedTextField、AddLoadedCheckBox、AddLoadedComboBox、AddLoadedListBox 與 AddLoadedPushButton 會為新欄位提供外觀串流,因此在不自行建構外觀的檢視器裡,以及表單設有 /NeedAppearances false 的文件中,欄位都顯示得出來
  • 為已載入按鈕產生的外觀(加入、重繪或扁平化時)如今會畫出標題文字,以往則是空白

Version 2.761.3

Fixed

  • 在已載入表單中改變文字或選擇欄位的值,如今會重繪該欄位:SetFormFieldValue、ResetLoadedFormField 與多選清單方塊的更新都會重新產生外觀串流;以往存出的檔案在所有檢視器裡和列印時都顯示舊文字,因為檢視器畫的是外觀,不是儲存的值
  • 密碼文字欄位產生的外觀,每個字元顯示一個星號,而不是把密碼以可讀形式顯示(ISO 32000-1 Table 228);開啟 AutoFormAppearances 的新欄位,以及重繪或扁平化的已載入欄位都適用
  • AnalyzeLoadedSignatureRevisions 會把簽署後填表所新增的外觀字典、外觀串流及其資源歸類為表單填寫,與它對欄位本身的既有處理一致;在增量更新中填寫已認證表單,不再被回報為可辨識結構之外的變更

Version 2.761.2

Fixed

  • 以 Flate 壓縮加入的 1 位元與 4 位元調色盤點陣圖,如今保留自己的顏色;先前它們會被重新對映到 256 色的系統調色盤,該調色盤不含的每個顏色都因此偏移。如今它們以自身的位元深度與調色盤內嵌,影像資料也變得更小
  • 調色盤把白色排在黑色前面的 1 位元點陣圖,以 CCITT Group 3、CCITT Group 4 或 JBIG2 壓縮時不再輸出成負片,批次與跨頁 JBIG2 路徑也在內;較深的調色盤顏色一律編碼成黑色
  • icAutoMono 與 AddMonochromeImageAuto 遇到帶彩色調色盤的 1 位元點陣圖時,會改用 Flate 保留,不再用 CCITT 或 JBIG2 把它變成黑白
  • CCITT Group 3 二維影像(icCCITT32)如今遵循其 /K 參數:/K 為 2 時,第一列與每隔一列以一維編碼;以往每一列都以二維編碼,而 /K 1 其實完全不允許二維列(ISO 32000-1 Table 11、ITU-T T.4)

Version 2.761.1

Fixed

  • 以 DCT 壓縮加入的 JPEG 影像如今保留自己的色彩模型:灰階 JPEG 寫成 DeviceGray,CMYK JPEG 寫成 DeviceCMYK;以往所有 JPEG 都被宣告成 DeviceRGB,檢視器因此把灰階檔顯示成亂碼或截斷,CMYK 檔則顏色錯誤
  • 帶 Adobe marker(一般 Photoshop 輸出)的 CMYK JPEG,會取得其取樣值需要的反轉 /Decode 陣列(ISO 32000-1 8.9.5.2 與 7.4.8)
  • PDF/A 色彩空間檢查現在把灰階與 CMYK JPEG 影像視為 DeviceGray 與 DeviceCMYK 使用,而不是 DeviceRGB
  • 把 JPEG 蓋印到已載入頁面時,StampLoadedPageImage 也套用同一套色彩模型
  • PHOTO.JPG、scan.jpeg 這類檔名,在各種壓縮類型下都會以 JPEG 載入;AddImage 的檔案 overload 改以簽章識別 JPEG 資料,不再依賴區分大小寫的 .jpg 副檔名,也不會再把這類檔案當點陣圖讀取

Version 2.761.0

Added

  • 新的 AddLoadedSignedSignatureField 會在已載入的文件中加入一個可立即簽署的簽章欄位,已簽署的 PDF 因此能在一次增量更新中取得第二個簽章(會簽或核可)
  • 欄位會保留簽章空間,供 SignPDFWithPFX、PreparePDFForSigning 與 InsertSignatureHex 填入;在 BeginIncrementalUpdate 與 SaveIncrementalUpdate 之後,新簽章涵蓋整個檔案,較早的簽章仍然有效
  • 每個欄位可個別設定選用的原因、位置與聯絡資訊、SubFilter 以及保留的簽章大小;AcroForm 會標記為已簽署且僅能附加,已簽署的文件不會加上外觀重新產生旗標

Fixed

  • BeginIncrementalUpdate 的多簽章工作流程文件,現在描述的是確實可行的步驟;原本的說明依賴載入後並不存在的目前頁面,而且使用的簽章欄位沒有保留簽章空間,簽署因此失敗

Version 2.760.1

Fixed

  • DrawQRCode、DrawDataMatrix、DrawPDF417 與 DrawAztec 繪製完畢後會還原頁面填色,與文件所述一致;以往之後填色的圖形會被染上條碼的顏色
  • 這些條碼以單一路徑繪製,同一列中相連的深色模組會合併成單一矩形,頁面內容因此更小,檢視器也不會再顯示相鄰模組之間的細微接縫

Version 2.760.0

Changed

  • 把 CryptKeyLength 設為 aes256 時,若輸出版本較低就會一併提升到 PDF 1.7,做法與其他依版本而定的功能一致,文件因此真正以 AES-256 保護。在預設的 PDF 1.6 輸出下,以往文件會默默改用 AES-128 寫入;設定 StrictVersionLock 時,較低的版本仍會退回 AES-128

Fixed

  • 保護屬性的說明頁原本列出不存在的權限名稱;prPrint 與 prPrint12bit 的範例與描述現已對齊實際選項,公開金鑰加密的備註也列出支援的金鑰類型

Version 2.759.0

Fixed

  • 已簽署的 PDF 現在會把整個 /Contents 字串(含 < 與 > 分隔字元)排除在簽章涵蓋的位元組範圍之外,符合 ISO/IEC 32000-1 12.8.3.3 的要求;以往分隔字元被簽進去,會拿位元組範圍核對簽章值的驗證器會回報無效位元組範圍
  • 帶附隨 MAC 的簽章在做 PDF MAC 驗證時,標準位元組範圍與舊版寫出的位元組範圍都會接受

Security

  • 文件的兩個位元組範圍之間留有未簽章的間隙,若其中除了簽章自身的 /Contents 字串以外還放了其他內容,簽章驗證會直接拒絕,藉此堵住 signature-wrapping 漏洞——以往簽章位元組之外的內容會被誤報成已受涵蓋;較早版本產生的簽章仍可通過驗證

Version 2.758.1

Fixed

  • AttachSignatureFieldAppearance 為未簽署簽章欄位提供的預設外觀,如今又會畫出淺灰背景:填色矩形原本少了兩個運算元,而且在路徑內才設定顏色,檢視器會拒收這種內容
  • 在新頁面上建立的 FreeText annotation 現在帶有 ISO 32000-1 規定的預設外觀字串,檢視器因此能自行排版其文字,而不是顯示一個空框

Version 2.758.0

Fixed

  • 內建 JBIG2 解碼器現在會把文字條帶中第一個符號之後的每個符號,放在 ISO/IEC 14492 指定的位置;以往每多一個符號就往右偏一個像素,其他編碼器產生的 JBIG2 掃描檔裡的文字因此逐字散開
  • 以內建算術編碼器寫出、符號字典只含單一 glyph 的 JBIG2 影像,現在能被其他 PDF 檢視器讀取;以往符號識別碼多用了 1 個 bit 編碼(應為 0 個),那些檢視器在第一個 glyph 就會失敗
  • 透過 refinement 與 aggregation 組合 glyph 的符號字典,現在按標準間距解碼,與其他 JBIG2 解碼器一致
  • 共用全域符號字典的 JBIG2 影像,其 /DecodeParms 現在寫成與 /Filter 陣列對應的陣列;以往其他檢視器會忽略單一字典而找不到共用的 glyph,這類影像因此無法顯示

Version 2.757.0

Fixed

  • DirectDrawBarcode 與 Simple* 條碼函式現在對每種條碼體系都畫得出真正的條碼;以往多半只會回傳均勻交錯、不含任何資料的條帶。GS1-128 在 code set C(type 22)時會直接繪製,不再退回 Code 39,POSTNET 的短條則畫在高度的 40%
  • DirectDrawBarcode 會隨頁面座標系統縮放條寬與條高,文件縮放比例不是每單位一點時,條碼依然可讀
  • Code 128、Code 93 與 EAN / UPC 家族無論 Ratio 設多少,元素寬度都維持精確的 1 到 4 個模組;以往比例只要不是 2,條碼就會變得無法辨讀
  • 只給資料位數的 EAN-8、EAN-13、UPC-A 與 UPC-E,現在會自動補上檢查碼;以往最後一個資料位會被誤當成檢查碼。啟用 Checksum 時,UPC-A 不再丟掉最後一個資料位,UPC-E 的檢查碼(同時決定條的 parity)也改由展開後的 UPC-A 號碼計算
  • 位數為奇數的 MSI 檢查碼現在計算正確,POSTNET 會補上更正碼,Interleaved 2 of 5 則以補前導零的方式保留奇數長度號碼的最後一位
  • Code 128 A 以 SHIFT 編碼小寫字母,不再把它們變成空白或控制字元;Code 39 把小寫摺疊成大寫;Codabar 則保留呼叫端指定的起始與結束字元
  • 條碼體系無法表示的字元現在會丟出例外;以往 Code 39 與 Code 128 會丟棄或替換這些字元,Codabar 則會讀到字元表範圍之外
  • 啟用 Checksum 的 GS1-128,不再每次量測或繪製條碼時都往 Text 追加一個新的檢查碼

Version 2.756.0

Fixed

  • 以 DrawQRCode 繪製或以 THPDFQRCode 建立的 QR Code,現在都能被標準讀碼器掃描:格式資訊按 ISO/IEC 18004 規定的位置擺放,版本 10 到 40(以及 7-Q)的錯誤更正區塊結構也都正確
  • 自動模式選擇會讓小寫文字留在 byte mode,像 https://example.com 這樣的 URL 不會再被編碼成大寫、讀回來也變大寫
  • 長度個位數為 1 或 2、或需多容納一個英數字元的文字,現在會分配到足夠大小的符號;以往最後幾個字元會被丟棄
  • 同一個 THPDFQRCode 實例編碼第二次時,不會再把上一次的符號混進新的結果
  • 當明確指定的 version 太小,或指定的 numeric 或 alphanumeric 模式容不下資料時,Encode 會回傳 False,而不是產出被截斷的符號
  • 遮罩選擇會套用 ISO/IEC 18004 7.8.3 的類 finder 圖樣罰分與深色模組平衡罰分
  • 內建條碼解碼器能讀取標準 QR Code:含 Reed-Solomon 驗證的多區塊符號、numeric、alphanumeric、byte 與 ECI 分段、UTF-8 承載資料,以及有多個對齊圖樣的版本

Added

  • HPDFQRFunctionMap 與 HPDFQRExtractDataWords 公開模組版面與含錯誤偵測的區塊解交錯,供讀取 QR 符號的程式碼使用

Version 2.755.9

Changed

  • 影像 soft mask 轉譯會重複使用精確的水平取樣索引,並在受支援的 Delphi x86 與 x64 目標上使用 SSE2 alpha 預乘,以有界的暫存空間與純量後備路徑保持像素捨入與取消行為

Version 2.755.8

Fixed

  • 已取消的頁面預取釋放文件資源後,前景轉譯即可恢復,不必等待 worker 執行緒完成退出;明確取消、替換、重新載入與銷毀仍會 join 該執行緒,無效頁面範圍也不再洩漏暫停中的 worker

Version 2.755.7

Fixed

  • 頁面轉譯在圖形狀態還原時保留目前路徑,並隔離 Form XObject 與 Type3 glyph 的路徑、裁剪與已儲存狀態,包括格式錯誤的多餘還原與取消

Version 2.755.6

Fixed

  • SIMD 矩形轉譯器現在會遵循複合的 even-odd 與 nonzero 填色規則,保留孔洞、反射子路徑方向與小數邊緣定位;點陣化期間的取消會捨棄部分點陣圖並正確傳播

Version 2.755.5

Fixed

  • 多選表單匯入現在會先保留精確的選項值,再解譯 XFDF 中的十六進位相容拼寫,防止字面值選到不同的選項,並讓儲存值與選取索引保持一致

Version 2.755.4

Fixed

  • 直立(WMode 1)CID 文字的擷取現在依 ISO 32000-1 9.4.4 的位移量移動筆位置,字元間距會如規格定義縮短沿欄向下的步進,而不是拉長
  • 直立文字中的 TJ 位置調整現在沿欄上下移動筆位置,而不是橫向移動,擷取出的欄因此不再被切開,閱讀順序維持由上而下
  • 擷取時,CIDFont 的 /DW2 陣列會按其規定的 [v1y w1y] 順序讀取,依賴預設值的 glyph 因此前進一個全 em,而不是 0.88 em
  • 擷取出的直立 glyph 原點保持在欄的中線上,glyph 方框放在垂直原點減去位置向量的位置,水平分量預設為 glyph 寬度的一半
  • 描述多個連續 CID 的 /W2 清單項目,現在於擷取時把度量套用到該段中的每個 CID,而不是只套用到第一個
  • 頁面轉譯器與文字擷取直譯器現在共用同一份 glyph 與 TJ 位移規則實作,轉譯位置與擷取位置因此不可能漂移

Version 2.755.3

Added

  • THPDFQCStatementInfo 新增 HasPSD2Statement、PSD2RolesOfPSP、PSD2NCAName 與 PSD2NCAId;CMS 層的描述子攜帶相同的欄位
  • HPDFParsePSD2QcStatement 可解析手上已有 DER 格式的 PSD2 statement,並拒絕任何格式錯誤的輸入

Deprecated

  • PSD2RolesPayer 與 PSD2RolesPayee 為原始碼相容性保留,但永遠為空,因為規格並未定義 payer 與 payee 角色清單;請改用 PSD2RolesOfPSP

Fixed

  • PSD2 合格憑證 statement 現在按其 ETSI TS 119 495 結構讀取,回報支付服務提供者的每個角色及其角色 OID 與角色名稱、國家主管機關名稱與主管機關識別碼;先前的真實 PSD2 憑證完全回報不出角色
  • 格式錯誤的 PSD2 statement(包括長度越界或非最小編碼、缺少或多出元件、字串型別錯誤,以及非有效 UTF-8 的名稱)會整體被忽略,而不是部分回報

Version 2.755.2

Fixed

  • 直立(WMode 1)文字的頁面轉譯現在按 ISO 32000-1 9.4.4 的文字空間位移推進每個 glyph:word spacing 不再乘上字型大小,也不再加到雙位元組 CID 碼上,因為它只適用於單位元組的空白碼
  • 直立文字的字元間距嚴格按規格定義沿書寫方向套用,因此以非零 Tc 排版的欄,轉譯高度與其他符合規範的檢視器一致
  • 隱形文字(轉譯模式 3 與隱藏的可選內容)以與可見文字相同的規則推進直立欄,後續可見 glyph 的位置因此保持正確
  • CIDFont 的 /DW2 陣列按其規定的 [v1y w1y] 順序讀取,依賴預設值的字型因此前進一個全 em,而不是 0.88 em
  • 直立 glyph 繪製在垂直原點減去位置向量的位置,水平分量預設為 glyph 寬度的一半,使欄位居中於筆位置
  • 描述多個連續 CID 的 /W2 清單項目,現在把度量套用到該段中的每個 CID,而不是只套用到第一個

Version 2.755.1

Fixed

  • ExportLoadedFormToFDF 現在會先產生完整的 FDF 本體再建立目標檔案,匯出中途失敗不會再把目的地換成被截斷的文件
  • FDF 串流交換掃描器會追蹤十六進位字串,當 hex 值緊貼著字典終結符結束時,欄位字典保持完整
  • choice 選取索引的對帳改用單一比對器解碼混用的 PDFDocEncoding、UTF-16 與十六進位拼寫,等價的匯出值能一致地重建 /I
  • XFDF 匯入接受以純文字字面值交付的選項匯出值十六進位拼寫,第三方工具寫出的往返流程恢復正常
  • FDF 匯出會跳過沒有欄位名稱的純 widget 欄位,與 XFDF 匯出器及所有匯入器的行為一致
  • Delphi Stamp 範例把浮水印與橡皮章註解錨定到實際頁面大小,在橫向與非 A4 輸入上仍清晰可見
  • C++Builder DigiPrint 範例會釋放影像與每頁的線條清單,初始化表頭行距係數,並在 demo.xml 缺失時回報錯誤而不是直接崩潰
  • Win64 ABI DLL 與 codec worker 建構指令碼在 RAD Studio 12 及更新版本上會到 bin64 找 dcc64;完整的 C++Builder 函式庫建構會偵測並清理共用輸出目錄裡的試用版殘留

Version 2.755.0

Added

  • 已載入的多選 choice 欄位現在能透過 FDF 檔案與串流 API,以及感知 XFDF 陣列的回呼,交換單一選取值,保留選項邊界並在匯入時同步選取索引

Version 2.754.6

Fixed

  • SetLoadedFormFieldExportValue 現在走一般欄位值更新路徑,保留按鈕值類型、選取索引、外觀狀態、編碼字串與計算變更追蹤

Version 2.754.5

Fixed

  • XFDF 表單值與註解文字元素現在完整保留原始內容,不插入排版空白,包括前導與尾端空格、tab 與換行

Version 2.754.4

Fixed

  • 已載入表單的取值、預設值與最大長度輔助方法現在會尊重繼承與間接條目;欄位重設會保留預設值類型、同步 choice 選取與按鈕狀態、不動兄弟欄位;重新產生的按鈕外觀保留選取狀態與有效的轉譯邊界

Version 2.754.3

Fixed

  • 已載入的具名子欄位在欄位類型為繼承時仍可個別定址,繼承的類型、旗標與選項可透過欄位輔助方法取得,移除欄位時會保留兄弟欄位與其 widget

Version 2.754.2

Fixed

  • 重新產生的已載入 choice 欄位外觀,現在能在保留匯出值的同時顯示 Unicode 選項標籤、繪出未選取的清單選項,並與欄位值和索引一致地高亮單選或多選

Version 2.754.1

Fixed

  • 更新已載入 choice 欄位時,現在會讓選取選項索引與新值保持一致,包括選項匯出值與選項清單之外的可編輯條目,且不修改共用的選取陣列

Version 2.754.0

Added

  • 選用的 HPDFCreateTesseractOCREngine 與 HPDFCreateRapidOCREngine 工廠能把本機辨識程式與呼叫端提供的模型接到可搜尋文字層,涵蓋 Unicode 文字、詞座標、逾時、取消與輸出預算

Fixed

  • 修正文字矩陣前進量、間接 CID 字型寬度、q/Q 與 Form 剪裁的還原、縮減 JPEG 的方向、影像柔性遮罩與 Indexed 串流調色盤,受影響頁面上的文字排版與影像內容恢復正常
  • 小型內嵌 TrueType 的實心字形改用局部覆蓋抗鋸齒,改善低 DPI 下細筆畫的表現;已取消的 OCR 請求即使辨識引擎回報失敗,也會以取消回報
  • RenderOutputDither 現在跨轉譯後端與平行頁面轉譯生效,快取失效與取消行為保持一致

Version 2.753.0

Added

  • SetLoadedFreeTextPlainText 會把受支援的已載入 FreeText 註解明確轉換成 ASCII Helvetica 純文字,並為完整重寫與增量儲存重建其可見外觀

Fixed

  • 已載入頁面的轉換與儲存驗證現在會解析間接與繼承的頁面框,保留共用的頁面尺寸,不再用 A4 取代

Version 2.752.5

Fixed

  • 頁面點陣圖初始化在清除有界區塊的過程中會檢查取消狀態、釋放未完成的點陣圖,並避免已取消的預取工作收尾初始化時拖慢前景轉譯

Version 2.752.4

Fixed

  • 關閉或重新載入文件時,現在會釋放其持有的 PDF 物件圖與串流酬載,包括共用與循環的所有權,且不會重複釋放鏈結的參照

Version 2.752.3

Fixed

  • 已載入核取方塊的值變更,現在即使正常外觀字典只包含選取狀態,也會同步外觀狀態

Version 2.752.2

Fixed

  • 在文件建構之後啟用可重現輸出時,現在會固定建立時間戳,讓等價的儲存在不同時鐘週期下保持逐位元組一致

Version 2.752.1

Fixed

  • 已載入表單欄位名稱現在以一致的方式解碼 PDF 字串,UTF-16 名稱的欄位能被找到並更新,且不改變其身分

Version 2.752.0

Fixed

  • 搬移已載入的非 widget 註解時,現在會保留註解物件身分,並把其選用的頁面參照更新為目的地頁面

Version 2.751.0

Fixed

  • 刪除已載入頁面時,現在會維護具名目的地、大綱目的地、結構樹、父樹與註解物件參照,完整重寫與增量儲存都不再產生可達的空參照

Version 2.750.0

Fixed

  • 完整 PDF 重寫現在會在替換 object-stream 容器之前展開未讀取的壓縮物件,保留字型、色彩空間與 ActualText,同時修復中文亂碼、頁面外觀改變與擷取文字改變的問題
  • 使用者密碼為空的加密文件現在能直接載入並開始重寫;被鎖定的 object stream 會明確失敗,不再產出不完整的文件
  • 未修改的數值物件保留來源精度,避免重寫之後出現細微的色彩與透明度漂移
  • 複製的頁面保留已驗證的資源名稱與參照,修復間接資源字典錯誤與綁定錯誤的影像

Version 2.748.6

Fixed

  • 修正交叉參照子區段宣告的條目數超過表格實際容納數時,會在已無資料可讀的情況下把宣告數量整輪掃完的問題:一個 40 位元組的格式錯誤檔案因此要花數十秒才被拒絕
  • 修正操作拋出例外時 job runner 會丟掉所有已產出結果的問題,以及周邊串流無法建立時 HTML 匯入會丟失圖片物件的問題

Version 2.748.5

Fixed

  • 修正密碼含非 ASCII 字元的 PKCS#12 檔案無法開啟的問題:密碼是 UTF-8 位元組串,之前卻只是逐位元組加寬而未真正解碼,ASCII 以外的每個字元都會推導出錯誤的金鑰。以較新的 PBES2 方式保護的檔案不受影響,這也是兩者行為不同的原因
  • 修正簽章批次驗證器與撤銷證據快取在以無效選項建構時,拋出 access violation 而不是自身錯誤的問題:解構子在其要釋放的成員尚未建立之前就執行了
  • 修正證據下載任務在引數被拒時於解構子中失敗的問題:檢查在執行緒本身建立之前就跑了
  • 修正雲端簽章提供者編碼第二個 arc 超過 39 的演算法識別碼的問題;格式錯誤的識別碼現在會拋出提供者自身的錯誤,而不是轉換錯誤
  • 憑證與簽章容器現在會拒絕宣告長度越過外層元素的巢狀元素,被驗證的內容與簽章覆蓋的內容不會再出現落差
  • RSA 簽章後,私密金鑰值會自記憶體抹除,不再滯留在記憶體中等著下一次配置重用

Version 2.748.4

Fixed

  • 修正 Type 1 字型載入從字型程式第一行讀取所有屬性的問題:token 清單在未清空的情況下被重新填充,版本、家族與字重字串、stem hints 與 charstring 金鑰長度全都取自過期 token。Type 1 字型現在會回報自己的 metadata
  • 修正 charstring 金鑰長度被保存為指向已釋放字串的指標、且未經範圍檢查就使用的問題;現在改以數值保存,並限制在格式允許的範圍內
  • 修正未內嵌字型總是退回系統預設字面的問題:要求的字面名稱被逐位元組複製進寬字元字型記錄,安裝的任何家族都匹配不上
  • 修正內嵌 TrueType 與 OpenType 解析在解碼字形輪廓、複合字形引數與 OpenType 容器的 CFF 表格時,讀取超出被截斷字型程式結尾的問題;格式錯誤的字元對應表也不再要求負數的字形陣列
  • 修正交叉參照表格與串流宣告物件編號溢位的問題:自稱接近整數上限編號的條目會繞回負索引並寫到表格之外,而宣告物件數或 /Size 遠大於檔案實際可能容納的規模時,載入器僅憑這個宣告就決定了陣列大小

Version 2.748.3

Fixed

  • 修正 Data Matrix 拒絕有效輸入的問題:符號尺寸是用數字個數減半來估算的,但只有相鄰的數字才共享一個碼字,1a2a3a 這類文字會選到裝不下自己資料的符號而編碼失敗
  • 修正 XFDF 中四位元組 UTF-8 字元(例如 emoji)解碼成錯誤替代對的問題;無法辨識的位元組也不再吞掉後面三個字元
  • 加強型中繼檔的 region 記錄現在以記錄大小約束矩形數量,不再輕信 region 標頭中的計數——那個計數可能造成遠遠讀過記錄範圍
  • 宣告寬度乘以高度超出可定址範圍的 PNG 影像,會在標頭階段就被拒絕,而不是配置長度為負的像素緩衝區
  • 高品質影像重取樣現在會回報超出範圍的請求,而不是讓中繼緩衝區大小溢位
  • 宣稱的 entropy 群組數多於自身像素數的 WebP meta prefix 影像會被拒絕,而不是用幾百位元組的輸入配置出數百 MB 的 prefix 表格
  • 修正 Aztec 編碼、WebP 點陣圖解碼與 object stream 解碼 worker 集區失敗路徑上的洩漏:後續步驟拋出例外時,建構到一半的物件就被棄置了

Version 2.748.2

Fixed

  • 修正 QR Code 符號丟掉最後碼字位元的問題:模組放置的走訪跳過了最左欄,最後一個錯誤更正區塊的尾端從未被寫進符號
  • 修正 QR 終結符以零位元填滿資料區塊其餘全部、導致 ISO/IEC 18004 要求的 0xEC / 0x11 填充碼字沒有空間的問題;版本 1 的符號反而帶了六個零碼字
  • 新的測試會從模組把產生的符號讀回來,資料區塊、填充碼字、錯誤更正區塊、遮罩與放置方式全都對照標準驗證,而不是對照編碼器自己的輸出

Version 2.748.1

Fixed

  • 修正三個解析器遇到格式錯誤輸入時掛起而不回報的問題:object 解析器遇到陣列中的 >> 或字典中的 ]、CMap 讀取器遇到游離的方括號或花括號、XFDF 讀取器遇到沒有標籤名的結構(例如文件型別宣告)或屬性之間的游離位元組。它們都停止推進游標,一個意外的位元組就能把解析變成無窮迴圈
  • 修正 XFDF 的 CDATA 區段被當成標記讀取的問題:其內容現在會當作元素文字,區段標記也會正確量測,不再吞掉第一個字元
  • 修正接近 2 GB 的 WebP chunk 長度讓大小檢查溢位、payload 複製讀過檔案緩衝區結尾的問題;chunk 長度現在以 64 位元運算做範圍檢查
  • 修正 0xFFFFFFFF 的 PNG chunk 長度在 chunk 仍回報其宣告長度的同時釋放 chunk 緩衝區、後續讀取指向已釋放記憶體的問題;過長的 chunk 會被拒絕
  • 修正 CCITT 傳真解碼在宣告頁面幾何非常大時列緩衝區大小計算溢位、可能寫過緩衝區的問題;列儲存現在設有上界,解碼會在上界處乾淨地停止
  • 修正寬度為八的倍數時 CCITT 編碼器讀取掃描線結尾後一個位元組的問題
  • 修正加強型中繼檔 comment 記錄在 64 位元的組建上透過被截斷成 32 位元的指標讀取的問題——每個帶 GDI comment 的 EMF 都會讀到不相干的位址
  • 修正調色盤條目少於 256 的 8 位元影像把未初始化記憶體當作色彩表尾端發布的問題;色彩表現在會宣告其真實條目數
  • 修正深度巢狀的不定長 BER 結構在解析簽章或憑證容器時耗盡堆疊的問題;巢狀超過 128 層會被拒絕

Version 2.748.0

Fixed

  • 修正程式庫繪製的所有 2D 條碼錯誤更正的問題:QR Code、Data Matrix、PDF417 與 Aztec 生成多項式都從常數項往上建,除法卻當作最高次項在前來算,每個符號帶的檢查碼字沒有任何符合標準的讀取器接受。檢查碼字現在與 ISO/IEC 18004、ISO/IEC 16022、ISO/IEC 15438 的計算範例一致
  • 修正 Aztec 符號丟失 payload 的問題:編碼器就地對碼字陣列做除法,呼叫端輸出的又是同一個陣列,訊息碼字被除法覆寫,符號上既沒有資料也沒有有效的 mode 訊息
  • 修正 Data Matrix 生成多項式的根從低一次方開始、得出與 ISO/IEC 16022 附件 E 規定不同的多項式的問題
  • 修正 Data Matrix finder 圖樣的問題:實心 L 現在是左欄與最底列,交錯的時鐘軌道是最上列與右欄,兩者都在與 L 共用的角落從黑開始。原本兩者對調,讀取器無法確定符號朝向

Version 2.747.4

Fixed

  • 修正已載入文件編輯會以系統小數分隔符寫入 PDF 數字的問題:頁面接合、矩形塗黑、文字與圖像 stamp、組合浮水印形狀與橢圓外觀現在一律輸出小數點,在以逗號作為小數點的 locale(例如德文或法文 Windows)下編輯過的文件不再含有會被檢視器拒絕的內容串流
  • 修正 Type 1 字型載入依賴系統 locale 的問題:FontMatrix、BlueValues、stem hints 與 charstring 實數現在都按帶小數點的 PostScript 數字解析,PFB 字型在逗號小數點的系統上也能保住度量與輪廓,不會再悄悄壞掉
  • 修正預設外觀(/DA)的字型大小與顏色解析、HTML width 與 size 屬性、FormCalc 結果與 job JSON 數字跟隨處理程序 locale 的問題;現在讀取與寫出都統一採用 invariant 格式
  • 修正內建條碼繪製以依賴 locale 的格式寫出條矩形、在逗號小數點系統上產生無效內容串流的問題
  • Free Pascal 組建現在以 invariant 格式解析與格式化內容串流運算元、文字擷取度量與 JavaScript 數字,與 Delphi 組建一致,不再退回依賴 locale 的轉換
  • 數值寫出器不再在每次呼叫時改寫主應用程式全域格式設定中的小數分隔符——那會連帶改變程式其他部分格式化自己數值的方式,而且多執行緒同時產生文件時並不安全

Version 2.747.3

Fixed

  • 修正編輯內容從壓縮頁面消失的問題:矩形塗黑、頁面接合、組合浮水印形狀與註解扁平化把 operator 附加到仍在壓縮狀態的頁面內容串流上,塗黑條、接合頁、浮水印形狀或烘焙註解因此在儲存檔案中默默缺席。現在會在附加任何內容前先展開頁面內容
  • 修正附加內容與頁面上最後一個 operator 黏連的問題——當頁面結尾不是空白時,會產生如 Q0.5 這樣的無效 token,可能使檢視器拒絕整個頁面;現在會在需要處插入換行

Version 2.747.2

Added

  • 加入 Free Pascal 的 Win32 架構支援,Lazarus 套件透過專屬建置入口可建置 i386-win32 與 x86_64-win64 兩種目標,冒煙測試套件接受架構參數,並修正 32 位元編譯與 C 符號連結問題;PDF 建立、載入、Flate 壓縮、AES 加密與 CBZ 文件處理在兩個目標上都有涵蓋

Version 2.747.1

Fixed

  • 修正內建條碼解碼器的旋轉遮罩重試:旋轉後的遮罩會在未觸及的儲存格留下殘留位元組,憑空造出幻影墨點,讓轉了 90 度的 Code 39 符號無法解讀;旋轉緩衝區現在會明確歸零,轉向拍攝與掃描的 Code 39 影像都能透過旋轉重試完成解碼

Version 2.747.0

Added

  • 加入 WebP 影像匯入:AddImageFromFile 現在接受 .webp 檔案,走內建的無損(VP8L)解碼器,實作 RFC 9649——標準前綴碼、空間性 meta 前綴碼、帶鄰域距離映射的 LZ77 回溯參考、色彩快取,以及全部四種逆變換(predictor、color、subtract-green、帶像素打包的色彩索引);有損的 VP8 影格會以明確訊息拒絕

Version 2.746.0

Added

  • 內建條碼解碼器現在能讀取拍照或掃描頁面可能出現的八種朝向的 QR 符號:finder 圖樣辨認出缺角,取樣出的模組矩陣在解碼前先旋轉或鏡射成預期佈局,轉 90 度與鏡像的擷取影像不需預處理即可解讀

Version 2.745.0

Added

  • 為已載入簽章加入 eIDAS 合格憑證評估:GetLoadedSignatureQCStatements 回報簽署者憑證的 ETSI EN 319 412-5 QCStatements——QcCompliance、QcSSCD、QcType 值、QcLimitValue 的幣別/金額/指數與 PDS 位置——外加 TS 119 495 的 PSD2 付款人與收款人角色,並在 QcCompliance 與 QcSSCD 同時主張時給出合格簽章啟發式判定(是否信任該 QTSP 仍由呼叫端決定)

Version 2.744.0

Added

  • 為已載入文件加入 N-up 拼版:ComposeLoadedPagesNUp 把每一頁重排到以來源紙張尺寸做網格合成的版面上(2-up、4-up、6-up,最大 16x16),輸出可直接列印,並把各頁的 /Rotate 吸收進放置矩陣、與合成表單共用頁面資源,還可選擇繪製間距可調的細線儲存格框

Version 2.743.0

Added

  • FlattenLoadedAnnotations 現在會把沒有 appearance stream 的 annotation 烘焙進頁面,而不是無聲跳過:widget 先從欄位值產生欄位外觀(瀏覽器列印表單常見的 /NeedAppearances 情境),輸入的值因此得以保留進頁面內容
  • 沒有 /AP 的標記類 annotation 會依自身屬性合成外觀——FreeText 與 Stamp 文字套用 /DA 樣式與 /Q 對齊,Square 與 Circle 形狀套用 /C / /IC 色彩與 /BS 線寬,Line 與 Ink 筆畫,以及 Highlight / Underline / StrikeOut / Squiggly 四邊形標記遵守 /QuadPoints 與 /CA 不透明度
  • 隱藏的 annotation(/F hidden 旗標)在沒有外觀時維持 annotation 身分,因為把看不見的註記烘焙進頁面反而會讓它現形

Version 2.742.0

Fixed

  • 修正 2.738.0 起 Free Pascal package 建置失敗的問題:LTV 證據與 seed-value 成員宣告被放進僅 Delphi 的條件區塊,實作卻是無條件的,Free Pascal package 因此編譯不過;實作現在帶上同樣的條件,package 恢復正常建置

Added

  • HTML 匯入現在以完整佔用網格解析表格,rowspan 與 colspan 儲存格會正確認領各自的欄,後續列跳過已被認領的格位,不再整列左移
  • 表格列高改為以儲存格自己的字型對儲存格文字折行計算,不再用字元數估算,窄寬混合的內容不會再撐出溢位或過大的儲存格
  • 欄寬遵循 <col> 寬度提示與逐儲存格 width 屬性,以 <thead> 標記(或開頭整列皆為 <th>)的表頭列在表格跨頁時會於每個接續頁頂端重複出現
  • rowspan 群組跨頁時保持完整:被跨列儲存格連接的各列會一起移到下一頁,跨列儲存格不會被切斷

Version 2.741.0

Fixed

  • 修正 Free Pascal 建置在文件需要其未連結 codec 時直接終止而不回報錯誤的問題:開啟 TIFF、解碼 JPEG 2000 或 JBIG2 影像、讀取 progressive 或降階取樣的 JPEG、套用 ICC 色彩轉換、要求 Zopfli 重新壓縮,都會直接讓處理程序結束
  • 這些操作現在都以呼叫端原本預期的方式失敗,使用到它們的文件載入時會跳過該功能,不會把應用程式整個帶走

Added

  • 加入結構順序文字擷取:ExtractLoadedPageStructureText 依編寫順序(ISO 32000-1 14.8.4)走訪文件結構樹,按 MCID 串接頁面的 marked-content run,政府表單與無障礙出版物這類 tagged 文件因此能擷出權威的閱讀順序,而非幾何猜測;結構樹未認領的字符落到幾何尾部,並計入未加標籤的報告

Version 2.740.0

Fixed

  • 修正 Free Pascal 建置下彩色字符失去透明的問題:內嵌彩色點陣圖走了丟棄 alpha 色版的讀取路徑,每個 emoji 或彩色字型字符都被畫成不透明矩形;這些點陣圖現在保留逐像素 alpha

Fixed

  • 啟用 P-384 ECDH 金鑰協議:CIOS Montgomery 乘法最後的條件減法以 P 的 limb 加上 borrow 作比較,遇到 P-384 / P-521 質數全為 1 的高位 limb 會繞回零而無聲錯誤借位;比較現在改為不需要溢位加法即可偵測 borrow,P-384 共享密鑰與 OpenSSL 參考向量逐位元組一致

Version 2.739.0

Added

  • Free Pascal 建置現在能加密與解密文件:AES 進入點改由函式庫自帶的 FIPS-197 實作提供,不再回報 unsupported-operation 錯誤,AES-128 與 AES-256 保護的檔案都能在此建立與開啟
  • AES-GCM 加解密,包括大型承載使用的串流 context,在 Free Pascal 建置中同樣可用
  • Free Pascal smoke test 現在會以 FIPS-197 已知答案檢查 cipher、演練 PKCS#7 與 GCM 往返,並建立一份 AES-256 保護文件後重新載入、驗證錯誤密碼會被拒絕

Added

  • HTML5 匯入引擎加入 CSS2.1 段落排版:text-align(含舊式 align 屬性與 center 標籤的映射)、經由 PDF Tc / word-space 運算子的 letter-spacing 與 word-spacing、首行縮排的 text-indent,以及 text-decoration 底線 / 刪除線規則,既有的網頁與郵件 HTML 匯入因此保留置中標題、縮排與底線
  • 內建 QR 解碼器支援推進到 version 1 以上:符號版本現在從 finder 幾何以網格整除性推導(模組網格乾淨的 version 2-40 都能解碼),byte 模式長度上限依 ISO/IEC 18004 表 7 的各版本容量,功能模組映射涵蓋對齊圖樣與更高版本的版本資訊區塊

Version 2.738.0

Added

  • Free Pascal 建置現在原生支援文件壓縮與解壓縮:deflate codec 由內建後端提供,架在 Free Pascal 內附的 Pascal zlib 實作上,FlateDecode 內容不再回報 unsupported-operation 錯誤
  • 在預設壓縮設定下,Free Pascal 可以建立並重新載入壓縮文件,交叉參照串流、物件串流、內嵌檔案與壓縮頁面內容也都能在此解碼
  • 後端涵蓋 zlib 與 raw deflate 包裝、gzip 包裝與自動表頭偵測,SVG 匯入與多視窗尺寸解壓縮 fallback 的行為與 Delphi 一致
  • Free Pascal smoke test 現在透過包裝器與總和檢查碼自測,加上一份壓縮文件往返,驗證 codec

Added

  • 加入 AIA caIssuers 憑證鏈補全:HPDFFetchAIAIntermediates 經由呼叫端的傳輸層走訪 CMS 憑證集合中 access-method 1.3.6.1.5.5.7.48.2 的端點(裸 DER 與 PEM 主體都能解碼),FetchMissingIntermediates 驗證選項再把取回的中繼憑證餵給路徑建構,雲端簽署者只剩一張 end-entity 憑證的簽章因此能通過驗證,不再卡在路徑建構失敗
  • 加入單次呼叫即可啟用 LTV:PopulatePAdESLTVEvidence 走訪每個已載入簽章,線上抓取其中繼憑證與 OCSP/CRL 證據,寫入文件 DSS,新的 B-B 簽章文件直接升級為 B-LT,不必手拼證據陣列
  • 加入簽署時的 seed value 強制檢查:CheckLoadedSignatureSeedValue 讀取簽章欄位的 /SV 字典,依 ISO 32000-1 12.7.5.5 的 force-bit 語意,將候選的 SubFilter、DigestMethod、Reason 與 DocMDP 設定檔對照其約束,表單作者的約束在簽章落筆前就會被遵守

Version 2.737.0

Added

  • 透過 VerifySavedOutput 屬性加入嚴格儲存驗證:寫入後由全新的 reader 實例在關閉交叉參照修復的狀態下重新載入檔案,序列化損壞會當場在呼叫點拋出,而不是等到下一個消費端才浮現
  • ReproducibleOutput 擴及加密文件:AES-CBC 串流採用固定的 14*(1+i) IV 慣例,金鑰材料與 salt 以決定性方式衍生,正規文件 ID 會正規化易變的 Info 時間戳,回歸測試管線因此能得到逐位元組相同的加密儲存結果

Version 2.736.0

Added

  • 透過新的 HPDFResample 單元加入高品質重取樣與單色 dithering:可分離的 Catmull-Rom bicubic 與 Lanczos3 kernel 取代 GDI 拉伸語意,經 ImageDownsampleKernel 屬性用於影像縮小取樣;RenderOutputDither 在頁面合成後套用 Floyd-Steinberg 誤差擴散,列印預覽輸出在純黑白下仍保住照片細節

Version 2.735.2

Fixed

  • 修正 Flate 解壓縮串流從來源串流補充資料時傳出緩衝區變數的位址、而非緩衝區本身的問題,每一次讀取都在損壞記憶體、可能讓處理程序崩潰;載入壓縮文件、inflate 串流類別與壓縮/解壓縮串流輔助類全都受影響

Version 2.735.1

Fixed

  • 修正沒有資料來源的可成長 XFA 欄位在扁平化時塌縮成單行的問題:高度現在改為依範本自身宣告的文字測量——這正是此類欄位會顯示的內容;繫結到空資料的欄位仍會量成空高

Version 2.735.0

Added

  • Free Pascal 建置現在涵蓋整個函式庫:每個單元都能以 FPC 3.2.2 與 Lazarus 編譯,過去只有核心建立與載入路徑做得到
  • Free Pascal 下可匯入 XPS、EPUB 與 CBZ 容器,靠的是內建唯讀 ZIP 讀取器,可處理 ZIP64 尺寸、stored 與 deflated 條目、CRC 驗證,以及以與 Delphi 路徑相同密碼 callback 開啟的傳統加密條目
  • XFA 表單扁平化、FormCalc 計算引擎、widget 執行階段、文件檢視器元件、Type 1 字型處理器、HTML 匯入、簽章驗證與 job runner 都能在 Free Pascal 建置下編譯;扁平化已載入文件的 XFA packet 還需要 deflate codec,而這類建置並未連結它

Fixed

  • 修正 PNG 輔助單元的 64 位元位元組交換:它在 Win64 上回傳錯誤值,該單元因此整個被排除在建置之外

Added

  • 加入繪製時的缺字偵測:TrackUnresolvedGlyphs 屬性會記錄每個在作用中 Unicode 字面下會畫成 .notdef tofu 方塊的碼點,逐項觸發 OnUnresolvedGlyph 事件;未註冊 fallback 的純 GDI 文件則完全不受影響
  • 加入傳統 kern 表支援:RegisterUnicodeTTF 會擷取 Apple/GDI 時代的 kern 表,字型沒有 GPOS kern lookup 時,kerning 輸出會 fallback 到其 format-0 二元配對搜尋,讓內建 Arial 這類字型恢復經典的成對字距
  • 在段落排版內加入逐 run 的字型 fallback:WideTextOutBox 現在會在目前字型無法映射的碼點處切開每個折行後的行,並以解析出的 fallback 字型繪製每個 run;註冊 fallback 鏈之後,Latin、emoji 與 CJK 混排的段落不會再出現 tofu

Version 2.734.0

Added

  • 加入 RFC 3161 時間戳請求的底層支援:HPDFRFC3161BuildRequest 發出帶有新鮮正 INTEGER nonce、選用 policy OID 與 certReq 的 DER TimeStampReq,HPDFRFC3161ParseResponse 解碼 PKIStatusInfo 表頭並取出 token,TSA 傳輸 callback 從此三行搞定,不必再鑽研 DER
  • 加入 ISO/TS 32002 開發者擴充宣告(THotPDF.EnsureISO32002Extensions),涵蓋 PDF 2.0 文件中的 EdDSA 簽章演算法與新增的 ECDSA 曲線,如同 32001 的 SHA-3 宣告一樣具備冪等性與版本門檻

Version 2.733.0

Added

  • 加入可攜的 X25519 與 X448 Montgomery ladder 金鑰協議,加上使用 CIOS Montgomery 乘法的 P-256 / P-521 NIST 曲線 ECDH,金鑰協議(KARI)公鑰 recipient 可完全在處理程序內建立與解封;RFC 7748 與 OpenSSL 產生的參考向量把 ladder 行為鎖進回歸測試套件
  • 加入 HPDFUnwrapKeyAgreementRecipientEnvelope,連同 AddPubSecAgreementKeyMaterial 與 AddPubKeyAgreementRecipientWithSecret 進入點,以 ECDH / X25519 / X448 recipient 加密的文件,只要持有 recipient 私密純量即可開啟與加密,不必借助外部 ECDH 工具

Version 2.732.0

Changed

  • 儲存現在讓序列化器輸出改走 1 MiB 緩衝區寫入串流,把物件標頭、字典鍵與 xref 列的逐 token Write 呼叫,在檔案類目的地上合併為批次推送
  • 交叉參照串流承載在 FlateDecode 前先套用 PNG Up 預測(/DecodeParms /Predictor 12),並透過 /Index 子區段收攏 free-list 空洞,讓每份 PDF 1.5+ 文件與稀疏物件範圍的 xref 容器都更小
  • CompressionLevel 屬性現在也會決定交叉參照串流與物件串流容器的 Flate 努力程度,clMaximum 在儲存時產生更小的結構串流

Fixed

  • 交叉參照串流的 /W 欄位寬度現在會適應實際偏移範圍,不再使用固定的 [1 4 2] 佈局——後者的 Cardinal 轉型會把超過 4 GiB 的偏移無聲截斷,產出損壞的結果

Version 2.731.0

Changed

  • 以連通元件字符擷取重建內建範本比對 OCR:對照快取的多字型範本做灰階覆蓋評分、帶區域視窗 fallback 的 Otsu 二值化、雙峰間隙斷詞、逐詞基準線、雜斑噪點排除,以及擴充到 62 字元的字母集,透過行層級高度聚類與大小寫情境偏好,辨識混合大小寫的 ASCII 文字

Version 2.730.0

Added

  • 加入 Free Pascal 3.2.2 與 Lazarus 4.6 的 Win64 支援,包含 runtime package、可重現建置腳本、相容層與非 GUI 的建立後重新載入 smoke test;原生靜態 codec 整合仍僅限 Delphi,在 Free Pascal 建置下會回報明確的 unsupported-operation 錯誤

Version 2.729.0

Added

  • 加入與宿主無關的動態 XFA widget 執行階段,具備 Unicode 編輯、焦點與命中測試、實例感知繫結、原子性驗證與計算、有界 reflow,以及保留來源 XFA 的唯讀已載入文件工廠

Version 2.728.0

Fixed

  • 修正 XFA 固有測量與文字接續:保留明確空值與計算值、使用各欄位或重複列各自的繫結 context、保留 breakAfter 動作、避免合成名稱衝突,並強制執行快取的全域測量預算

Version 2.727.0

Changed

  • XFA 排版現在會套用固有的最小與最大尺寸、從繫結文字測量可成長欄位,並以唯讀接續欄位與有界的文字、片段與測量預算,把符合條件的 textEdit 內容原子性地拆分到各內容區與頁面之間

Version 2.726.0

Added

  • 加入完整的 NChannel process 與 spot 屬性、混色 hint、有界的 PDF 2.0 CxF/X-4 光譜油墨串流,以及針對 spot tint 定義與外部 output intent 著色劑表的文件層級一致性檢查

Version 2.725.0

Added

  • 加入執行緒安全且結果確定的 SIMD 掃描線渲染後端:先對受支援的矩形 display list 做 preflight,以向量區塊直接寫出最終點陣表面、不經中間點陣複製,並透過既有的軟體 fallback 與遙測管線回傳每個請求精確的拒絕原因

Version 2.724.0

Changed

  • 擴充有界的原生 FormCalc 求值器,支援一般 SOM node-set 彙總、純量與 node-set 混合參數、巢狀數值與字串呼叫,以及確定性的選取、字串、三角、對數與轉換函式,全部都在既有的運算、陣列、深度、時間與輸出預算內

Version 2.723.0

Changed

  • SubsetLoadedFonts 現在能安全子集化內嵌的 Type 1 PFB 與拆分的二進位、十六進位 PFA 程式,保留遞迴的 TrueType 複合字形依賴,並在保留色彩、點陣、變數與塑形表格的同時封閉 COLR v0/v1 的輪廓依賴

Version 2.722.0

Added

  • 為傳統 ZIP 加密的 XPS、EPUB 與 CBZ 條目加入有界的密碼 callback,包含每條目重試上限、取消檢查、僅存於記憶體的憑證處理,以及對不可用、無效或不支援加密的 fail-closed 拒絕

Version 2.721.0

Changed

  • DownsampleLoadedImages 現在直接在元件空間縮放受支援的 8 位元 Separation 與 DeviceN 影像取樣,並在儲存與重新載入之間保留原始色彩空間圖、tint transform、著色劑、/Decode 範圍與疊印語意

Version 2.720.0

Added

  • 加入有界的內建辨識多載,涵蓋高對比大寫 ASCII OCR、水平 Code 39 與乾淨軸向對齊的 QR version 1 byte 模式符號,不需要呼叫端提供引擎即可產生可搜尋文字層並解碼已載入頁面的條碼;歧義或不支援的輸入則以 fail-closed 方式拒絕

Version 2.719.0

Added

  • 透過 THPDFJpeg2000Decoder.LoadProgressiveFromByteArray 加入依解析度與品質層的有界 JPEG 2000 精修,並透過 TJpeg2000Bitmap.QualityLayers 支援多層編碼,LRCP、RLCP、RPCL、PCRL 與 CPRL 掃描順序的最終像素完全一致

Version 2.718.0

Changed

  • 內嵌完整的 UniJIS、UniGB、UniCNS 與 UniKS 的 UCS2 與 UTF16 水平與垂直 CMap,包含輔助平面碼點與標準垂直預設值,CJK 文字擷取與幾何計算不再依賴外部 Unicode 映射檔或半 em 的猜測

Version 2.717.0

Added

  • 加入明確的 linearized 共用物件依賴範圍與範圍抵達重繪排程器,頁面可以在所有選用依賴抵達前先繪製,並在新資料確實改變結果時精準重繪

Version 2.716.0

Added

  • 針對可處理的 xref、trailer、catalog、頁面樹與名稱樹 preflight 發現項目,加入有界的物件圖修復:交易提交前先驗證,遇到不安全或歧義的輸入則完整 rollback

Version 2.715.0

Added

  • 加入 PDF 2.0 encrypted payload 包裹:驗證前文件的可見內容仍可讀取,而內嵌檔案的名稱、描述與位元組持續受保護,直到明確以密碼解鎖

Version 2.714.0

Changed

  • 已載入頁面的 SVG 匯出現在會發出軸向與放射狀漸層、Type 4 到 Type 7 mesh shading 的有界 PNG 表示,以及已解碼的內嵌影像,且不會再遞增對應的跳過計數器

Version 2.713.0

Changed

  • OpenType SVG 彩色字符現在改用有界的 Form XObject 管線處理弧線、向量漸層、不透明度、幾何遮罩與本機 #id 重用,同樣持續拒絕 script、外部資源、影像與不支援的主動式內容

Version 2.712.0

Changed

  • ReplaceLoadedPageText 現在能透過字符來源 span,取代跨越 TJ 字串項與陣列的比對結果,同時保留 kerning 數值、未命中的前後綴、不相關運算元與原始內容串流結構

Version 2.711.0

Added

  • 加入 CFF FontSet SyntheticBase 解析,繼承 Top 與 Private DICT 值、CharStrings、charset、Encoding 與 Local Subrs,具備確定性的覆寫語意,並以有界方式拒絕無效、循環或過深的繼承

Version 2.710.0

Added

  • 透過 HPDFSelectFlatePredictor 加入確定性的有界 Flate predictor 選擇,使用分散式列取樣、估計位元組成本、可設定的 CPU 權重,以及明確的位元組、列與工作量預算

Version 2.709.0

Added

  • 透過 THPDFJBIG2Options.UseHuffmanEncoding 加入選用的原生 JBIG2 Huffman symbol 字典與文字區域輸出,包含標準 DH、DW、BMSIZE、FS、DS 與 DT 表、原始集體點陣、symbol-ID 表、確定性的原生路由與像素級精確的解碼器往返,同時保留 arithmetic 與 MMR 預設值

Version 2.708.0

Changed

  • 依註冊字型世代快取阿拉伯文與合成的 presentation form 反向 cmap 映射,取代 ApplyArabicGSUBRefinement、ApplyArabicGSUBContextualRefinement 與一般情境 GSUB 路徑中重複的 U+FB00..U+FDFF 與 U+FE70..U+FEFF 掃描,同時保留碼點優先順序與塑形輸出

Version 2.707.0

Added

  • 透過 THPDFPage.DrawAztec 與獨立的 THPDFAztec 單元加入 Aztec 2D 條碼編碼器(ISO/IEC 24778):以動態規劃做高階編碼,處理模式鎖定、shift 與二進位 shift 連續段、位元填充、GF(16) 到 GF(4096) 的 Reed-Solomon 錯誤校正、自動選擇 compact 15x15..27x27 或 full 19x19..143x143 符號,並可為固定符號尺寸強制指定層數
  • 加入直式頁面文字組裝:THotPDF.ExtractLoadedPageText 與範圍/串流彙總 API 現在會把 WMode 1 的字符依原點 X 聚集成欄,欄序由右至左,欄內由上至下走訪,不再把直式 CJK 文字切碎成逐字符的行

Fixed

  • 修正平行 band 匯出在像素尺寸含小數的頁面(96 DPI 的 A4)上因 PNG band 寬度不符而失敗的問題:點陣尺寸現在與 band 寫入器一致地以 Ceil 取整,交付的 tile 永遠符合編碼器寬度

Version 2.706.0

Added

  • 透過 THotPDF.SaveLoadedPageToPng、SaveLoadedPageToPngStream、SaveLoadedPagesToTiffBanded 與 SaveLoadedPagesToTiffStreamBanded 加入串流式已載入頁面 PNG 匯出與分帶多頁 TIFF 匯出,經由 band 編碼器逐列寫入壓縮影像資料,超大頁面不再需要完整的 framebuffer;THPDFBandImageExportInfo 會回報頁面、band、列、worker、記憶體、輸出、計時與取消遙測

Version 2.705.0

Added

  • 為已載入儲存路徑加入 PDF/A 收尾:THotPDF.SaveLoadedDocument 與 SaveLoadedDocumentToStream 現在會驗證 GTS_PDFA1 OutputIntent(繼承自來源 catalog 或新註冊),並在設定 PDFACompliance 時發出 pdfaid:part / pdfaid:conformance XMP 識別;重新儲存時既有的 pdfaid packet 逐位元組保留
  • 載入端加入直式書寫(WMode 1)的消費:CIDFont 的 /W2 與 /DW2 儲存度量現在會驅動文字擷取與頁面渲染,以 v1x/v1y 定位向量沿文字空間 y 軸逐欄走訪,不再使用水平 /W 前進量

Version 2.704.0

Added

  • 透過 THotPDF.RenderLoadedPageTilesParallel 與 THotPDF.RenderLoadedPageBandsParallel 加入平行的已載入頁面 tile 與 band 渲染,提供列主序的呼叫端執行緒 callback、借用點陣圖、合作式取消、呼叫端控制的在途記憶體、峰值記憶體准入,以及跨隔離渲染 context 共用的有界不可變 Type 3 字符與半色調網屏快取

Version 2.703.0

Added

  • 透過 THPDFCSCSignatureProvider.SignHashBatch 加入有界的 CSC multisign 摘要批次:為有序的同演算法批次使用一個綁定 hash 的 SAD 與一次 signatures/signHash 請求,同時強制本機與憑證的 multisign 上限、嚴格的回應基數、同步或非同步結果排序、SHA-256 內容定址的冪等鍵,以及已完成批次的重播

Version 2.702.0

Added

  • 擴充 THotPDF.RenewPAdESLTATimestamp,接受呼叫端提供的憑證、OCSP 與 CRL 證據,在新的 RFC 3161 文件時間戳之前併入既有 DSS,逐位元組保留每個較早修訂,並在連續續期之間對驗證串流精確去重

Version 2.701.0

Added

  • 透過 THotPDF.PreflightLoadedPAdES 加入可依條款定位的 PAdES baseline 與延伸設定檔 preflight,以穩定的規則 ID、設定檔、規範層級、標準條款、PDF 路徑、物件編號、簽署或目前修訂與通過狀態回報每一項適用要求,同時驗證 CMS 基數、簽署者憑證 ESS 參照、簽章字典約束、byte range 涵蓋、可信時間、DSS 證據與文件時間戳涵蓋

Version 2.700.0

Added

  • 加入端對端的 ECDSA、Ed25519 與 Ed448 PFX / PKCS#12 私鑰載入與 CMS 文件簽署,包含具名曲線 CNG ECDSA、選用的 OpenSSL 3 PureEdDSA、RFC 8410 金鑰解碼、RFC 8419 摘要與參數規則、Ed448 用的 512 位元輸出 SHAKE256、自動金鑰演算法選擇,以及嚴格的憑證對金鑰配對

Version 2.699.0

Added

  • 透過 HPDFEnumeratePFXIdentities、HPDFParsePFXByLocalKeyID 與 THPDFCMSSignOptions.PFXLocalKeyID 加入確定性的多身分 PFX / PKCS#12 憑證選擇,包含嚴格的單值 localKeyId 與 friendlyName bag 屬性、公鑰配對、遞迴 safe-content bag、有界的歧義與循環診斷,以及自動嵌入配對的中繼與根憑證鏈並對 DER 精確去重

Version 2.698.0

Added

  • 擴充處理程序內的 PFX / PKCS#12 PBES2 解密,新增 AES-128-CBC 與 AES-192-CBC,以及 PBKDF2 的 HMAC-SHA-384 與 HMAC-SHA-512 PRF,包含各 cipher 選用的 keyLength 驗證與有界的 salt、迭代、IV 與 padding 檢查,同時保留 AES-256-CBC 與 HMAC-SHA-1 / SHA-256 相容性

Version 2.697.0

Added

  • 加入符合規格的 XPS 與 OpenXPS Canvas FixedPage.NavigateUri 繼承,讓後代 Path、Glyphs 與巢狀 Canvas visual 在未自行覆寫時接收該範圍 URI;穿越變換、巢狀裁剪、隔離不透明度群組與可重複使用 visual 抑制時,外部、mail、套件頁面與百分比解碼的 LinkTarget 動作都能保留,支援巢狀覆寫後的還原,並維持既有的連結、URI、取消與不安全 scheme 上限

Version 2.696.0

Added

  • 加入有界的原生 XPS 與 OpenXPS Canvas 透明度群組,讓 Opacity 與純色、漸層或影像的 Canvas.OpacityMask 值,透過隔離的 DeviceRGB Form XObject 對重疊的子 visual 只合成一次,包含摺疊的統一 alpha、共用可變 alpha soft mask、巢狀群組、變換後的裁剪、資源轉移、保留連結,以及對格式錯誤、不支援、奇異或過大內容的 fail-closed 檢查

Version 2.695.0

Added

  • 加入有界的原生 XPS 與 OpenXPS Canvas.Clip 轉換,支援縮寫幾何、本機或遠端 StaticResource 的 PathGeometry 值、直接 property element、結構化的直線、Bézier、二次曲線與弧線圖形、幾何變換、空裁剪,以及經由 PDF W* 或 W 的巢狀 EvenOdd 或 NonZero 裁剪,附裁剪後的巡覽範圍、100,000 個數值的解析上限,以及對格式錯誤或奇異變換的 fail-closed 檢查

Version 2.694.0

Added

  • 加入有界的原生 XPS 與 OpenXPS 巡覽,處理經變換的 Path 與 Glyphs visual:HTTP、HTTPS 與 mail 連結保留為 PDF URI annotation,並在所有頁面就緒後,把套件相對頁面與百分比解碼的 LinkTarget 片段解析為前向或後向的 PDF GoTo 動作,附度量感知的點擊範圍、65,536 個連結與 8,192 字元上限、VisualBrush 擷取抑制、取消機制,以及對不安全 scheme 的 fail-closed 診斷

Version 2.693.0

Added

  • 加入有界的原生 XPS 與 OpenXPS VisualBrush 轉換,支援內嵌或資源式 Canvas、Path 與 Glyphs visual、階層式與遠端 ResourceDictionary 查找、絕對 Viewbox、絕對或相對 Viewport、None、Tile 與翻轉平鋪模式、變換、不透明度、可重複使用的 Form XObject、共用 tiling pattern、token 感知的資源轉移,以及對循環、格式錯誤輸入、遞迴、內容、快取與放置預算的 fail-closed 檢查

Version 2.692.0

Added

  • 加入原生 XPS 與 OpenXPS 套件字型內嵌,涵蓋 TrueType 與 OpenType 程式、TTC 成員片段、GUID 混淆的資源、直接或由 cmap 推導的 glyph ID、一對多 Unicode 叢集、明確的前進量與偏移、寬度正確的 RTL 原點、共用字型資源、內嵌與禁止子集化權限、選用的字形子集化、有界的 ToUnicode 映射,以及均攤線性的定位文字輸出,全程不靠 GDI 字面替換

Version 2.691.0

Added

  • 加入有界的 OpenXPS Glyphs Indices 排版:嚴格依叢集 code unit 與字符數處理、明確的百分之一 em 前進量、水平與垂直偏移、奇數 BidiLevel 的反向推進、純色屬性或 property element 填滿、不透明度、原生 PDF TJ 批次、定位式 Unicode 叢集 fallback、保留文字擷取、fail-closed 的格式錯誤輸入診斷,以及上限 65,536 筆映射的均攤線性緩衝區

Version 2.690.0

Added

  • 加入 OpenXPS Path.OpacityMask 支援:以摺疊的統一 alpha、有界的原生 DeviceGray 透明度群組、共用的 shading pattern 與影像 soft-mask 串流、fail-closed 的不支援內容處理,以及可重複使用、可繫結 alpha 影像資源的 RegisterLuminositySoftMaskState 建構器,涵蓋純色、可變 alpha 多色標線性與橢圓放射漸層,以及一般、平鋪或翻轉的 PNG ImageBrush 遮罩

Version 2.689.0

Added

  • 透過原生 PDF tiling pattern 加入 OpenXPS ImageBrush 的 Tile、FlipX、FlipY 與 FlipXY 模式,提供一到四個各自獨立裁剪的放置、共用的影像與 PNG soft-mask 資源、合成後的 fixed page、path 與筆刷矩陣,以及可重複使用影像圖樣的有界 RegisterImageTilingPattern API

Version 2.688.0

Added

  • 加入 OpenXPS ImageBrush.Transform 支援:接受有限的六參數屬性矩陣與 MatrixTransform property element,串接在原生 Path 裁剪之後、viewport 裁剪與影像放置之前,讓筆刷可以旋轉、縮放、傾斜或平移而不改變所屬的向量幾何;非標準的 RelativeTransform 與無法解析的矩陣資源仍會給出明確診斷

Version 2.687.0

Added

  • 透過 THPDFPage.ShowImageMatrix 加入矩陣控制的影像 XObject 放置,並擴充 XPS fixed page 匯入:支援套件內 JPEG、PNG、TIFF 與 JPEG XR 的 ImageBrush 填滿、絕對或相對邊界的 Viewbox 與 Viewport 映射、原生 path 與單一 viewport 裁剪、影像與 path 不透明度、PNG soft-mask alpha、感知 DPI 的 96-DPI 尺寸、共用的已解碼資源快取,以及對不支援 tiling、變換、色彩轉換與影像筆畫的 fail-safe 診斷

Version 2.686.0

Changed

  • 加入可重複使用的有界多色標放射狀漸層註冊,並擴充原生向量 XPS path 匯入:支援 property element 形式的橢圓 RadialGradientBrush 值、Pad 擴散、一致的色標 alpha、筆刷不透明度、相對或絕對的中心點、起點與半徑映射、原生 PDF Type 3 shading,以及保持 path 幾何不變的座標還原

Version 2.685.0

Changed

  • 擴充有序的原生向量 XPS path 匯入:支援引號感知且有界的 property element 解析、純色與多色標線性漸層筆刷、原生 PDF shading pattern、筆刷與色標 alpha、預設相對邊界或明確絕對的漸層座標、超出範圍的色標內插,以及對不支援變換、擴散模式、色彩內插、可變 alpha 與退化軸的 fail-safe 診斷

Version 2.684.0

Changed

  • 加入有序的原生向量 XPS path 匯入:支援有界的縮寫幾何、填滿規則、純色 RGB 與 ARGB 填滿與筆畫、path 不透明度、線寬、六參數變換,以及對不支援繪圖功能的 fail-safe 診斷

Version 2.683.0

Changed

  • 強化實際繪製內容層級的 PDF/X-6 驗證:加入定義時的 shading pattern 圖形狀態、非描邊 pattern 的 ExtGState 語意、fail-closed 的 soft mask 子型別與背景檢查、精確的 Type 3 字符度量與繼承色彩規則、嚴格的組合塗色 alpha 分類、有界的 JPX 色彩推斷,以及感知 appearance 的 annotation 合成

Version 2.682.0

Added

  • 為 brainpoolP256r1、brainpoolP384r1 與 brainpoolP512r1 的 ECDSA 簽章加入產生端與驗證端支援,包含各曲線對應的 SHA-2 與 SHA3 摘要矩陣、進入 provider 前先失敗的簽署驗證、嚴格的具名曲線憑證參數、無參數的 ECDSA 演算法識別碼、正規 DER 簽章值、Windows CNG 具名曲線匯入,以及對明確、尾隨、未知或不匹配參數的確定性診斷

Version 2.681.0

Changed

  • 透過 HPDFInterpretContentTokensDevice 與選用的完整 IHPDFContentOperatorDevice 擴充,統一非漸進式點陣圖、direct-DC、Form 與 display-list 內容執行:每個運算子一個取消檢查點、編譯期運算子索引快取讓 display-list 重播免掃描運算元、公開 OperatorCount 指標、保留語意裝置相容性、修正 "、v 與 y 運算子語意,並正確處理合法的 EI 終結符而不誤報 fallback 診斷

Version 2.680.0

Added

  • 加入有界且交易式的 RepairPDFA4 多載:附型別化選項、詳細修復報告、共用的發現項目來源、安全的 PDF 2.0 標頭、trailer ID、中繼資料、Catalog 與呈現正規化、命名空間感知的 PDF/A 識別修復、可設定的部分或完全符合提交政策、錯誤回歸偵測、位元組精確的物件圖與 XMP rollback,並有嚴格邊界——頁面內容、字型、色彩、透明度、影像、圖形運算子與擷取文字一律保留不動

Version 2.679.0

Added

  • 加入實際繪製內容層級的 PDF/X-6 驗證:可選用 ISO 15930-9:2020 或 2025 勘誤版規則,包含實際 ICC 標頭與 channel 檢查、資源感知地走訪內容陣列、Form XObject、tiling 與 shading pattern、影像、Type 3 字符、soft mask 與 annotation appearance、疊印模式與組合塗色透明度診斷、穩定的規則來源,以及解碼位元組、token、物件、問題、遞迴與圖形狀態的有界工作量

Version 2.678.0

Added

  • 深化有界的 PDF/A-4 驗證:加入快取的 ICC 標頭與元件檢查、文件與頁面 output intent 一致性、跨內容陣列、巢狀 Form XObject、影像、影像遮罩、shading 與 annotation appearance 的實際繪製裝置色彩與透明度分析、繼承的圖形狀態、渲染字型內嵌、CIDFont 與 CMap 關係、嚴格的 annotation 旗標與 appearance 狀態、UTF-8 XMP packet 與命名空間驗證、邏輯頁面樹位置、穩定的條款感知診斷,以及可設定的解碼位元組與內容 token 上限

Version 2.677.0

Added

  • 補齊有界的 PDF/UA-2 文件、人類可讀字串、optional content、annotation、AcroForm、structure destination、outline、內嵌檔案與巢狀頁面標籤驗證,包含實體 ParentTree 歸屬、純量結構子節點、appearance stream 限制、以命名空間 URI 為基礎的 XMP 屬性、Unicode 私用區偵測與條款感知診斷;結構化 HTML、XHTML、XML 與 JSON 匯出現在共用同一套 tagged 優先的無障礙閱讀模型,涵蓋語言、標題、導覽、頁面標籤、安全連結、annotation、非敏感表單控制項、marked-content 取代、artifact、影像替代文字、幾何 fallback、獨立限制、取消機制與原子性發佈

Version 2.676.0

Added

  • 透過 PlanProgressiveLinearizedPageRanges 為 linearized PDF 的每一頁加入有界的最小 byte range 規劃:支援 raw 與 Flate 的主要或溢出 hint 解碼、可互通的位元組對齊 combined 與 Annex F 連續拆分 hint 佈局、精確的 bootstrap、頁面、shared-group 與 LF 或 CRLF 前置的傳統或串流交叉參照依賴、合法的 short-read 累加、預設 256 MiB 的規劃器記憶體上限(編碼歧義時 fail-closed)、感知重疊的合併、嚴格的結構交叉檢查、型別化限制與可用性診斷,以及統一的 [0, /E) 首頁路徑

Version 2.675.0

Added

  • 透過 ConfigureCryptFilterDefaults 與 SetStreamCryptFilter,為字串、一般串流與內嵌檔案加入各自獨立、符合標準的 crypt filter 政策:包含密碼與公鑰保留篩選器、/Identity、寫入端正確的密碼安全 /EFF 與前置 /Crypt 管線、公鑰串流專屬 recipient 邊界的 fail-closed 檢查、區分大小寫的外部具名篩選器載入與檢視、/CFM /None、V2 金鑰長度回報、混合政策時的 Direct File fallback、物件串流容器與成員字串的政策拆分,以及保留政策的加密增量更新

Version 2.674.0

Added

  • 透過密碼感知的 BeginIncrementalUpdate 多載與指派的 recipient 金鑰材料,加入保留憑證的 Standard 與公鑰加密增量更新:安全保留檔案金鑰或 FEK,字串、串流、中繼資料與 Identity crypt filter 各自獨立政策,感知世代號的舊式物件金鑰衍生,精確繼承 /Encrypt 參照,來源修訂逐位元組不變,維持原本的 user、owner 或 recipient 存取權,並以 fail-closed 拒絕加密變更或不支援的異質篩選器

Version 2.673.0

Security

  • 在全頁、區域、原生或外部解碼之前,以及共用全域字典之前,加入有界的 JBIG2 segment 圖驗證:包含索引式的重複與缺漏參照檢查、迭代式循環與依賴深度偵測、內嵌串流的頁面關聯強制、禁用 segment 拒絕、長參照與彙總邊預算、symbol 字典配置防護,以及精確的失敗遙測

Version 2.672.0

Added

  • 加入 PAdES E-EPES signature-policy-identifier 產生與嚴格驗證:支援明確的政策 OID、已知或 ETSI 未知 hash、SPuri、SPUserNotice 與 SPDocSpecification 限定詞、有界的 Unicode 與集合解析、政策文件 hash、在密碼學運算前先固定主要簽署者的 OID 與 hash、專屬的不相符狀態,以及完整的 JSON 報告

Version 2.671.0

Added

  • 透過 HPDFCMSBuildMultiSignedData 與 HPDFCMSMergeSignedData 加入確定性的 RFC 5652 容器,最多支援 256 個獨立的主要 SignerInfo 記錄:包含在產生簽署者副作用前先做整批預驗證、每個簽署者各自的屬性、演算法、憑證與 provider、嚴格的 definite-length 容器驗證、DER 排序去重的集合、獨立的驗證結果、單簽署者位元組相容性,以及無副作用的彙總 placeholder 大小估算

Version 2.670.0

Added

  • 透過 THPDFCMSSignOptions.SignerIdentifier 加入選用的 RFC 5652 SubjectKeyIdentifier 簽署者身分:包含精簡的 IMPLICIT SID 編碼、自動 SignerInfo 與 SignedData 版本選擇、嚴格的 X.509 擴充擷取、provider 與 placeholder 大小估算支援,以及驗證時對 SID、憑證與版本比對的 fail-closed 檢查

Version 2.669.0

Security

  • 加入跨 SignedData.digestAlgorithms、SignerInfo、簽章機制參數與 RFC 6211 CMSAlgorithmProtection 的 fail-fast CMS 摘要演算法一致性診斷,提供專屬驗證狀態、驗證失敗碼、時間戳傳播、詳細問題原因與 JSON 輸出

Version 2.668.0

Added

  • 加入 SHA3-256、SHA3-384 與 SHA3-512 的產生與驗證,涵蓋 detached CMS、RSA PKCS#1 v1.5、RSA-PSS、ECDSA provider 合約、RFC 3161 內容與簽章時間戳、PAdES-LTA 續期、Seed Value 字典與 ISO 32001 PDF 2.0 開發者擴充宣告,並與對應的 PDF MAC 政策共用有界的單趟 byte range hashing

Version 2.667.0

Added

  • 加入 THotPDF.ValidatePDFMACChain:由最舊到最新驗證增量修訂、累加式索引 classic 與 xref-stream、精確定位修訂與 xref 失敗位置、偵測歷史 MAC 遭取代、穩定強制 KDFSalt、拒絕摘要強度降級、驗證經認證的 /P 與 /Perms、提供 preflight 報告與有界修訂解析,且不需要暫存 PDF 副本

Version 2.666.0

Added

  • 加入 THotPDF.SignPDFWithPFXAndAttachedPDFMAC 與簽章附加驗證:支援直接作用中 trailer 的 AuthCode、間接 SigObjRef、完整的簽署修訂涵蓋、原始簽章值摘要綁定、SHA-2 或 SHA-3 PDF MAC 政策、單趟簽署與 MAC 範圍 hashing、preflight 報告與原子性輸出取代

Version 2.665.0

Fixed

  • 修正 THotPDF.RegisterNChannelColorSpace:改為發出 ISO 32000-2 的五元素 DeviceN 形式,附 /Subtype /NChannel 與 process 元件中繼資料,最低 PDF 版本提高至 1.6,並讓 luminosity soft mask 透過其 alternate space 解析 NChannel 塗色,同時保留對舊式 /NChannel family token 的讀取相容性

Version 2.664.0

Added

  • 補齊 PDF 混合模式渲染:為 Hue、Saturation、Color 與 Luminosity 加入整數熱路徑實作,並修正完全不透明的快速路徑,讓每個生效的可分離或不可分離混合模式都與背景正確合成

Version 2.663.0

Security

  • 在暴露加密 safe 內容前先驗證 PKCS#12 容器:檢查選用的外層 MacData,包含有界的 PKCS#12 KDF 迭代次數、SHA-1 或 SHA-256 HMAC、常數時間摘要比對,以及密碼錯誤與遭竄改時的 fail-closed 處理

Version 2.662.0

Added

  • 加入三個 HotPDFCLI 命令:render 透過已載入頁面點陣管線把每個選定頁面點陣化為 <prefix>-page<N>.png(--pages 範圍、--dpi 10..2400、預設 150);tables 透過 ExportLoadedTypedTables 把型別化表格擷取為 CSV 或 JSON(--json、-o 檔案或主控台);compare 透過 HPDFDocCompareDocuments 印出兩份文件的 JSON 比較報告(--mode 0..5,涵蓋頁數、頁面文字、物件數、渲染影像、完整與結構比對)

Fixed

  • 修正 Win64 ICC 轉換管線的 8 位元批次轉換(TransformBytes)輸出全零的問題:Win64 lcms2 物件內的最佳化 1D-LUT 快速路徑會回傳零,而通用重取樣管線是正確的,因此 8 位元轉換現在只在 Win64 上以 cmsFLAGS_NOOPTIMIZE 建置;16 位元單色路徑與所有 Win32 轉換保留最佳化快速路徑(批次 sRGB 原色現在在兩個平台上都能正確往返)

Version 2.661.0

Added

  • 在既有四策略 zlib 基線之後,加入真正的預算制 Zopfli 高壓縮率 Flate 壓縮:具備嚴格的不增長即選用機制、輸入、迭代、區塊、輸出與耗時上限、詳細的串流與平行影像遙測,以及確定性的固定語料節省門檻

Version 2.660.0

Added

  • 加入確定性的 XML 機器可讀 preflight 報告,以及 ABI 版本化的受信任外掛,用於功能擷取與自訂驗證規則:具備穩定排序、policy bundle 整合、取消傳播、fail-closed 能力檢查,以及外掛、發現項目、功能、字串、輸出與耗時的有限預算

Version 2.659.0

Added

  • 擴充有界的 XFA FormCalc,支援條件邏輯、重複數值彙總與經驗證的動態實例 callback,並加入預設關閉的沙箱化 QuickJS 表單腳本:具備完整控制流程、原生型別陣列、隔離的資料存取,以及指令、時間、記憶體、堆疊、數值與實例操作的有限預算,附執行遙測

Version 2.658.0

Added

  • 加入有界且可編輯的 XFA packet DOM,支援完整 XDP 串流與有序 packet 陣列:提供 local-name 路徑查詢、packet 與節點修改、未觸及位元組的精確保留、逐 packet 選擇性改寫、確定性的命名空間與屬性輸出、安全的 CDATA 切分、實體跳脫,以及輸入、輸出、packet、節點、深度、屬性、文字與查詢的有限預算

Version 2.657.0

Added

  • 透過既有的 CMS provider 管線加入 CSC API v2 遠端簽署:傳輸層由應用程式自管,涵蓋 OAuth token 更新、有界的憑證鏈探索、明確的授權與 SAD 處理、同步或非同步的摘要簽署、RSA-PSS 參數、輪詢、RFC 3161 時間戳、取消機制、穩定的冪等鍵,以及有限的已完成操作快取

Version 2.656.0

Added

  • 加入依內容評分擇優的選用 XPS、EPUB 與 CBZ 文件處理器:支援可替換的執行緒安全註冊、單次驗證的壓縮檔掃描、固定頁面、書脊與自然影像排序、不可變的 PDF 轉換快取、共用的壓縮檔、資源、reflow、頁面、像素、DPI、輸出與取消預算,以及可安全 rollback 的 PDF 發佈

Version 2.655.0

Added

  • 加入有界的型別化表格擷取與原子性 CSV 或 JSON 匯出:具備標準欄位、同頁片段與跨連續頁合併、合併儲存格範圍、重複表頭、頁面幾何、信心度與來源資訊,並由 locale 決定整數、數值、布林、日期、日期時間、貨幣與百分比的推斷

Version 2.654.0

Added

  • 加入已載入頁面的原子性結構化匯出,可輸出至 HTML、XHTML、XML 與 JSON:採用單一閱讀順序模型,涵蓋區塊、帶樣式的 span、偵測到的表格、座標、來源順序、可選的有界 PNG 影像、Unicode 安全跳脫、取消機制與有限的資源預算

Version 2.653.0

Added

  • 加入已載入頁面的原子性色彩改寫,可轉換至 DeviceGray、DeviceRGB 或 DeviceCMYK:保留可搜尋的向量內容,為影像與複雜資源提供無損的色彩管理點陣轉換,輸出不受旋轉影響,具備明確的渲染保真度與資源預算,並為特別色版提供保留、處理轉換或拒絕三種政策

Version 2.652.0

Added

  • 加入審閱優先的已載入頁面塗銷偵測:具 checksum 感知能力的 PII 比對樣式、可插拔的實體與人臉偵測器、附信賴分數的頁面座標空間發現結果、有界的工作遙測、必填的審閱者身分、原子性的已核准註解暫存,以及獨立且明確的 burn-in 邊界

Version 2.651.0

Added

  • 加入有界的已載入頁面與區域條碼解碼:引擎可插拔、漸進式低解析度渲染、fallback 的四分之一轉掃描、經驗證的文字與原始 payload、PDF 座標空間邊界與朝向、信賴度過濾、重疊去重、取消機制與資源遙測

Version 2.650.0

Added

  • 加入有界、可取消、可搜尋的 OCR 文字層:辨識引擎可插拔、信賴度與幾何驗證、與旋轉對齊的隱形 Unicode 文字、可選內容分組、資源遙測,以及原子性的多頁一次發布

Version 2.649.0

Added

  • 加入透過帶版本標記 JSON 的完整物件圖往返:串流式快照與漸增匯出、原始或解碼的內嵌與原子性 sidecar payload、有界且相容 schema 的匯入、結構與串流長度驗證,以及交易式發布

Version 2.648.0

Added

  • 加入對手工編輯 QDF 診斷文件的有界修復:保留物件與串流位元組,修正直接、間接、缺失或過期的串流長度,重建傳統交叉參照偏移與 trailer,拒絕不安全的結構,並經一般載入器驗證輸出

Version 2.647.0

Added

  • 加入執行緒安全的自訂串流過濾器登錄:有界的 push/pull 合約、共用的解碼預算、合作式取消、明確的 seek 需求、隔離的自訂失敗與執行遙測

Version 2.646.0

Added

  • 加入有界的內容運算子 visitor 與事件 API:唯讀 operand 視圖、確定性的狀態 callback、inspect、measure、replace、delete、stop 與 reject 動作、合作式取消、經驗證的輸出,以及原子性的已載入頁面更新

Version 2.645.0

Added

  • 加入可插拔的已載入頁面渲染後端合約:含編譯後顯示清單的存取、原生 GDI 實作、執行緒安全的平行派發、確定性的 fallback 政策、快取失效處理與執行遙測

Version 2.644.0

Added

  • 加入有界的版面重疊偵測、元素路徑、可選的來源對應、原生向量溢出與重疊疊加層、即時診斷 callback 與工作統計

Version 2.643.0

Added

  • 加入有界的原生向量圖表:折線、長條、面積、圓餅與散佈系列,座標軸可自動或手動,附主題、圖例、標籤、PDF/UA Figure 替代文字與渲染統計

Version 2.642.0

Added

  • 加入有界、GUI 執行緒的 RichEdit 與 RTF 分頁排版:以向量 EMF 輸出,支援影像與可選的受支援 OLE 展示,具備取消機制、串流位置保留,以及明確的輸入、字元、頁面與輸出預算

Version 2.641.0

Added

  • 加入有界的 SVG 2 匯入,轉成可重複使用的 PDF Form XObject:原生幾何與弧線、CSS cascade、向量漸層、裁剪與遮罩支援、Base 14 文字、透明度資源、具放置感知的連結註解與匯入統計

Version 2.640.0

Added

  • 加入帶版本標記的 HTML5 分頁媒體匯入設定檔:寬容的 DOM 解析、列印 CSS cascade、分頁的區塊與表格版面、可選的 AcroForm 控制項、有界且由 callback 驅動的資源,以及逐操作統計

Version 2.639.0

Changed

  • 大型本機檔案映射現在會在較大的循序視窗與最多 16 個較小的 MRU 隨機存取視窗之間調適設定的映射位元組上限,保留明確的固定幾何選項,並回報作用中的幾何、轉換過程、存取模式計數與峰值映射位元組

Version 2.638.0

Added

  • 加入有界、跨頁面的 JBIG2 符號訓練:外部與原生後端共用一個全域字典,完全重複的頁面直接重用,支援 PDF 影像批次直接插入、後端與尺寸遙測,在 100 頁迴歸語料上實測省下 78.8% 的壓縮空間

Version 2.637.0

Changed

  • 平行已載入頁面渲染現在會從處理程序層級的記憶體預算下調要求的 worker 數,保留每個已認領的頁面,透過 callback 遞送時維持順序輸出的保留狀態,取消或失敗時喚醒等待預算的 waiter,並回報並行度、保留、准許、延遲與等待遙測

Version 2.636.0

Changed

  • 已載入頁面的 prefetch 現在在快取鎖外編譯與渲染,透過 token 化與 playback 合作式取消,讓位給前景頁面渲染,並公開進度、失敗、搶佔與取消延遲遙測

Version 2.635.0

Added

  • 加入有序的串流式平行頁面渲染:callback 在呼叫執行緒上遞送,已完成點陣圖佇列有界,生產端具背壓,支援合作式取消與借出點陣圖的生命週期管理,並提供佇列、位元組、等待、完成與遞送遙測

Version 2.634.0

Added

  • 加入兩階段的平行已載入頁面 pipeline:在渲染快取鎖外編譯顯示清單,不必等整組頁面編譯完就開始 playback,動態平衡有界的 worker,保留輸入順序,減少內容 token 配置,並公開階段、快取、完成與延遲遙測

Version 2.633.0

Added

  • 加入不可變、具參照計數的已解碼點陣圖 handle:快取命中免複製,渲染器可直接以執行緒安全方式繪製,需要時才隔離出可變副本,生命週期不受快取驅逐影響,並附累計的 handle 與複製遙測

Version 2.632.0

Changed

  • QuickJS 執行現在在 Win32 與 Win64 上都能透過靜態物件與 ABI 中立的橋接 DLL 運作:值以 Unicode 安全方式傳遞、狀態回報具確定性、記憶體/堆疊/script/時間/中斷限制皆可設定、DLL 探索安全、script 被拒後可復原,並能重現跨平台 runtime 建置

Version 2.631.0

Changed

  • Factur-X 與 ZUGFeRD 業務規則驗證現在會執行完整的已審閱 XPath 2 Schematron 介面:外部程式碼資料庫、循序綁定、量詞、FLWOR 加總、穩定的 fallback 規則識別碼、安全且有界的 XML 解析、明確的求值錯誤發現、零靜默跳過,以及 fail-closed 的合併驗證

Version 2.630.0

Added

  • 加入內建 TrueType 可變字型 instancing:支援映射軸、共用與私有的 gvar tuple、IUP 插值、簡單與複合外框更新、phantom point 度量、HVAR、VVAR 與 MVAR 烘焙、緊湊的靜態字形重建、checksum 正確的輸出,以及免 callback 的 Unicode 字型註冊

Version 2.629.0

Added

  • 加入無副作用的 CMS 佔位符大小估算:可依明確指定、provider 或 RSA 憑證的簽章大小估算,靜態容器塑形精確,動態 payload 保留量取保守值,支援簽署前重建、受能力閘控的 provider 重試、嚴格的外部簽署者單次呼叫保證、有界的大小估算,以及詳盡的逐次嘗試診斷

Version 2.628.0

Added

  • 加入以可達性為依據的字型子集化,適用於已載入 PDF 的內嵌字型:涵蓋頁面內容、巢狀 Form XObject、註解外觀狀態與共用字型程式,支援 TrueType 與 CFF 格式、編碼大小選擇、穩定的 CID 與 ToUnicode 映射、詳盡結果,且文件帶簽章時預設拒絕

Version 2.627.0

Added

  • 為宣告式版面樹加入自動 PDF/UA 結構產生:涵蓋標題、清單、表格、圖形、語言與替代文字詮釋資料、分頁構件、可安全延續的 marked-content 參照、閱讀順序保留、語意驗證與結構統計

Version 2.626.0

Added

  • 加入宣告式文件 DOM:支援可繼承樣式、可重複使用的元件工廠、文字、spacer、堆疊、容器與 section、重複的頁首頁尾、帶重複表頭列的加權表格、有界的延續深度、分頁統計、免複製的文字與表格片段、線性的頂層走訪、即時頁面寫出,以及對齊的 Delphi 與 C++Builder API 介面

Version 2.625.0

Added

  • 加入可重複執行的 Win32 與 Win64 統計式效能關卡:隔離載入、儲存、渲染與文字擷取,記錄暖機與 30 個原始樣本的 p50、p95、樣本變異數、RSS、處理程序 I/O、環境資訊與確定性的測試 fixture 識別,再對照穩定的 JSON 門檻評估,迴歸時回傳失敗結束代碼

Version 2.624.0

Changed

  • 以不可變的來源 span、直接數值轉換、單趟巢狀容器與索引式字典插入,重寫簡單字典與陣列的解析,並公開具體化遙測;30,000 對的 Win32 fixture 五趟配置位元組減少 64.7%,經過時間從 3,656 ms 降到 46 ms

Version 2.623.0

Added

  • 加入可設定的解析器限制:單一 token 位元組數、token 總量、陣列或字典條目數與格式錯誤 token 皆可設限,外加嚴格的未信任輸入 preset、具型別的限制例外與每次載入的遙測;迴歸關卡能在 250 ms 內、37 MiB 處理程序峰值以下拒絕一個 2 MiB 的 token 與一百萬 token 的容器

Version 2.622.0

Added

  • 加入明確的已載入頁面物件圖釋放與遙測 API:捨棄乾淨的頁面自有根物件與渲染快取,同時保留間接共用資源與重載詮釋資料;循序處理 100,000 頁穩定維持在 69.3 MiB 峰值,已釋放的一般或壓縮頁面再次具體化時保有原始物件識別

Version 2.621.0

Changed

  • 已解碼的 object-stream 容器現在改用可設定位元組上限的 LRU 快取:逐容器立即驅逐、驅逐後從來源重新載入、支援零保留模式,並提供峰值位元組、驅逐與重載遙測

Version 2.620.0

Changed

  • 大型一般頁面樹現在以緊湊佔位符開啟,透過 /Count 導引的走訪與間接物件雜湊索引解析隨機頁面,快取已解析頁面,公開具體化遙測與控制項,並在結構變更或儲存操作前自動展開

Version 2.619.0

Changed

  • 已載入的 AcroForm 欄位、限定名稱、widget、註解與頁面現在共用一個惰性的雙向關聯快取:含反向註解查找、逐 widget 的頁面查找、活動遙測、針對原始物件圖編輯的明確失效機制,以及變更安全的自動維護

Version 2.618.0

Changed

  • 頁面物件查找現在改用惰性重建、感知變更的反向索引,索引物件編號與已解析頁面指標,取代頁面複製、書籤、具名目的地、動作、表單、無障礙與頁面樹對帳中反覆的頁表掃描,並公開有效性與活動遙測

Version 2.617.0

Changed

  • 已渲染文件比較現在支援呼叫端選定的 DPI、RGB 或亮度色彩容許度、變更像素比例與 SSIM 式相似度關卡、確定性的相連變更區域、可選的 PNG 差異疊加,以及 fail-closed 的頁面與整體像素預算,附明確的渲染診斷

Version 2.616.0

Changed

  • 文件比較現在以確定性的 catalog 為基礎路徑走訪間接物件圖,在明確資源限制內對值與串流計算雜湊,先對齊頁面再分類插入、刪除、移動與變更,區分移動物件與新增、移除,並回報不完整的比較,而不是把預算受限的結果當成相同

Version 2.615.0

Changed

  • 已載入影像的解碼現在改用 16 個快取詮釋資料分片加上按 key 精確的 singleflight 協調:彼此獨立的昂貴解碼並行執行,重複請求仍只保留一個擁有者解碼,位元組與條目預算跨所有分片一體套用,並公開快取解碼進入點與並行遙測;四個獨立的 12,000 像素 JPEG 請求在四個 Win64 worker 上達到 3.72 倍擴充,八個同 key 請求則只解碼一次

Version 2.614.0

Changed

  • 低解析度灰階與 RGB JPEG 渲染現在會選用有界的 1/2、1/4 或 1/8 逆 DCT 縮放,以定點數 resampler 逐列串流縮放後的掃描線,直接寫進精確的目標點陣圖,同時保留解碼預算、取消機制與 codec worker 隔離,並透過 GetLastJPEGReducedDecodeInfo 公開來源、縮放、目標、掃描線與記憶體遙測;12,000×12,000 縮到 300×300 的迴歸測試 fixture 比完整解碼快 24.05 倍,且完全不配置 432 MB 的來源點陣

Version 2.613.0

Changed

  • 已載入頁面的 /Contents 陣列現在提供惰性、可 seek 的串接串流:未過濾片段保留在來源支援的儲存體,同時間最多解碼一個已過濾片段,token 與位元組以攤銷線性方式累加,編輯時以附加新片段的方式保留原始串流;1 GiB、10,000 片段的序列能把額外工作記憶體壓在 64 MiB 以下

Version 2.612.0

Changed

  • 漸增更新現在維持來源檔的寫入鎖定與檔案支援狀態,不再整份保留來源位元組:只在稀疏 xref 子區段中走訪並寫出變更、新增與刪除的物件,把原始前綴串流到新目標,同目標儲存時直接附加並支援回滾;4 GiB、單物件的修訂能把額外工作記憶體控制在 128 MiB 內

Version 2.611.0

Added

  • 加入有界、文件範圍的已載入字型解碼器快取:LRU 上限 32 MiB 與 128 條目,解析結果在頁面渲染、已載入文字擷取、SVG 匯出與文字替換之間以 singleflight 重用;GetLoadedFontDecoder 回傳獨立的深層複製結果,另附可設定的記憶體預算與遙測 API,並會自動讓圖形、頁面、重載、JSON Patch 與 CMap 設定失效;同一共用間接字型的反覆使用,只要物件還在,其編碼、寬度、ToUnicode、CIDToGIDMap 與子系映射就只解析一次

Version 2.610.0

Changed

  • 加速頁面匯入與物件嫁接:把線性、每次精確重調大小的外部物件查找陣列,換成以來源文件、物件編號與 generation 為 key、操作範圍的二次冪開放定址映射表;批次匯入時共用間接物件與循環圖仍保有既有的識別語意,大型物件圖因此獲得攤銷常數時間的註冊與期望常數時間的查找

Version 2.609.0

Changed

  • 提升 SVG 頁面匯出保真度:直接的 w、J、j、M 與 d 圖形狀態運算子現在會保留線寬、具名的端點與接合樣式、斜接限制、虛線陣列與虛線相位;q/Q 跨巢狀內容與 Form XObject 還原這些屬性;even-odd 的 f*、B* 與 b* 塗繪運算子會輸出 fill-rule="evenodd";零寬度的 PDF 髮絲線透過不縮放的 SVG 筆畫保持可見

Version 2.608.0

Added

  • 加入 QuickJS 靜態連結基礎設施:Lib/HPDFQuickJSStatic.pas 透過 {'$L'} 指令連結五個 QuickJS OMF 目的檔(以 bcc32c 從修補後原始碼建置)——完全不需 DLL——並宣告完整的 C runtime 介面(47 個符號:msvcrt 的 C99 數學函式、Borland 64 位元算術、大小中立的 atomic stub、pthread stub);thirdparty/QuickJS/build-static.bat 自動化修補與編譯 pipeline。已知限制:JS_NewRuntime 成功,但 JS_NewContext 會觸發存取違規,因為移除 _Atomic 改變了結構初始化順序;v2.607.0 的 DLL 建置仍是可用的評估路徑

Version 2.607.0

Added

  • 加入 DataMatrix 二維條碼產生(Lib/HPDFDataMatrix.pas):ASCII 模式編碼搭配數字對壓縮、GF(256) 上以 DataMatrix 原始多項式 $12D 計算的 Reed-Solomon ECC、10x10 到 144x144 的方形尺寸、交替方向的碼字放置與 L 形 finder 圖樣;THPDFPage.DrawDataMatrix 把編碼後矩陣渲染成填滿的模組方格網格
  • 加入 PDF417 堆疊式二維條碼產生(Lib/HPDFPDF417.pas):文字模式編碼搭配 base-30 字元配對、GF(929) 上以原始多項式 3 計算的 Reed-Solomon ECC、符號描述子編碼,以及帶起止圖樣的列/欄佈局;THPDFPage.DrawPDF417 渲染碼字矩陣
  • 加入 QuickJS JavaScript 引擎綁定(Lib/HPDFQuickJS.pas,外加 thirdparty/QuickJS/bin/ 下預建的 Win32/Win64 quickjs.dll):動態 DLL 載入、runtime 與 context 生命週期,以及求值 API(Eval/EvalInt/EvalFloat);Eval 路徑在連進應用程式時有已知的 Win32 啟動當掉問題,已記錄待後續調查
  • 加入 THPDFWriter 架構抽取目標(Lib/HPDFWriter.pas):xref 條目登錄(free/used/compressed)、傳統 xref 表序列化器與 trailer 字典建構器,THotPDF 的儲存路徑漸增地委派過去

Version 2.606.0

Added

  • 加入兩個 HotPDFCLI 命令:decrypt 以給定密碼載入加密 PDF,經 DecryptLoadedDocument 解密後儲存未加密副本(-o 輸出路徑,預設 <input>-decrypted.pdf);optimize 經 CompressLoadedDocument 以 FlateDecode 重新壓縮每個串流(-o 輸出路徑,預設 <input>-optimized.pdf,拒絕加密輸入)

Version 2.605.0

Added

  • 加入 QR Code 二維條碼產生:新的 Lib/HPDFQRCode.pas 實作完整的 QR 編碼器(數字、英數與位元組編碼模式;GF(256) 上的 Reed-Solomon 錯誤校正;版本 1-40 含全部四種 EC 等級 L/M/Q/H;全部八種遮罩圖樣與懲罰評分;正確的模組放置,涵蓋 finder、timing、alignment、格式資訊與版本資訊圖樣)THPDFPage.DrawQRCode 方法在任何書寫頁面上把編碼後矩陣渲染成填滿的模組方格網格(ModuleSize 以 point 為單位,EC 等級與色彩可設定)

Version 2.604.0

Added

  • 加入完整的 MacExpertEncoding 解碼表:高半區 128 位元組現在會把 expert 字形(小型大寫、舊式數字、上標/下標數字、分數、排版符號)映射到最接近的 Unicode 碼位或私用區替代,取代先前產生亂碼的原始位元組恆等 fallback,使用 expert 編碼 Type 1 字型的文件不再出亂碼

Version 2.603.0

Fixed

  • 修正 ConcurrentObjStmDecryptionMatchesSerial 長期偶發的失敗:在預設 PDF 1.6 版本下 aes256 降級為 aes128 後,全域的 FRevision 仍是舊值,CreateKeys 被誤導進從不填舊式 /O 與 /U 密碼雜湊的 V5 分支——序列化出的加密字典因此帶著空白或過期的密碼字串,檔案直接打不開。修法是在 setter 與兩處版本協商點都從降級後的 FCryptKeyType 重新推導 FRevision,且舊式字典分支在密碼字串不是剛好 32 位元組時擲出清楚的診斷

Added

  • 加入 HotPDFCLI 的 html 命令:把受限的 HTML 檔案(h1-h6、p、ul、ol、hr 與行內標記)經 HPDFRenderHTMLDocument 渲染成 PDF

Version 2.602.0

Added

  • 加入區塊層級 HTML 匯入:THPDFHTMLImporter(與 HPDFRenderHTMLDocument 便捷包裝)把受限的 HTML 子集渲染到書寫文件上——h1-h6 標題含每級字型大小、p 段落(裸內文會變成隱式段落)、帶縮排 li 項目的 ul/ol 清單(圓點或 1. 編號)、hr 分隔線、底邊界的自動分頁,以及未閉合 p/li 區塊的瀏覽器式復原;head/script/style 區域會跳過,容器標籤透明通過。行內標記(b/i/u/font/a/sub/sup、entity、自動換行)委派給既有的 TextOutHTML 渲染器,區塊因此能在頁內保持同頁;表格、影像、CSS 與巢狀清單不在支援範圍

Version 2.601.0

Added

  • 加入三個 HotPDFCLI 命令:merge 把額外輸入的每一頁附加到第一份文件並儲存合併結果(-o 輸出路徑,至少兩個輸入,輸出/輸入碰撞有防護);split 把文件的每個選取頁寫成各自的單頁檔(<prefix>-page<N>.pdf,--pages 以 1 為起始的範圍,預設前綴取自輸入路徑);export-svg 寫出每個選取頁的 SVG 匯出(<prefix>-page<N>.svg,預設第 1 頁)

Version 2.600.0

Added

  • 加入 SVG 頁面匯出:BuildLoadedPageSVG 為任一已載入頁面回傳獨立的 SVG 1.1 文件,SaveLoadedPageAsSVG 把它寫到磁碟;可匯出的包括路徑(fill/stroke/fill-and-stroke 塗繪運算子與 DeviceRGB 色彩)、文字串列(每字元定位的 <text> 元素,走與文字擷取相同的字型解碼 fallback 鏈,遵循 Tf/Tc/Tw/Tz/Ts 與文字矩陣,含旋轉與縮放)、影像 XObject(解碼後以 base64 PNG data URI 內嵌,並透過 CTM 單位方塊映射)與 Form XObject(以 form 矩陣與自身 /Resources 遞迴解譯);/Rotate 90/180/270 頁面以旋轉後的畫布幾何匯出
  • 繼承自共用內容串流裝置派發器的已知限制:不支援 W/W* 裁剪、不支援 sh 著色、不支援 Type 3 字型;行內影像只回報詮釋資料;ExtGState 支援的筆畫參數(LW/LC/LJ/ca/CA)會被遵循,而單純的 w/J/j/d 運算子不會被派發

Version 2.599.0

Added

  • 加入 HotPDFCLI 命令列工具(tools/HotPDFCLI):主控台前端,內含三個命令——info(PDF 版本、頁數與首頁尺寸、加密方式、線性化與 xref 結構、註解/字型/影像/表單/簽章計數器、Info 詮釋資料)、extract-text(以 1 為起始的 --pages 範圍、--out 檔案輸出、--layout 等寬網格模式並符合視覺閱讀順序)與 verify(每個簽章欄位的狀態、簽署者、原因、雜湊、簽署時間、整份文件涵蓋範圍與憑證狀態,任一簽章失敗時以非零結束代碼離開);Build-HotPDFCLI.bat 會產出 Win32 與 Win64 執行檔

Version 2.598.0

Added

  • 加入 SetRenditionMediaPlayParameters:為媒體 rendition 附加或更新 /P 媒體播放參數字典,可帶必須遵循的 /MH 或盡力而為的 /BE 目標,內容含音量百分比、控制項可見性、自動播放旗標、fit 模式(meet/slice/fill/scroll/hidden)、重複次數,以及固有、無限或明確時間跨度的時長
  • 加入 SetRenditionMediaScreenParameters:為媒體 rendition 附加或更新 /SP 媒體螢幕參數字典(視窗類型 floating/full-screen/hidden/screen-annotation 矩形、DeviceRGB 背景色彩、背景不透明度、監視器索引)
  • 加入 SetSoundAnnotationParameters:改寫聲音註解 /Sound 串流的取樣格式(取樣率、聲道數、每樣本位元數、Raw/Signed/muLaw/ALaw 編碼),不再受限於寫死的 22050 Hz 立體聲 16 位元 Signed 預設,並設定 Speaker 或 Mic 等 /Name 圖示

Version 2.597.0

Added

  • 加入 SetMovieAnnotationParameters:覆寫 AddMovieAnnotation 以寫死預設值建立的影片註解 /Movie 字典(長寬對、旋轉 0/90/180/270、以秒計的時長、海報可見性)
  • 加入 SetRichMediaPresentation:填入 RichMedia 註解的 /RichMediaSettings 啟用、停用與展示字典(條件名稱如 PO 頁面開啟、工具列/導覽 UI/右鍵點擊/透明度旗標);空的條件名稱會省略對應字典
  • 在 THotPDF 加入 ResolveIndirectObject:解析撰寫端寫進字典裡的間接參照,呼叫端得以走訪剛建好的物件樹;AddRichMediaAnnotation 現在也會把它的註解登記到 LastAnnotation

Version 2.596.0

Added

  • 加入即時撤銷證據探索:憑證解析器現在會讀取 AIA OCSP responder 與 CRLDistributionPoints URI 擴充,HPDFExtractCertificateRevocationURLs 逐憑證公開這些 URL,HPDFCollectCMSRevocationRequests 則把它們變成證據請求(對每個發佈點發 GET pkix-crl,以憑證及其簽發者建出最小 RFC 6960 SHA-256 CertID 內文發 POST ocsp-request,自簽憑證以自身作為簽發者解析)
  • 加入 HPDFValidateCMSCertificatePathOnline:收集上述請求,透過呼叫端提供的傳輸層在既有重試/worker 機制上執行(函式庫絕不自己開 socket),並把抓到的每份 OCSP 回應與 CRL 餵給離線驗證器;抓取失敗時退化為離線證據語意

Version 2.595.0

Added

  • 加入 JBIG2 半色調區域解碼(區段類型 22/23):圖樣字典(類型 16)支援 MMR 或算術編碼的集合位元圖,灰階位元平面堆疊同時支援 MMR(位元組對齊的鏈結平面)與算術形式(單一共用 MQ 解碼器),並有 8.8 定點數向量的網格放置與可選的 HSKIP 空白映射
  • 加入 JBIG2 獨立通用精煉區域(類型 42/43,GRTEMPLATE 0/1 帶 TPGRON),對被參照區段或頁面緩衝區的封存位元圖做精煉
  • 加入 AddPubSecKeyMaterial / ClearPubSecKeyMaterials:在主要 PubSecKeyMaterial 不匹配時,對每個 /Recipients 信封嘗試額外的收件者私鑰
  • 加入測試串流建構器 HPDFJBIG2Codec_EncodeHalftoneRegionTestStream 與 HPDFJBIG2Codec_EncodeStandaloneRefinementTestStream,端到端涵蓋新區段類型

Fixed

  • 修正公鑰 AES-128 文件載入:pubsec 拆分後,舊式物件通道會把 FileKey、StringKeyType 與 StreamKeyType 留在未初始化狀態,每個物件都拿垃圾金鑰解密(Win64 載入直接失敗;Win32 載入則靜默產生錯誤明文)
  • 修正加密字串往返:密文現在一律序列化為十六進位字串,因為 literal 字串會把 CR、LF 與 CRLF 正規化成單一 LF,跳脫處理可能翻動任意密文位元組

Version 2.594.0

Added

  • 為預先定義的 CJK UCS2/UTF16 CMap(UniJIS-UCS2-H、UniGB-UTF16-V 等 17 個)加入內建恆等近似:磁碟上沒有附 CMap 資源時,HPDFLoadStandardCMapFile 直接以內建表回答,Type0 文字擷取不再一次一位元組地解 2 位元組碼
  • 加入使用者提供的 JBIG2 Huffman 表(區段類型 53,Annex B.2 描述符形式):原生解碼器會解析表區段,符號字典的 SDHUFFDH/SDHUFFDW/SDHUFFBMSIZE/SDHUFFAGGINST 與文字區域的 SBHUFFFS/DS/DT/RDW/RDH/RDX/RDY/RDSIZE 在選擇器值為 3 時從被參照區段解析
  • 加入 SetStructureClassMapEntry,在 StructTreeRoot 的 /ClassMap 登記類別名稱的共用屬性字典,補完 SetStructureElementClass 的 C API

Fixed

  • 修正公鑰多收件者金鑰復原:/Recipients 信封先前存在未計數清單裡,多條目共用同一緩衝區,兩個以上收件者的文件因此每種加密都推導出錯誤的檔案金鑰;信封現在是各自持有的副本,舊式 SHA-1 路徑也改以原始信封位元組計雜湊,與 AES-256 路徑一致

Version 2.593.0

Added

  • 加入 Shading Type 1(函式型)渲染:定義域矩形的可見部分由色彩誤差驅動的四元樹細分,每個葉格以頂點色彩取樣自 2 輸入函式的兩個漸層三角形繪出,取代先前「未取樣」的 fallback 診斷
  • 加入寬鬆的 2 輸入函式求值:只宣告一個輸入的函式退化為 f(x)(第二定義域座標視為常數)而非直接失敗,Type 1 著色背後的取樣與指數函式仍能繪出

Version 2.592.0

Added

  • 加入 object-stream 隔離區:損壞的 /Type /ObjStm 容器會連同原因一併記錄(THPDFObjStmQuarantineReason:不是串流、字典損壞、標頭損壞、串流大小錯誤、解密失敗、解壓縮失敗、/First 超出範圍、標頭無法解析或容器例外),附一行診斷訊息與它留下未解析的成員物件編號,其他獨立容器照常載入
  • 加入成員層級隔離(osqrMemberUnparsable):成功解碼的容器中無法解析的成員本體會記錄一次而不影響兄弟成員,GetLoadedQuarantinedObjStmCount / GetLoadedQuarantinedObjStmInfo 公開每一筆記錄;隔離記錄會在一次載入的復原重試間保留、逐容器去重,並在下一次進入載入時清除