losLab 軟體開發部落格

PDFium 元件

Software Development Blog

PDFium 元件

Reading PDF Font Properties with PDFium Component in Delphi

在 Delphi 中使用 PDFium 元件檢查 PDF 內部的字型:讀取字形的字型家族名稱、基本名稱、粗細、斜體角度以及該字型是否已嵌入 PDF 中的每個可見字元都攜帶對繪製它的字型的引用,而 PDFium 元件允許您沿著該引用追蹤回字型物件並讀取它所知道的資訊;存取的單位是字元,而不是文件:您透過分頁文字中的索引選

PDFium 元件

在 Delphi 中使用 PDFium 稽核 PDF 安全風險

在信任 PDF 之前,先列舉其風險表面。了解 PDFium 如何在 Delphi 中讀取檔案 JavaScript、啟動動作和簽名權限以進行稽核 PDF 不僅僅是紙張。它是一個容器,可以攜帶在檔案開啟時執行的指令碼、啟動外部程式的連結、連線到網頁伺服器的連結、巢狀在檔案內部的檔案,以及聲明自有人擔保以來檔案未曾改變的簽

PDFium 元件

Build a PDF Viewer in Delphi with PDFium Component

在 Delphi 中使用 PDFium 元件組合出一個可用的 PDF 檢視器:將 TPdf 連接到 TPdfView、載入與算繪文件,然後新增分頁、縮放與符合模式導覽 在 Delphi 中,PDF 檢視器可以歸結為兩個元件以及它們之間的連接; 擁有文件:它開啟檔案、對其進行解密,並回答有關頁數和中介資料的提問;

PDFium 元件

在 Delphi 中使用 PDFium 元件將掃描影像合併為單一 PDF

一個實用的 Delphi 解決方案,用於使用 PDFium 元件將掃描頁面的資料夾合併為單一 PDF:建立文件、為每張影像新增頁面、縮放以符合大小並儲存 理賠處理團隊擁有三十年的紙本檔案,需要透過饋紙式掃描器進行處理;掃描器將每頁輸出一個 JPEG 檔案到資料夾中,命名為 、 等;而歸檔實際需要的是每個案卷一個

PDFium 元件

在 Delphi 中使用 PDFium 元件將 PDF 頁面轉譯為 JPEG 影像

在 Delphi 中使用 PDFium 元件將 PDF 頁面點陣化為 JPEG:將 DPI 轉換為像素大小、將每個頁面轉譯為點陣圖,然後使用 TJPEGImage 以選定的品質進行編碼 將 PDF 頁面轉譯為 JPEG 是兩個通常會被混在一起執行、然後被分開偵錯的操作;首先,您需要以選定的解析度將頁面點陣化為像素點陣圖

PDFium 元件

在 Delphi 中部署 PDFium DLL:修正載入失敗

在 Delphi 中診斷 pdfium.dll 載入失敗:修正 32/64 位元 ERROR_BAD_EXE_FORMAT 193 錯誤、識別過期的 DLL,以及跨執行緒安全地載入 PDFium 元件 當 pdfium.dll 拒絕在客戶的電腦上載入時,適用於 Delphi 和 Lazarus 的 PDFium

PDFium 元件

在 Delphi 中使用 PDFium 偵測與解開 XFA 表單

在 Delphi 中使用 PDFium 元件偵測 XFA 表單並將其範本、資料集和設定封包解開為原始 XML——靜態封包讀取無需 V8 執行階段 是的——PDFium 支援 XFA 表單,但有一個重要的區分。PDFium 元件可以使用標準 DLL 偵測 XFA 表單,並將其 、 和 封包(packets)解開為原始

PDFium 元件

使用 PDFium 元件在 Delphi 中進行 XFDF 匯出與匯入

使用 PDFium 元件在 Delphi 中匯出與匯入 XFDF 表單資料與註解:ISO 19444-1 雙向轉換、18 種註解子類型,以及地區安全數字 適用於 Delphi 與 Lazarus 的 PDFium 元件透過 XFDF(ISO 19444-1 定義的 XML 交換格式)交換表單資料與註解;

PDFium 元件

在 Delphi 中使用 PDFium 元件將 PDF 文件中的影像

在 Delphi 中使用 PDFium 元件擷取 PDF 中內嵌的影像:讀取 BitmapCount、取得各個 Bitmap[]、處理靜默開啟失敗,並將輸出儲存為 JPEG 或 BMP PDF 將影像作為一等物件儲存在其內容串流中;當頁面引用照片、掃描影像或圖表時,像素資料會與頁面幾何形狀一起保存在 XObject

PDFium 元件

在 Delphi 中使用 PDFium 元件將 PDF 文件中的文字

在 Delphi 中使用 PDFium 元件擷取 PDF 文字:透過 Character[] 存取原始字符、透過 ReadablePageContent 取得段落結構,以及 Active 靜默失敗防護 PDF 文字擷取看似簡單,直到您遇到文字層不存在、損毀,或是被拆分到數十個毫無意義順序的微小字元組的文檔為止;PDFi

PDFium 元件

強化 PDFium Component 綁定:ABI 與記憶體安全

將 C 函式庫包在 Pascal 裡會把尖銳邊角藏起來。看看 PDFium 繫結中的真實缺陷,從 cdecl 回呼到 FPC Win64 指標寬度截斷,以及它們的修正方式。 建構在 C 函式庫之上的 Pascal 綁定讀起來就像普通的 Pascal。您呼叫一個方法,獲得一個記錄作為回傳,然後釋放您分配的記憶體

PDFium 元件

在 Delphi 中檢查 PDF 簽章與 PAdES 等級

在 Delphi 和 Lazarus 中使用 PDFium 元件讀取 PDF 簽章:檢查 SubFilter、ByteRange 和 CMS,然後偵測 PAdES B-B 至 B-LTA 基準等級 您收到了一份已簽署的 PDF,且需要在檢視器中顯示是誰簽署的、何時簽署的、簽章是否覆蓋了整個檔案,以及它在長期合規性方面達

PDFium 元件

Delphi 中的長期 PDF 簽章:PAdES B-LT 與 B-LTA

在 Delphi 中使用 PDFium 元件加入長期 PAdES 簽章:適用於 B-T、B-LT 和 B-LTA 的 RFC 3161 時間戳記、DSS 驗證存放區和 DocTimeStamps 為了使已簽署的 PDF 在多年後仍能通過驗證(在簽署憑證過期且其 CA 輪替之後),PDFium 元件可以在

PDFium 元件

使用 PDFium 元件將多個 PDF 檔案合併為單一文件

在 Delphi 中使用 PDFium 元件合併 PDF 檔案:ImportPages、頁面範圍字串、插入位置、損壞檔案的靜默失敗,以及表單欄位行為 PDFium 元件透過單一方法公開了 PDF 合併功能: ;該模式始終相同:建立一個空的目標文件、依序開啟每個來源檔案、呼叫 複製頁面、關閉來源檔案,然後重複該步驟;當迴

PDFium 元件

使用 PDFium 進行多頁合一拼版與頁面重排

把多個 PDF 頁面排到一張紙上、就地重排頁面,或擷取子集;了解 PDFium 在 Delphi 中的拼版與頁面移動 API,以及它們傳回的控制代碼 合併和分割是每個人最先接觸的兩個頁面操作,且它們涵蓋了很大的範圍;但它們並非涵蓋一切;還有一個獨立的工作系列是重新排列頁面,而不是移動整個檔案:將四張投影片放到一張紙上作

PDFium 元件

在 Delphi 中安全地解析 PDF 字典:名稱 Token

為什麼子字串鍵值尋找會毀壞 Delphi 中的 PDF 字典解析:依據 ISO 32000-1 的完整名稱 Token 匹配以及針對惡意 PDF 的資源限制 諸如 之類的子字串搜尋是讀取 PDF 字典的錯誤工具,因為 PDF 名稱鍵值(keys)共享前綴: 是 的前綴,而 是 的前綴

PDFium 元件

PDFium Component:無障礙 PDF 閱讀器設計(Delphi)

讓 Delphi PDF 檢視器能配合螢幕報讀軟體:擷取具標記的閱讀順序、以逐字 TTS 反白,並為未標記的 PDF 提供誠實的退路 在 Delphi 和 C++Builder 應用中嵌入 PDFium Component 工作流,或在 Lazarus/FPC 中嵌入 PDFium LCL Component

PDFium 元件

PDFium Component:註解審閱介面(Delphi)

面向 Delphi/C++Builder 的 PDFium Component 註解審閱介面實戰指南,涵蓋架構決策、驗證證據、診斷、邊界情況與上線檢查 在 Delphi 和 C++Builder 應用中嵌入 PDFium Component 工作流,或在 Lazarus/FPC 中嵌入 PDFium LCL

PDFium 元件

使用可取消的 Future 在 Delphi 中進行背景 PDF 渲染

長時間的 PDF 渲染不應在 UI 執行緒上進行。瞭解 PDFium 綁定如何在 Delphi 中使用可取消的 Future 在背景執行緒上執行工作。 在 PDFium 中渲染頁面是同步的。您呼叫函式庫,它會將其光柵化為您傳遞的點陣圖,並在寫入像素後返回控制權。對於單一螢幕大小、單一縮放級別的頁面,這需要幾毫秒,沒有人

PDFium 元件

在 Delphi 中可取消的漸進式 PDF 渲染 (PDFium)

緩慢的頁面渲染不應該凍結 UI 或執行到底。了解在 Delphi 中,PDFium 的漸進式渲染如何透過 IFSDK_PAUSE 成為可取消的。 大多數 PDF 頁面會在幾毫秒內光柵化,而您甚至不會考慮這個過程。但是,當使用者開啟一張 A1 尺寸的工程圖、充滿數以萬計向量筆觸的頁面,或擠滿透明度群組和柔和遮罩的海報時,

PDFium 元件

PDFium Component:表單欄位導覽與檢視器端驗證(Delphi)

面向 Delphi/C++Builder 的 PDFium Component 表單欄位導覽與檢視器端驗證實戰指南,涵蓋架構決策、驗證證據、診斷、邊界情況與上線檢查 在 Delphi 和 C++Builder 應用中嵌入 PDFium Component 工作流,或在 Lazarus/FPC 中嵌入 PDFium

PDFium 元件

在 Delphi 中使用 PDFium 的低視力 PDF 色彩濾鏡

為 Delphi PDF 檢視器加入深色模式與低視力閱讀模式:渲染後反轉、兩種灰階,以及保持可見的覆疊色彩 低視力的讀者在預設對比度下無法辨識白紙上的黑色文字,因此他們會要求深色模式。天真的做法是將渲染出的頁面上每個像素都反轉。這功能一週就發布了,但隔天就壞了:掃描的相片看起來像底片,讀者的黃色螢光筆標記變成了難以辨認

PDFium 元件

在 Delphi 中使用 PDFium Component 建置 PDF 接收審查工作台

在 Delphi 中使用 PDFium Component 對傳入的 PDF 進行分流:檢查 Info 字典與 XMP 中繼資料,找出加密、JavaScript 與 XFA,並及早路由有風險的檔案 PDF 接收審查工作台是一個只有一項工作的小程式:在任何下游程式被允許接觸檔案之前,先檢查每個檔案

PDFium 元件

在 Delphi 中使用 PDFium VCL 實現 PDF/A 歸檔合規性

在 Delphi 中使用 PDFium Component 產生通過 veraPDF 驗證的 PDF/A 封存檔:SaveAsPdfA、XMP 與 ICC OutputIntent 注入、a/b/u 一致性,以及其中的陷阱。 您釋出了一個會將每個檔案標記為 PDF/A-1b 的轉換器,客戶的紀錄系統將它們攝取

PDFium 元件

在 Delphi 中使用 PDFium 元件 CLI 進行批次 PDF 預檢報告

使用 PDFium 元件在 Delphi 中自動化 PDF/A 和 PDF/UA 預檢:批次迴圈、退出代碼、JSON 和 HTML 報告,以及為何沒有發現問題並不等同於通過 批次預檢工具是一個沒有視窗的主控台程式,指向一個 PDF 資料夾,根據您指定的合規標準對每個檔案進行驗證,並留下機器可讀的發現證明

PDFium 元件

PDFium Delphi 檢視器:渲染快取與平滑縮放策略

使用 PDFium 在 Delphi PDF 檢視器中保持縮放和滾動的平滑:正確的快取鍵、點陣圖擁有權、漸進式渲染以及高 DPI 記憶體預算 在一個天真的 PDF 檢視器中按住縮放按鈕,然後觀察 CPU 圖表。單按一次自動重複的縮放控制項會在一秒內觸發十幾次或更多的縮放步驟,如果每個步驟都啟動可見頁面的全品質重新渲染,

PDFium 元件

PDFium Component:安全 PDF 預覽介面(Delphi)

面向 Delphi/C++Builder 的 PDFium Component 安全 PDF 預覽介面實戰指南,涵蓋架構決策、驗證證據、診斷、邊界情況與上線檢查 在 Delphi 和 C++Builder 應用中嵌入 PDFium Component 工作流,或在 Lazarus/FPC 中嵌入 PDFium LCL

PDFium 元件

在 Delphi 中量測 PDF 文字以進行版面配置和自動換行

PDF 版面配置需要先知道字串寬度才能繪製。了解 PDFium Component 如何在 Delphi 中不碰頁面的情況下量測文字,用來做自動換行。 把文字放到 PDF 頁面上的呼叫很直覺。您把字串、字型、大小和位置傳給 ,字形就會出現。它不會告訴您該字串一旦繪製出來會有多寬,也不會把長字串拆成多行

PDFium 元件

Delphi 中的 PDFium 雙重旋轉與適合縮放錯誤

使用 PDFium 修正 Delphi 中縮圖重複旋轉與適合縮放錯誤,了解轉譯旋轉參數為何會疊加,以及 90 或 270 度頁面為何必須交換寬高後再計算縮圖比例與檢視尺寸

PDFium 元件

在 Delphi PDFium 檢視器中逐字語音轉換 (TTS) 標示

使用 PDFium 詞彙方塊在 Delphi 中同步語音轉換與頁面上的單字標示:TrackReadingWordAt、渲染順序、自動捲動和 Unicode 陷阱 朗讀功能在語音之外還有一個可見的任務:當讀出每個單字時,必須在頁面上標示該單字並保持其在視野中。要做到這一點,您需要每個單字的邊界方塊(bounding

PDFium 元件

在 Delphi 中使用 PDFium 元件列印 PDF 文件

在 Delphi 中使用 PDFium 元件列印 PDF:使用 RenderPage 與 rePrinting 轉譯頁面、透過 StretchDIBits 傳送點陣圖至 TPrinter、符合紙張大小,以及處理旋轉 PDF 座標以點(points)為單位,印表機座標以裝置單位為單位,除非您刻意轉換,否則這兩者毫無關聯;

PDFium 元件

使用 PDFium 透過表單 XObject 實現可重複使用的頁面戳記

繪製一次浮水印或標誌,將其放置在每個頁面上。了解 PDFium 的表單 XObject 如何在 Delphi 中建立可重複使用的頁面戳記,以及控制代碼生命週期規則 在檔案的每一頁上蓋上浮水印或標誌看起來像是五分鐘的工作,直到您在檔案大小檢查器中開啟結果。顯而易見的方法是遍歷頁面,並在每一頁上再次建立相同的文字或影像物件

PDFium 元件

在 Delphi 中使用 PDFium 元件執行 AcroForm JavaScript

在 Delphi 中使用 PDFium 元件執行 AcroForm JavaScript:為什麼欄位計算會保持靜止、V8 DLL 的需求,以及否決高風險 PDF 行為的主機事件 在 Acrobat 中會重新計算總計,但在您自己的 Delphi 檢視器中卻凍結不動的表單,幾乎絕不是轉譯 Bug

PDFium 元件

在 Delphi 中使用 PDFium 進行 PAdES B-B 簽署 PDF

在 Delphi 中使用 PDFium 元件為 PDF 加入 PAdES B-B 數位簽章:自建 SHA-256、CMS,以及用於位元組級簽署的 Windows CNG 後端 PDFium 元件透過其 方法為 PDF 進行 PAdES B-B 數位簽章:它載入文件、計算已簽署位元組範圍的雜湊值、建立 CAdES

PDFium 元件

在 Delphi 中使用 PDFium 元件分割 PDF 文件

如何在 Delphi 中使用 PDFium 元件按頁面、範圍或書籤分割 PDF:TPdf.ImportPages、CreateDocument、SaveAs 結果檢查,以及 Active 旗標重設 PDFium 元件為您提供了一個用於分割 PDF 的方法: ;其他的一切操作,不論您是隔離單一頁面、在任意邊界上進行剪切,

PDFium 元件

在 Delphi 中使用 PDFium 按需串流大型 PDF 檔案

數 GB 的 PDF 不需要全部載入;了解 TStream 配接器如何提供 PDFium 的按需 FPDF_FILEACCESS 回呼,以及為什麼 4 GiB 的限制在 Delphi 中需要防護 掃描的封存檔案在單個 PDF 中可能達到數 GB;開啟此類檔案的檢視器通常只想顯示一頁,可能是目錄,也可能是使用者從書籤跳轉

PDFium 元件

在 Delphi 中使用 PDFium 元件進行雙頁 PDF 比較

在 Delphi 中使用 PDFium 元件建立雙頁 PDF 檢視器:兩個或三個獨立的面板、透過 TPdfView.Zoom 進行個別檢視的縮放,以及同步的頁面巡覽 同時開啟兩個文件、相同的頁碼、各自顯示在獨立的捲動面板中:這正是比較檢視器的核心;PDFium 元件透過簡單的物件模型來實現此功能,其中 擁有檔案,而

PDFium 元件

驗證壓縮的 PDF:物件和 XRef 串流

現代 PDF 將結構隱藏在壓縮的物件與 XRef 串流中。瞭解 Delphi 驗證器如何展開 ObjStm 並透過 PDFium 讀取 XRef 串流尾部。 您編寫了一個小型的驗證器。它開啟 PDF,尋找到末尾,找到 ,讀取偏移量,並期望定位到關鍵字 (其下方有一個固定寬度的交叉參照表)

PDFium 元件

PDFium 元件在 Delphi 中的 PDF/X 驗證

在 Delphi 中驗證可供列印的 PDF/X 檔案:PDFium 元件的 ValidatePdfX 會執行 ISO 15930 檢查,涵蓋 TrimBox、Trapped、OPI、LZW 以及字型內嵌等。 Delphi 的 PDFium 元件透過 驗證可供列印的 PDF/X 文件

PDFium 元件

為什麼驗證器會拒絕 PAdES 簽章:Delphi 中的 PDFium

為什麼 PDF 驗證器會拒絕 PAdES 簽章:零 ByteRange 欄位、缺失的 D: 日期前綴,以及增量更新後遺失的 /Encrypt 項目(結合 PDFium 元件) 在我們使用 Delphi 中的 PDFium 元件所偵錯的幾乎每一個案例中,驗證器拒絕 PAdES 簽章的原因通常是以下三者之一:

PDFium 元件

在 Delphi 中使用 PDFium 元件處理 PDF 附件:讀取、新增、刪除

PDFium 元件如何在 Delphi 中處理 PDF 檔案附件:AttachmentCount、Attachment、CreateAttachment、DeleteAttachment、路徑淨化,以及就地儲存 PDF 檔案附件儲存在文件的內嵌檔案樹中,大多數檢視器會將此結構呈現為迴紋針面板或附件側邊列;在