losLab 軟體開發部落格

HotPDF 元件

Software Development Blog

HotPDF 元件

在 Delphi 中跨文件重複使用 THotPDF 實例

自 HotPDF v2.764.0 起,一個 THotPDF 實例就能在 Delphi 中連續寫出多份 PDF 文件:BeginDoc 與 EndDoc 的重複使用如何運作、舊版的行為,以及檔案鎖定

HotPDF 元件

Delphi 中的 AcroForm 欄位繼承值與重設

HotPDF 在 Delphi 中沿 /Parent 鏈解析已載入 AcroForm 欄位的繼承 /FT、/Ff、/V、/DV,具名子欄位保持可定址,重設時按原 PDF 物件型別複製預設值

HotPDF 元件

使用 HotPDF 在 Delphi 中建立背景 PDF 算繪佇列

使用 HotPDF 的背景渲染機制讓 Delphi PDF 檢視器隨時保持流暢的操作反應速度:在 UI 執行緒之外排入頁面渲染作業佇列、隨時取消待處理頁面,並快取渲染完成的點陣圖結果

HotPDF 元件

在 Delphi 中使用 HotPDF 產生可掃描的條碼 PDF

使用 HotPDF 從 Delphi 應用程式直接將一維條碼繪製到 PDF 輸出檔案中:說明其實際支援的各種條碼符號系統,以及模組寬度與靜區設定如何決定掃描器最終能否成功讀取條碼內容

HotPDF 元件

Delphi HotPDF 內建樣板比對 OCR

HotPDF 內建樣板比對 OCR 在 Delphi 中的運作方式:DIB 行順序、Otsu 二值化、16×24 字形樣板,以及靠高度分群判定大小寫

HotPDF 元件

Delphi 的 PDF 憑證加密:RSA-OAEP 與 ECDH

用 HotPDF 在 Delphi 中為指定憑證持有者加密 PDF:RSA-OAEP 與 ECDH 收件者、X25519 與 X448 曲線、/Recipients 順序為何不能動,以及載入時私鑰怎麼註冊

HotPDF 元件

用 HotPDF 在 PDF 內嵌 CFF2 可變字型(Delphi)

HotPDF 把 CFF2 可變字型在選定軸值下靜態化成 CID-keyed CFF1 再內嵌進 PDF:為何不能直接嵌 CFF2、nominalWidthX 32768 的寬度編碼技巧,以及轉換器的記憶體預算與取消控制

HotPDF 元件

在 PDF 中使用 HotPDF 基礎元素繪製圖表

HotPDF 沒有圖表物件,因此您需要在 Delphi 中使用 Rectangle、LineTo 和 Circle 自行繪製長條圖、折線圖和圓餅圖。這裡介紹了座標數學和版面配置。 HotPDF 沒有圖表物件。沒有 ,沒有 ,也沒有任何可以接收數字陣列並傳回轉譯後圖表的工具。相反地,它提供給您的是一個頁面畫布(canva

HotPDF 元件

在 Delphi 中把 PDF 物件圖精準釋放一次:HotPDF

HotPDF 關閉或重新載入文件時,CloseIndirectObjects 先用指標集合收集所有擁有邊、切斷它們,再逐一釋放每個節點與串流 payload,讓共用子物件與環狀參照都不會重複釋放

HotPDF 元件

Delphi 中的 HotPDF TextOut:大小、樣式、旋轉及間距

超越 Delphi 中的 HotPDF TextOut 哈囉世界範例:設定字型大小和樣式、按角度旋轉、精確放置座標,以及調整字元和單字間距。 HotPDF 文件中的每個可見字串都是透過一次呼叫來實現的: 。Hello World 範例以最簡單的方式使用它,字型僅設定一次,四個引數皆保留為合理的預設值

HotPDF 元件

在 Delphi 中安全改寫 PDF 內容串流

對已解碼的內容串流硬套正規表示式遲早會壞。HotPDF 的 VisitLoadedPageContentOperators 逐一交出每個運算子讓你保留、刪除或取代,全部保留時輸出與原檔逐位元組相同

HotPDF 元件

Delphi 中的 HotPDF 自訂 PDF 檢視器:MVC 架構

HotPDF 如何將 Delphi PDF 檢視器拆分為無視窗控制代碼依賴的 THPDFViewerModel 與以 TScrollBox 為基礎的檢視,讓縮放、搜尋和導覽邏輯可進行單元測試 HotPDF 將 Delphi PDF 檢視器分成兩個部分: 是負責縮放、旋轉、搜尋、醒目提示與導覽狀態的純類別,不依賴視窗控制

HotPDF 元件

PDF 中的 CMYK JPEG:DCTDecode ColorTransform

HotPDF 解碼器遵守 DCTDecode /ColorTransform:JPEG 內的 APP14 marker 優先於字典設定、未定義值直接拒絕、多層 filter 必須對齊 /DecodeParms 陣列,JPEG 2000 影像則保留明確 /Decode

HotPDF 元件

HotPDF RenderCacheFolder:Delphi 的磁碟頁面快取

HotPDF 的 RenderCacheFolder 把記憶體內的渲染頁快取延伸到磁碟:v2.770.140 修正文件識別——本機檔案以大小、修改時間與頭尾 64 KiB 指紋,加密 PDF 一律不落盤

HotPDF 元件

Delphi ECDSA PDF 簽章驗證:從 DER 轉換為 P1363

說明如何在 Delphi 中把 CMS DER ECDSA 簽章轉換為 IEEE P1363 格式以供 BCryptVerifySignature 使用:嚴謹解碼 r 與 s、曲線提供者名稱,以及 CMS 簽署者比對 CMS 容器內的 ECDSA ,是一個 DER 格式的 。Windows CNG 函式

HotPDF 元件

使用 HotPDF 將 EMF 與 WMF 向量匯入 Delphi PDF

HotPDF 的 EMF 與 WMF 解譯器會將 GDI 漸層填滿效果對應為 PDF 軸向陰影、將網紋筆刷樣式對應為平鋪圖樣,確保 Delphi 產生的向量圖形輸出結果保持真實還原

HotPDF 元件

使用 HotPDF 在 Delphi 中實作 EN 16931 Schematron 規則引擎

HotPDF 使用原生 XPath 1.0 引擎在 Delphi 中驗證 EN 16931 Schematron 商業規則,略過 XPath 2.0 檢查,並在 Delphi 7 上提供存根實作 HotPDF 透過 驗證 EN 16931 電子發票商業規則。這是一個由函式庫自行實作、建構於 MSXML XPath

HotPDF 元件

靜默停用字型子集化的 EndDoc 錯誤

字型子集化這項作業居然在整個 PDF 檔案已經寫入完成後才執行,結果產生了完整字型卻完全不報任何錯誤。了解這個潛藏在 HotPDF 中的 EndDoc 執行順序錯誤,以及如何找出並修正它

HotPDF 元件

在 Delphi 中從已載入的 PDF 提取圖片:HotPDF

在 Delphi 中使用 HotPDF 的 ExtractLoadedImage 函數,將已載入之 PDF 中的圖片解碼:支援將 Flate、LZW、JPEG、JPEG 2000、Indexed、CMYK、CCITT 與 JBIG2 濾鏡轉換為 TBitmap。 您的磁碟上有一份

HotPDF 元件

Free Pascal Win32:HotPDF 的 C 符號裝飾

Free Pascal 在 Win32 上會幫 cdecl 匯入加底線前綴,public name 卻逐字匯出,HotPDF 用兩組前綴常數同時滿足兩邊慣例,也不弄壞既有的 Delphi 連結

HotPDF 元件

使用類型 0 取樣函式的 PDF 3D 色彩 LUT

PDF 規範中的 Function Type 0 本質上是一種多維插值查找表。了解 HotPDF 如何在 Delphi 中運用它建構 3D 色彩查找表,以及專色色調轉換功能的實作方式

HotPDF 元件

HotPDF 的 HTML 表格 rowspan 佔用格與跨頁標頭

HotPDF 算繪 HTML 表格時,用真正的佔用格網格處理 rowspan 與 colspan,以實測列高取代字元數估算,並在跨頁的每一頁重複標頭列,只有兩種明文定義、刻意為之的拒絕情況

HotPDF 元件

HotPDF 的影像降取樣核心與列印抖動

HotPDF 為影像降取樣加入可分離的 bicubic 與 Lanczos3 核心,並提供 Floyd-Steinberg 算繪抖動;每一項都是拿速度換品質的取捨,也有各自更合適的使用場景

HotPDF 元件

用 HotPDF 在 Delphi 中做不變式 PDF 數字格式化

說明小數逗號地區設定為何會在 Delphi 中弄壞 PDF 內容串流,讓讀取器無聲丟棄運算子,以及 HotPDF 如何在 Type 1 字型、SVG 與 FPC 建置之間以統一轉換層釘死不變式數字格式化

HotPDF 元件

Delphi PDF 中的原生 JBIG2 雙色調影像壓縮

JBIG2 壓縮格式能讓掃描出來的黑白頁面產生體積最小的 PDF 輸出檔案。了解 HotPDF 如何在 Delphi 中寫入 JBIG2Decode 串流,並插接對應的編碼器後端模組

HotPDF 元件

在 Delphi 中跨頁共用 JBIG2 符號字典

HotPDF 會在 Delphi 產生的 PDF 檔案中,把跨頁共用的 JBIG2 符號字典合併成單一 /JBIG2Globals 串流,大幅減少多頁掃描檔案中重複字形的儲存空間需求

HotPDF 元件

在 Delphi 中使用 HotPDF 將 JPEG 2000 影像加入 PDF

JPEG 2000 為 PDF 影像帶來高位元深度和小波壓縮。了解 HotPDF 如何在 Delphi 中解碼 JPXDecode 串流並嵌入 JP2 和 J2K 圖片。 掃描的醫療切片、航拍測量圖磚、以完整動態範圍封存的電影影格 - - 這些圖片以 JPEG 2000 格式呈現,而且這樣做是有原因的

HotPDF 元件

Delphi 線性化 PDF 輸出:HotPDF 提示表

HotPDF 如何在 Delphi 中寫出線性化 PDF 輸出以支援快速網頁檢視:頁面切割、提示表、版面收斂與 4 GiB 偏移量上限 HotPDF 透過 上的 屬性,寫出 Acrobat 標示為快速網頁檢視(Fast Web View)的線性化 PDF 檔案。在 之前設定它,會讓 HotPDF

HotPDF 元件

HotPDF 中的 PAdES LTV 證據與種子值

用一次 HotPDF 呼叫把剛簽署的 PDF 從 B-B 升級到 B-LT,經 AIA caIssuers 補齊憑證鏈,並正確解讀簽章欄位的種子值旗標,避免必要約束被當成偏好而無聲失效

HotPDF 元件

在 Delphi 中以 HotPDF 進行後量子與 EdDSA PDF 簽章

HotPDF 在 Delphi 中驗證 ML-DSA Ed25519 與 Ed448 CMS 簽章,並透過回呼遠端或 PKCS#11 提供者代為簽章而不接觸私鑰,後量子與 EdDSA 簽章從同一份程式碼完成驗證與簽署,硬體權杖與國民身分證卡都能直接接入 HotPDF 能驗證已載入 PDF 文件中的

HotPDF 元件

HotPDF 行程內 RapidOCR:Delphi 原生 DLL OCR

HotPDF 以 HPDFCreateRapidOCRDLLOCREngine 載入 HotPDFRapidOCR.dll,ONNX 模型常駐記憶體、免 Python 無子行程,ApplyLoadedOCRTextLayer 為掃描頁寫入隱形 Unicode 文字層

HotPDF 元件

Delphi 中的非破壞性 PDF 標示:HotPDF 審閱圖層

HotPDF 在 Delphi 中加入審閱標示圖層,將標記矩形保留於記憶體中,不重寫 PDF,並在縮放與旋轉期間維持對齊 審閱期間在段落周圍繪製的矩形,不必成為 PDF 內的標記。HotPDF 的 提供 ,這個方法會將每個標示保留為記憶體中的記錄,而不是對已載入文件的變更,因此審閱者可以標記數十頁內容,同時磁碟上的檔案

HotPDF 元件

純 Delphi 實作 OpenType GSUB 樣式替代字 (Stylistic Alternates)

樣式集 (Stylistic sets) 和替代字存在於字型的 GSUB 表中。了解 HotPDF 如何在沒有 HarfBuzz 的情況下,以純 Delphi 解析 salt 和 ss01 到 ss20 的替換。 設計師為標題挑選帶有單層 的字型,為表格挑選帶有斜線的零,或是為封面挑選一組帶有花飾的草書大寫字母

HotPDF 元件

HotPDF 的 CMYK Overprint 打樣與算繪裝置

HotPDF 透過單一裝置抽象把已載入的 PDF 頁面算繪成點陣圖印表機 HDC 或向量中繼檔,並模擬 CMYK overprint 印墨互動,送印前在 Delphi 與 C++Builder 螢幕上看到原本只出現在印刷紙張上的疊印效果以避免打樣與印刷結果不一致 HotPDF 透過單一入口 來算繪已載入的 PDF

HotPDF 元件

用 HotPDF 在 Delphi 中將 PDF 頁面匯出為 SVG

PDF 轉 SVG 表面上是座標問題,實際上是圖形狀態問題。HotPDF 的 BuildLoadedPageSVG 一次呼叫就把已載入頁面輸出成獨立 SVG,保留文字矩陣、頁面旋轉、影像翻轉與虛線描邊

HotPDF 元件

Delphi 中不會耗盡記憶體的平行 PDF 頁面渲染

把一萬頁以 300 DPI 渲染進一個陣列,等於記憶體不足當機。HotPDF 的 RenderLoadedPagesParallelOrdered 以有序回呼交付頁面,用佇列深度與記憶體額度把點陣圖尖峰用量壓成固定值

HotPDF 元件

Delphi 中 PDF 剖析器卡死:動也不動的游標

一個不消耗任何位元組的剖析分支,能把 40 位元組的畸形 PDF 變成佔滿單核心的無窮迴圈,本文說明 HotPDF 如何在 Delphi 的三個剖析器中找到四個停滯點,並用編譯舊版原始碼的探針證明修復有效

HotPDF 元件

在 Delphi 中驗證 PDF MAC 修訂鏈(ISO 32004)

HotPDF 如何在 Delphi 中驗證 ISO/TS 32004 PDF MAC 修訂鏈:為每個修訂重建前綴串流獨立雜湊、處理 CMS 簽章寫入順序,並先解密 /Perms 再讀取經認證的權限位元

HotPDF 元件

用 HotPDF 在 Delphi 中產生 PDF 2.0 PDF/A-4 與 PDF/UA-2

用 HotPDF 從 Delphi 撰寫原生 PDF 2.0,涵蓋 PDF/A-4 三種封存設定檔 PDF/UA-2 結構命名空間與關聯檔案,EndDoc 檢查能在產生結束時抓出損壞的結構樹,避免問題檔案送到客戶那裡才被 veraPDF 驗證出來 HotPDF 能從 Delphi 與 C++Builder 撰寫原生

HotPDF 元件

HotPDF PDF/X-1a 色彩檢查:揪出 RGB 內容

EndDoc 時 HotPDF 遞迴巡檢每頁資源並比對繪製期旗標,拒絕任何 DeviceRGB、CalRGB 或 ICCBased RGB 內容,讓 RGB 在 Delphi 建置階段就被攔下,而不是等到印刷廠預檢退件

HotPDF 元件

用 HotPDF 在 Delphi 中將字型子集快取於磁碟

HotPDF 透過持久性磁碟快取跨文件與跨行程重用 TrueType 與 OpenType 字型子集,以內容定址金鑰 LRU 驅逐與可讀統計資料管理,Delphi 與 C++Builder 報表伺服器的批次輸出只做一次子集化,大幅縮短大型批次的 CPU 時間 HotPDF 能把 TrueType 與 OpenType

HotPDF 元件

強化 Delphi PDF 簽章器以抵禦惡意 PKCS#12

憑證解析器就是攻擊面。看看 HotPDF 中 PKCS#12 與 ASN.1 處理的兩個真實漏洞:整數回繞與 PBKDF2 阻斷服務 當您簽署 PDF 時,通常會將簽章金鑰視為您所控制的內容;它存在於您產生的 檔案中,並受到您選擇的密碼保護;讀取該檔案的程式碼感覺像是管道,而不是邊界;當憑證不再屬於您時,這種直覺就是錯

HotPDF 元件

Delphi 中的 PDF 漸層轉譯:軸向與放射狀

HotPDF 在 Delphi 應用程式開發中透過 sh 運算子渲染 PDF 軸向與放射狀這兩種漸層效果,將每個漸層效果離散化為由其內部函式引擎逐一求值計算出的一系列色彩頻帶集合結果

HotPDF 元件

在 Delphi 中轉譯 Separation 與 DeviceN 特別色

使用 HotPDF 在 Delphi 中轉譯 PDF Separation 與 DeviceN 特別色:濃淡轉換函式、Type 4 計算器求值,以及 Lab 白點適應 HotPDF 藉由透過 解析色彩空間、使用 求值濃淡轉換函式,並將結果透過替代空間轉換為螢幕所用的 RGB,來轉譯已載入 PDF 頁面上的

HotPDF 元件

用 HotPDF 解碼 PDF 頁面中的旋轉 QR Code

HotPDF 在解碼器內部把取樣出的模組矩陣正規化到全部八個 D4 方位,藉此解碼已載入 PDF 頁面裡旋轉過的 QR 符號,而不是旋轉掃描遮罩,兩段式座標轉換再把結果帶回 PDF 使用者空間

HotPDF 元件

在 Delphi 中搜尋與取代現有 PDF 內的文字

使用 HotPDF 在 Delphi 應用程式中搜尋並取代現有 PDF 檔案裡的文字內容:字形層級搜尋比對方式、反向字型編碼技巧,以及子集字型在文字替換操作上會實際遇到的各種限制條件

HotPDF 元件

在 Delphi 中設定已載入 PDF 的表單欄位值

HotPDF 的 SetFormFieldValue 除了寫入 /V,還會同步處理 UTF-16 欄位名稱、核取方塊與選項按鈕的 /AS 外觀狀態,以及選擇欄位的 /I 索引,讓填好的表單在每個檢視器都一致

HotPDF 元件

HotPDF 處理阿拉伯文與希伯來文 Comb 欄位

HotPDF 以 Unicode 純量計算 Comb 欄位格數,把連字與結合符號視為一個叢集置中,並在分配儲存格前先跑完整雙向演算法,讓阿拉伯文與希伯來文的表單欄位正確填入

HotPDF 元件

在 Delphi 中比對兩份 PDF 檔案:結構與像素

同一個產生器跑兩次就會寫出不同位元組,逐位元組比對從一開始就沒用。HotPDF 的 THPDFDocComparison 從目錄走訪物件圖並比對轉譯後頁面,輸出帶預算上限的 JSON 差異報告

HotPDF 元件

以 HotPDF 在 Delphi 中做結構順序 PDF 文字擷取

HotPDF 如何走訪結構樹、按 MCID 重組字形,以作者宣告的撰寫順序讀出加標籤 PDF 的文字,並為未加標籤的頁面提供安全的幾何回退路徑,讓雙欄版面與表格不再被讀錯順序,下游分塊不再繼承錯亂

HotPDF 元件

在 Delphi 中使用 HotPDF 將資料表轉譯為 PDF

在 Delphi 應用程式中把資料集查詢結果的每一列資料內容,逐一繪製成一份真正完整的 PDF 表格輸出結果:計算欄位寬度、對齊儲存格文字、繪製表格格線,並在表格跨頁時自動重複表頭列

HotPDF 元件

HotPDF Tesseract DLL OCR:從 Delphi 呼叫 C API

HPDFCreateTesseractDLLOCREngine 動態載入 Tesseract 5 相容 DLL、直驅 C API:監視器當不透明指標、回呼例外不外洩、期限是合作式的,文字層仍走 ApplyLoadedOCRTextLayer

HotPDF 元件

Delphi HotPDF 中的 PDF 平鋪圖樣渲染

說明 HotPDF 如何在 Delphi 中正確渲染 PDF 平鋪圖樣效果:q 與 Q 運算子之間的圖樣狀態管理、經裁剪的填色與描邊路徑、可見圖磚範圍計算,以及硬性圖磚數量的上限限制

HotPDF 元件

在 Delphi 中於繪製當下偵測 PDF 缺失字形

HotPDF 能在繪製當下記錄每個會顯示為豆腐塊的字碼點、失敗的字型與所屬的文字系統,再把缺口導入按文字系統設定的字型回退鏈,讓缺字問題從客戶事後回報變成建置期就能攔截的閘門與遙測

HotPDF 元件

在 Delphi 中使用 HotPDF 驗證 PDF 數位簽章

在 Delphi 中使用 HotPDF 驗證 PDF 數位簽章:讀取簽署者詳細資訊、重新雜湊 ByteRange 位元組、檢查 CMS/RSA 簽章,以及了解 svValid 提供的保證。 HotPDF 透過 的三個方法(於 v2.259.0 引入)來驗證已載入 PDF 文件中的數位簽章: 、 以及

HotPDF 元件

Delphi 使用 HotPDF 將 WebP 轉成 PDF

HotPDF 以純 Object Pascal 解碼 WebP 無損 VP8L,讓 AddImageFromFile 無需 DLL 就能接受 .webp,並避開 RFC 9649 中導致解碼失敗的位元陷阱

HotPDF 元件

強化 HotPDF 時發現的 Win64 專屬 Delphi bug

Win64 專屬的五個 Delphi 陷阱:Power 綁到 Single 多載、while 迴圈讀到過期 Count、High(Int64) 上界進位到 2^63、FPC 浮點文字 15 位、斷言型別推斷失敗

HotPDF 元件

HotPDF 中的 RtLTextOut:Delphi 中的從右到左 PDF 文字

適用於 Delphi 的 HotPDF RtLTextOut 參考:包括函式簽名、參數、字元集 178/177 設定、RegisterUnicodeTTF、實際運作範例,以及已修正的常見 RTL 錯誤。 將阿拉伯文句子 傳送給普通的 ,傳回的頁面在兩個方面同時出錯。單字是從左到右而非從右到左延伸,且字母以孤立形式(is