Reading PDF Font Properties with PDFium Component in Delphi
使用 PDFium Component 在 Delphi 中檢查 PDF 檔案內部所使用的各項字型資訊內容:讀取字形的字型家族名稱、基本名稱、粗細、斜體角度,以及是否已內嵌字型檔案
losLab 軟體開發部落格
Software Development Blog
使用 PDFium Component 在 Delphi 中檢查 PDF 檔案內部所使用的各項字型資訊內容:讀取字形的字型家族名稱、基本名稱、粗細、斜體角度,以及是否已內嵌字型檔案
在真正信任一份 PDF 檔案之前,應該先完整列舉其所有潛在風險面。了解 PDFium 如何在 Delphi 中讀取文件內的 JavaScript、啟動動作與簽章權限,供稽核作業使用
在 Delphi 中使用 PDFium 元件組合出一個可用的 PDF 檢視器:將 TPdf 連接到 TPdfView、載入與算繪文件,然後新增分頁、縮放與符合模式導覽 在 Delphi 中,PDF 檢視器可以歸結為兩個元件以及它們之間的連接; 擁有文件:它開啟檔案、對其進行解密,並回答有關頁數和中介資料的提問;
在 Delphi 中用 PDFium Component 把整個資料夾的掃描影像合併成一份 PDF:建立文件、每張影像各一頁、逐張縮放後存檔
使用 PDFium Component 在 Delphi 中將 PDF 頁面渲染為 JPEG 影像:把 DPI 換算為像素尺寸、把每一頁繪製到點陣圖,再用 TJPEGImage 編碼
in Delphi, build a PDF from nothing with PDFium Component: CreateDocument, AddPage, AddText, and CreatePath, plus the coordinate and font embedding rules that
在 Delphi 中使用 PDFium 建立螢光筆和底線註解:QuadPoints 順序、為什麼 FPDFAnnot_SetAttachmentPoints 傳回 false,以及 Append 的修復方法 Technical Article 在 Delphi 中使用 PDFium QuadPoints
在 Delphi 中診斷 pdfium.dll 載入失敗:修正 32/64 位元不符導致的 ERROR_BAD_EXE_FORMAT 193 錯誤、識別過期 DLL,並跨執行緒安全載入元件
在 Delphi 中偵測 XFA 表單,並用 PDFium Component 把 template、datasets 與 config 封包擷取成原始 XML——靜態封包讀取不需要 V8 執行環境
使用 PDFium Component 在 Delphi 中匯出與匯入 XFDF 表單資料與註解:ISO 19444-1 雙向轉換、18 種註解子類型,以及與地區設定無關的數值處理
使用 PDFium Component 在 Delphi 中擷取 PDF 內嵌影像:讀取 BitmapCount、逐一取得 Bitmap[]、處理靜默開啟失敗,並輸出為 JPEG 或 BMP
使用 PDFium Component 在 Delphi 中擷取 PDF 文字:透過 Character[] 存取原始字符、以 ReadablePageContent 取得結構化內容,並防範 Active 靜默失敗
強化 Pascal 版 PDFium Component 綁定程式碼的安全性:修正 cdecl 回呼機制、FPC Win64 指標截斷問題、所有權錯誤,以及其他 ABI 與記憶體安全缺陷
使用 PDFium Component 在 Delphi 與 Lazarus 中讀取 PDF 簽章:檢查 SubFilter、ByteRange 與 CMS 內容,並偵測 PAdES B-B 至 B-LTA 各基準等級
使用 PDFium Component 在 Delphi 中加入長期有效的 PAdES 簽章:RFC 3161 時間戳記、DSS 驗證存放區,以及適用 B-T、B-LT 與 B-LTA 的 DocTimeStamp
在 Delphi 中使用 PDFium 元件合併 PDF 檔案:ImportPages、頁面範圍字串、插入位置、損壞檔案的靜默失敗,以及表單欄位行為 PDFium 元件透過單一方法公開了 PDF 合併功能: ;該模式始終相同:建立一個空的目標文件、依序開啟每個來源檔案、呼叫 複製頁面、關閉來源檔案,然後重複該步驟;當迴
把多個 PDF 頁面統一排到同一張紙上、就地重新排序頁面顯示順序,或擷取指定的子集內容。了解 PDFium 在 Delphi 中的拼版與頁面移動 API,以及它們各自傳回的控制代碼
為什麼子字串鍵值尋找會毀壞 Delphi 中的 PDF 字典解析:依據 ISO 32000-1 的完整名稱 Token 匹配以及針對惡意 PDF 的資源限制 諸如 之類的子字串搜尋是讀取 PDF 字典的錯誤工具,因為 PDF 名稱鍵值(keys)共享前綴: 是 的前綴,而 是 的前綴
讓 Delphi 寫的 PDF 檢視器真的能與螢幕閱讀器合作:從標記結構樹擷取閱讀順序、跟著語音走的逐字標示游標,以及面對未標記 PDF 時該有的誠實退路
PDFiumPas 如何在 Delphi 中於 PDF 文件間嫁接 AcroForm 欄位:GraftPdfAcroForm 複製整個欄位物件圖、小工具頁面重新對映、嫁接對映表交易,以及故障封閉的各項上限
PDFiumPas 在 Delphi 中對 PDF 影像降取樣時,依量測結果選擇 box、雙線性、雙三次或 Lanczos 重取樣核心,並具備 alpha 感知的數學與嚴格的工作記憶體預算
在 Delphi 中打造一個 PDF 註記審閱面板:依頁面替標註建立索引、面對外觀串流的否決仍能存活下來,並在不留下殘影的情況下替註記改色或刪除它們
使用可取消的 Future 非同步物件,在 Delphi 中把耗時的 PDF 渲染作業完全移出 UI 執行緒之外執行,同時管理工作執行緒生命週期、取消機制、完成通知與安全的介面更新
PDFium Delphi 元件如何按水平帶渲染超大頁面:負 Y 偏移如何維持整頁幾何關係,以及 PNG 和 TIFF 如何串流輸出並控制峰值記憶體
緩慢的頁面渲染作業原本就不應凍結整個使用者操作介面,也不該被迫執行到底才能停止。了解 PDFium 的漸進式渲染如何在 Delphi 中透過 IFSDK_PAUSE 變成可隨時取消
說明為何直接從 widget 註解讀取 /V 值時,PDFium Component 會把核取方塊扁平化成未勾選狀態,原因是依 ISO 32000-1 規定 /V 其實屬於父欄位字典
PDFium Component 可在 Delphi 中以 CID Type 2 字型寫入字形層級文字,產生 CID 對 GID 與 ToUnicode 對應表,讓已整形文字保持可擷取
PDFium Component 依 X.690 11.6 的要求把 signedAttrs 排成 DER SET OF;自我驗證永遠抓不到第三方驗證器會拒絕的缺陷,因為兩端共用同一套編碼規則
PDFium 元件在各目標平台上尋找原生程式庫的有序搜尋鏈,以及目標巨集中一個大寫字母如何在區分大小寫的 Linux 檔案系統上讓整個查找無聲失靈,附探測程式做法與部署檢查清單的完整教訓
Delphi 與 FPC/Lazarus 之間四個隱藏差異會影響同一份 PDFium 程式碼:記錄暫存生命週期、範圍檢查、E2010 TBytes 轉型,以及 AnsiString 位元組遺失
PDFium Component 在 Delphi 中為 PDF 編輯加入文件層級的復原、取消復原與當機恢復功能,採用經驗證的快照與精簡的雙向差異記錄
說明 PDFium Component 如何在 Delphi 中直接從 TBytes 位元組範圍載入內嵌的 PDF 檔案內容,具備防溢位的邊界檢查機制,以及借用緩衝區的生命週期管理規則
FPDFText_GetUnicode 會傳回完整的 32 位元碼點,但 WideChar 只能容納 16 位元,因此 Delphi 中的 PDFium Component 可能損壞 emoji 與罕見中日韓表意文字
依照 ISO 32000-1 第 7.5.6 節的增量更新規範,Delphi 中的 PDFium Component 會拒絕以明文標記或 PAdES 簽章方式修補已加密的 PDF 檔案內容
PDFium 元件如何在剖析歐洲 eIDAS 信任清單之前先驗證其真偽,把合格狀態與一般憑證鏈信任分開記錄,按歷史時間評估服務狀態,並以單調更新不變式與無 DTD 剖析守住安全底線
PDFiumPas 會解析有效的 xref 修訂鏈與 Adobe Extension Level,讓 Delphi PDF 能以 1.3 至 1.7 之間的精確版本儲存,同時不破壞規範相容性
說明 PDFium Component 中 WaitForIdle 與 padSynchronize 回覆如何讓 Delphi 主執行緒陷入死結,並涵蓋佇列容量、關閉順序與 TPdf 所有權限制
在 Delphi 或 FPC 函式的傳回結果變數上直接使用 FillChar,會把受管理記錄整個歸零卻不釋放其中原有的字串內容資料,導致該函式在迴圈中反覆執行時持續洩漏記憶體使用空間
說明為何已填寫的 PDF 表單在 Acrobat 中顯示空白,以及修正方式:FormFill 設定、鍵盤欄位巡覽,以及 Delphi 檢視器中的 GenerateFormAppearances 呼叫時機
Delphi 與 FPC 版本的 PDF 檢視器中,三層巢狀的列印迴圈在點選 Cancel 後仍持續渲染,原因是 Free Pascal 會在迴圈進入時就先鎖定 for 迴圈的上限值
Free Pascal 下非 ASCII PDF 標題會在 XMP 資料包中變成無效 UTF-8;這裡解釋字串程式碼頁規則,以及 PDFium 中的 SetCodePage 修復
使用 PDFiumPas 在 Delphi 中寫出 ISO/TS 32003 AESV4-GCM 加密 PDF:R7 金鑰衍生、獨立 PDF MAC 完整性權杖與 ValidatePdfMac 狀態檢查
把 Delphi 的 PDF 檢視器移植到 Lazarus 與 Free Pascal:字串編碼陷阱、以程式碼建構表單、PDFium 二進位檔的載入,以及離開 Windows 之後的語音朗讀
PDFium VCL 在非 Windows 目標上經 libcurl 發送 RFC 3161 時間戳記查詢,動態繫結八個符號,另有兩個設定決定它在負載下會不會卡死;驗證不可編譯分支的受控副本手法也一併說明
為 Delphi PDF 檢視器同時加入深色模式與低視力閱讀輔助這兩種顯示模式選項:渲染後色彩反轉處理方式、兩種不同的灰階轉換方式,以及在任何背景下都能持續保持清楚可見的覆疊色彩效果
PDFium VCL 在執行階段以 dlopen 與 dlsym 繫結 Security framework 符號,讓 macOS Keychain 簽署後端在任何平台都編得過,並指名每一個解析不到的符號
標記內容是標記 PDF 與 PDF/UA 背後的 BDC 與 EMC 成對運算子,PDFium Component 從普通 Delphi 程式碼讀取標記名稱強型別屬性表與 MCID,並能把結構樹接回它所描述的頁面內容,供可存取性檢查修復與稽核使用 標記內容是 ISO 32000-1 §14.6
說明 PDF 列向量慣例如何讓 Delphi 中的 Multiply 變成後置運算、PreMultiply 變成前置運算,為何 PreTranslate 需要線性部分,以及樞軸輔助函式的組合方式
PDFium Component 在 Delphi 中重建 ISO 32000 名稱樹與編號樹:輸出平衡節點與正確的 /Limits,根物件編號維持不變,儲存後重新讀回逐筆驗證才完工
了解為何單靠 FlateDecode 無法還原 PDF 物件串流的原始資料,以及 PDFiumPas 如何在 Delphi 中套用 PNG 與 TIFF Predictor 進行重建
PDFium Component 可從 Delphi 為掃描 PDF 加上隱形 OCR 文字層,透過裝置到頁面的變換來對應文字四邊形,不會動到影像
PDFium VCL 把 OpenSSL CMS 驗證器接進 PAdES 驗證;底下有三種 OpenSSL 行為,不處理就會默默給出錯誤的判定,介面則拆出三個獨立判定與兩種驗證形狀,後端可按平台替換
PDFiumPas 的 SaveAsRedacted 如何在 Delphi 中於運算子層級分割部分被涵蓋的文字、矩形路徑與軸對齊影像,再以範圍感知的方式剪除未被參照的資源名稱與不可達物件
當 pdfium.dll 的版本比綁定程式碼還舊時,單一缺少的匯出函式就足以讓整個載入程序失敗。了解 PDFium Component 如何在 Delphi 中為選填匯出設關卡並安全降級
PDFiumPas 在 Delphi 中如何於頁面移動或消失後重寫 PDF 大綱項目:帶正負號的 /Count、兄弟鏈結修補、ApplyPageMap 頁面對映、懸空項目處置,以及經過獨立重載驗證的增量儲存
為何在 Delphi 中 FPDFPage_TransFormWithClip 之後 PDFium 頁面物件控制代碼讀到的是舊座標,以及重新載入順序與 getter 崗哨值的修法 當 重寫一頁時,你手上已持有的每個 控制代碼,描述的依然是變換之前那次剖析。Delphi 與 C++Builder 版的 PDFium
用一份快照政策約束 Delphi 裡每個 PDF 剖析器:PDFium Component 把遞迴深度、token 數、物件數、解碼位元組、擴充比與執行期限上限集中在單一設定,一次套用到整個程序
使用 PDFium Component 在 Delphi 中對收到的 PDF 進行分流檢查:檢視 Info 字典與 XMP 中介資料、找出加密、JavaScript 與 XFA,及早路由高風險檔案
使用 PDFium Component 在 Delphi 中產生通過 veraPDF 驗證的 PDF/A 封存檔:SaveAsPdfA、XMP 與 ICC OutputIntent 注入、a/b/u 一致性等級,以及常見陷阱
為什麼 PDF/A 檔案會卡在 ISO 19005-1 Annex C 的容器限制或符號式 TrueType 字型帶有的 Encoding 項目,PDFium Component 在 Delphi 中不載入 PDFium DLL 就能從位元組掃描路徑回報這兩類缺陷並附帶具體的補救建議
使用 PDFium 元件 (PDFium Component) 在 Delphi 中建置 PDF/A 預檢檢查器:透過標記掃描 (token-scan) 29 個驗證問題、感知各部分的門檻 (part-aware gating)、物件串流 (object streams),且無需進行完整的內容解析
PDFDocEncoding 的特殊字元區塊位在 $80 而不是 $7F;只要偏移一列,PDFium Component 的 FDF 匯入就會把每個符號解碼成表格裡的下一個鄰居,而且完全不會報錯
PDF/R 讓每一頁掃描只帶一張條帶影像,沒有文字也沒有字型,PDFium Component 在 Delphi 與 C++Builder 中驗證 ISO 23504-1 一致性並回報每項拒絕的具體成因與對應的補救路徑 PDF/R,標準化為 ISO 23504-1,是針對掃描文件的 PDF
使用 PDFium VCL 走訪即時的 PDF 標籤樹,以捕捉位元組等級 (byte-level) 掃描遺漏的 PDF/UA 內容錯誤:圖形替代文字 (Figure Alt)、公式文字 (Formula text) 以及獨一無二的註解識別碼 (Note IDs)。 您的預檢報告指出檔案符合 PDF/UA 標準
使用 PDFium VCL 在 Delphi 中產生並驗證 PDF/VT-1 變動資料列印檔案:DPart 樹狀結構、強制性的 PDF/X-4 配對規範,以及 ISO 16612-2 相關陷阱
PDFiumPas 在 Delphi 中透過 PKCS#11 權杖簽署 PAdES:Windows 上 CK_ULONG 為 4 位元組、LP64 上為 8 位元組,打包不同時函式表也會移位
PDFium 元件如何讓每個塑形呼叫走單一可安裝後端:Windows 用 Uniscribe,Free Pascal 用執行期動態繫結的 HarfBuzz,程式庫缺席只回報能力縮減而不中斷
使用 PDFium Component 在 Delphi 中自動化 PDF/A 與 PDF/UA 預檢流程:批次迴圈、結束代碼、JSON 與 HTML 報告,以及為何無檢測結果不等於通過
PDFium Component 可在 Delphi 中從 PDF 頁面建立語意重排模型,並匯出含標題、清單與偵測出表格的自成一體 HTML
透過 PDFiumPas 的 PreparePadesRemoteSignature 與 CompletePadesRemoteSignature,在 Delphi 中以 HSM 或雲端金鑰簽署 PDF,並保留可延續的簽署工作階段
使用 PDFium 讓 Delphi PDF 檢視器的縮放與捲動操作全程能隨時保持流暢:正確的快取鍵設計方式、點陣圖所有權管理、漸進式渲染機制,以及高 DPI 情境下的記憶體預算控制
PDFiumPas 的渲染鎖可保護光柵化過程不受並行的 UnloadPage 或 ReloadPage 干擾,但六個 TPdf 與 TPdfView 呼叫在 v2.26.0 之前都遺漏了這道鎖定
以 PDFium Component 強化 Delphi 的 PDF 預覽窗格:載入時停用 JavaScript、攔截連結點擊、過濾附件,並讀取加密權限旗標
PDFiumPas 如何在不載入整個檔案的情況下讀取單一 PDF 物件:稀疏 xref 區段描述元、延遲物件串流、混合式 XRefStm、1 MiB 有界讀取視窗,以及不隨尾頁物件 /Size 成長的記憶體用量
使用 PDFiumPas 的 GetStructuredText 在 Delphi 中將 PDF 文字擷取為區塊、行與樣式化片段:可選閱讀順序、標記強化資訊與失效即中止的預算
PDFium Component 讓 Delphi 應用程式能為未內嵌的 PDF 字型自行提供字型位元組,以確定性的供應器取代主機端的字型對應
PDFium Component 可在 Delphi 中偵測 PDF 頁面上以框線或以留白對齊呈現的表格,解析合併儲存格與跨列跨欄範圍,並把資料列匯出為 CSV 或 JSON
PDF 版面配置需要先知道字串寬度才能繪製。了解 PDFium Component 如何在 Delphi 中不碰頁面的情況下量測文字,用來做自動換行。 把文字放到 PDF 頁面上的呼叫很直覺。您把字串、字型、大小和位置傳給 ,字形就會出現。它不會告訴您該字串一旦繪製出來會有多寬,也不會把長字串拆成多行
PDFium 在 Delphi 中會快取 FPDF_TEXTPAGE 控制代碼;經過 AddText、SetText 或 AddPath 編輯後便會失效,須在下次文字查詢前重新載入
使用 PDFium 修正 Delphi 中縮圖重複旋轉造成的顯示問題:說明渲染旋轉參數為何是疊加計算方式,以及 90 或 270 度頁面為何需要交換寬高後才能算出正確的適合縮放比例
為什麼把 PDF 文字排版搬離 Windows 意味著自己實作 UAX #9 雙向演算法,以及會把增補平面字元拆成未配對代理、或讓重排整段悄悄失效的兩個典型錯誤,與字碼點單位重排等對應修法
PDF 文字頁面本身其實沒有行物件的概念。了解 PDFium Component 如何運用 FPDFText_GetCharBox 幾何資料建構出視覺行,並讓所有選取路徑共用同一個輔助函式
說明 PDFium Component 如何在 Delphi 中將表單欄位索引與註解索引完全分開處理:篩選 Widget 子型別、在原生層做索引映射,並修復無介面環境下的表單焦點問題
使用 PDFium 詞彙方塊在 Delphi 中同步文字轉語音功能與頁面單字醒目標示效果:TrackReadingWordAt 方法、渲染順序處理、自動捲動,以及 Unicode 相關陷阱
PDFium Component 只把 XFA 欄位編輯寫入記憶體緩衝區,因此 Delphi 應用程式儲存後會遺失欄位值;AcroForm 可以持續儲存,而 XFA 不可 PDFium Component 中的 會寫入目前取得焦點的表單欄位即時編輯緩衝區;對於 XFA 表單,這個緩衝區永遠不會進入會被序列化到磁碟的
使用 PDFium Component 從 Delphi 中列印 PDF:以 RenderPage 與 rePrinting 渲染頁面、透過 StretchDIBits 傳送點陣圖,並處理紙張縮放與旋轉
浮水印或標誌只畫一次,就把它放上每一頁。看 PDFium 的 Form XObject 如何在 Delphi 中做出可重複使用的頁面圖章,以及控制代碼的生命週期規則
使用 PDFium Component 在 Delphi 中執行 AcroForm JavaScript:說明欄位計算為何靜默無反應、V8 DLL 相依需求,以及能否決高風險 PDF 動作的主機事件
在 Delphi 中使用 PDFium 元件為 PDF 加入 PAdES B-B 數位簽章:自建 SHA-256、CMS,以及用於位元組級簽署的 Windows CNG 後端 PDFium 元件透過其 方法為 PDF 進行 PAdES B-B 數位簽章:它載入文件、計算已簽署位元組範圍的雜湊值、建立 CAdES
如何在 Delphi 中使用 PDFium 元件按頁面、範圍或書籤分割 PDF:TPdf.ImportPages、CreateDocument、SaveAs 結果檢查,以及 Active 旗標重設 PDFium 元件為您提供了一個用於分割 PDF 的方法: ;其他的一切操作,不論您是隔離單一頁面、在任意邊界上進行剪切,
使用 TStream 配接器串接 PDFium 的 FPDF_FILEACCESS 回呼,在 Delphi 中依需求串流讀取數 GB 大小的 PDF,並強制遵守 4 GiB 檔案大小上限
使用 PDFium Component 在 Delphi 中建立並排比對用的 PDF 檢視器:採獨立面板設計、各自透過 TPdfView.Zoom 屬性控制縮放比例,並同步頁面瀏覽位置
現代 PDF 將結構隱藏在壓縮的物件與 XRef 串流中。瞭解 Delphi 驗證器如何展開 ObjStm 並透過 PDFium 讀取 XRef 串流尾部。 您編寫了一個小型的驗證器。它開啟 PDF,尋找到末尾,找到 ,讀取偏移量,並期望定位到關鍵字 (其下方有一個固定寬度的交叉參照表)
在 Delphi 中驗證可供列印的 PDF/X 檔案:PDFium 元件的 ValidatePdfX 會執行 ISO 15930 檢查,涵蓋 TrimBox、Trapped、OPI、LZW 以及字型內嵌等。 Delphi 的 PDFium 元件透過 驗證可供列印的 PDF/X 文件
PDFium Delphi 元件如何在 macOS 透過 CMSDecoder 和 SecTrust 驗證 PDF 簽章:合併 ByteRange、狀態映射與 CFRelease 規則
說明 PDF 驗證工具為何會拒絕 PAdES 簽章:全零的 ByteRange 欄位、缺少 D: 日期前綴,以及增量更新後遺失的 /Encrypt 項目,並結合 PDFium Component 說明
使用 PDFium Component 在 Delphi 中管理 PDF 附件:AttachmentCount、Attachment、CreateAttachment、DeleteAttachment、安全路徑處理,以及原地儲存