PDFiumVCL 發布說明
PDFiumVCL 使用者可見功能、修復、檢視器改進、文件產生、PDF/A 輸出、彩現和文件更新的版本歷史。
Version 1.39.52
變更 (Changed)
- 增強
Demo\Lazarus\CreatePDF,入門範例現在會產生包含 vector paths、table content、embedded image、text annotation、rotated text 和更清楚 document-building walkthrough 的兩頁 PDF。 - 為所有 Delphi、C++Builder 和 Lazarus demo folder 新增美觀的
README.html頁面,並將剩餘 text-only demo README 替換為 browser-readable guide。 - 更新
TPdf.AboutInfo、Lazarus package metadata 和 installer version metadata 到 1.39.52。
Version 1.39.51
- 增強
Demo\Delphi\PreflightReportClibatch summary,現在會按 selected standards 彙總 Pass、Action required 和 Review 三類 standard status totals。 - TXT / HTML / JSON / CSV summary 的 per-file rows 現在包含 action-required count 與 review count,CI artifacts 不必開啟每個 generated report 也能快速檢查狀態分佈。
- 更新
TPdf.AboutInfo、Lazarus package metadata 和 installer version metadata 到 1.39.51。
Version 1.39.50
- 增強
Demo\Delphi\PreflightReportClidirectory batch mode,batchdir=folder現在會先收集 discovered PDF paths、排序,然後按穩定順序生成 reports。 - Recursive directory scans 現在會生成可復現的 report order 和 summary rows,而顯式
batch=list.txtprocessing 繼續保留 list file order。 - 更新
TPdf.AboutInfo、Lazarus package metadata 和 installer version metadata 到 1.39.50。
Version 1.39.49
- 增強
Demo\Delphi\PreflightReportClibatch summary,現在會記錄 run settings:source kind、source path、recursive state、output directory、report format、selected standards 和failon=mode。 - JSON summary 新增
runobject,TXT 與 HTML summary 顯示 run settings section,CSV rows 重複同一組 audit columns,方便 spreadsheet 和 CI pipelines 使用。 - 更新
TPdf.AboutInfo、Lazarus package metadata 和 installer version metadata 到 1.39.49。
Version 1.39.48
- 增強
Demo\Delphi\PreflightReportClibatch output naming,當 duplicate input file names 共用同一個outdir=時,生成的 reports 不再互相覆蓋。 - Batch runs 會在同一次執行中已分配的 report path 衝突時追加
-2、-3及後續字尾,並在 summaries 中記錄最終 collision-safe report path。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,以報告 1.39.48。
Version 1.39.47
- 增強
Demo\Delphi\PreflightReportClibatch summaries,使 TXT 與 JSON 輸出現在包含 total files、processed files、failed files、issues 與failon=matches 的 aggregate totals。 - CSV summaries 繼續保持純 row table,相容現有 consumers;HTML summaries 繼續在 dashboard header 中顯示同一組 aggregate metrics。
- 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,以報告 1.39.47。
Version 1.39.46
- 增強
Demo\Delphi\PreflightReportCli,加入summary=batch.html/.htm,讓 batch runs 可在 TXT / CSV / JSON manifests 之外輸出 browser-readable dashboard。 - HTML summaries 會顯示 total、processed、failed、issue 與
failon=match metrics,並逐項列出 input、report links、status、counts 與 error text。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,以報告 1.39.46。
Version 1.39.45
- 增強
Demo\Delphi\PreflightReportCli,加入batchdir=folder與recursive,讓指令碼可直接掃描 PDF folders,而不必先寫 list file。 - Directory batch mode 複用 list-based batch mode 的
outdir=、summary=、standards=與failon=行為;non-recursive 只掃描選定 folder,recursive會包含 subfolders。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,以報告 1.39.45。
Version 1.39.44
- 增強
Demo\Delphi\PreflightReportCli,加入summary=batch.csv|json|txt,讓 batch runs 可在 per-file reports 旁輸出 machine-readable manifest。 - Batch summaries 包含每個 input path、report path、status、standard count、passed count、issue count、
failon=match state 與 error text,便於 CI jobs 和外部指令碼使用。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,以報告 1.39.44。
Version 1.39.43
- 增強
Demo\Delphi\PreflightReportCli,加入batch=list.txt與outdir=reports,方便指令碼在一次執行中為一組 PDF 檔案生成 preflight reports。 - Batch mode 會跳過空行和
#註釋行,按輸入 PDF 派生每個.preflight.<ext>report name,在單個檔案失敗後繼續處理,並在返回前彙總 processed 與 failed files。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,以報告 1.39.43。
Version 1.39.42
- 增強
Demo\Delphi\PreflightReportCli,新增failon=none|issues|action|review,使 CI jobs 可把生成的 preflight results 轉換為確定性的 exit codes。 - CLI 會在 report file 和 optional attached-report PDF 生成完成後,根據選中的
failon=rule 命中情況返回 exit code 2;runtime errors 仍返回 exit code 1。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,以報告 1.39.42。
Version 1.39.41
- 增強
Demo\Delphi\PreflightReportCli,新增attach=output.pdf,可把生成的 preflight report 作為 document-level attachment 嵌入新的 PDF copy。 - CLI 會保留落盤的 TXT / HTML / Markdown / JSON / CSV report file,並拒絕把附件寫回原始 input PDF path,以降低誤覆蓋風險。
- 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,以報告 1.39.41。
Version 1.39.40
- 新增
Demo\Delphi\PreflightReportCli,作為 Delphi console companion,可在不開啟 viewer 的情況下以 scriptable workflow 生成FPdfPreflightReport。 - CLI 支援無引數 sample creation,以及 input / output arguments、optional password、
text/html/md/json/csvoutput formats,並可通過standards=filtering 選擇 PDF/A、PDF/UA、PDF/E、PDF/X、PDF/R 與 PDF/VT。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,以報告 1.39.40。
Version 1.39.39
- 增強
FPdfPreflightReport,新增TPdfPreflightReport.ToMarkdown與SaveMarkdownToFile,使 preflight reports 可匯出為適合 issue tracker 的 Markdown。 - 更新 Delphi、C++Builder 與 Lazarus
PreflightReport示例,在現有 TXT / HTML / JSON / CSV workflow 之外增加 Markdown preview switching 與 Save MD actions。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,以報告 1.39.39。
Version 1.39.38
- 增強 Delphi、C++Builder 與 Lazarus
SecurityAudit示例,在現有 TXT save / copy workflow 之外增加 JSON audit report export。 - JSON report 包含
format、generatedAt、summary、findingCount,以及帶 severity、area、detail 欄位的結構化findingsrows。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,以報告 1.39.38。
Version 1.39.37
- 增強
FPdfPreflightReport,新增TPdfPreflightReport.ToCsv與SaveCsvToFile,使 preflight reports 可以匯出為 spreadsheet-friendly CSV。 - 更新 Delphi、C++Builder 與 Lazarus
PreflightReportsamples,在現有 TXT / HTML / JSON workflow 之外增加 CSV preview switching 與 Save CSV actions。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.37。
Version 1.39.36
- 增強
FPdfPreflightReport,新增TPdfPreflightReport.IssueCategoryCounts以及可複用的TPdfPreflightIssueCategoryCount和TPdfPreflightIssueCategoryCounts型別,用於按 category 聚合 marker-level issues。 - 更新
TPdfPreflightReport.ToText、ToHtml與ToJson,使生成的 PreflightReport 輸出在 per-standard rows 與 detailed issue recommendations 之外包含 issue-category count summaries。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.36。
Version 1.39.35
- 將已擴充套件的
PrintDialogsample 在 Delphi、C++Builder 與 Lazarus 三端重新命名為PrintPreferences,讓 demo name 與 PDF author print preferences、N-up printing、odd / even filtering、grayscale、cell border 和 duplex mapping workflow 對齊。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.35。
Version 1.39.34
- 增強
Demo\Delphi\PrintPDF,支援拖放載入 PDF,並將已有Demo\CBuilder\PrintPDFworkflow 與 Delphi、Lazarus PrintPDF 示例一起寫入文件。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.34。
Version 1.39.33
- 新增
Demo\CBuilder\SplitView,補齊 Delphi、C++Builder 與 Lazarus 三端 SplitView sample matrix。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.33。
Version 1.39.32
- 新增
Demo\Lazarus\SplitView,讓 side-by-side PDF comparison 覆蓋 Lazarus,包含 two- or three-pane layouts、active-view navigation、synchronized commands、zoom presets 與 rotation。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.32。
Version 1.39.31
- 新增
Demo\Lazarus\PrintPDF,讓標準 PDF print workflow 覆蓋 Lazarus,包含 preview navigation、page ranges、copies、collate mode、progress 與 cancellation。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.31。
Version 1.39.30
- 新增
Demo\Lazarus\FontProperties,補齊 Delphi、C++Builder 與 Lazarus 三端 FontProperties sample matrix。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.30。
Version 1.39.29
- 新增
Demo\CBuilder\FontProperties,讓 indexed character 與 font metadata 檢查在 Delphi sample 之外也覆蓋 C++Builder。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.29。
Version 1.39.28
- 新增
Demo\Delphi\ExtractTextPages,補齊 Delphi、C++Builder 與 Lazarus 三端 per-page text extraction sample matrix。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.28。
Version 1.39.27
- 新增
Demo\Lazarus\PrintDialog,補齊 Delphi、C++Builder 與 Lazarus 三端 PrintDialog sample matrix。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.27。
Version 1.39.26
- 新增
Demo\CBuilder\PrintDialog,讓 N-up printing 與 PDF author print preferences workflow 在 Delphi sample 之外也覆蓋 C++Builder。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.26。
Version 1.39.25
- 新增
Demo\CBuilder\ViewerInteractionLab,補齊 Delphi、C++Builder 與 Lazarus 三端 ViewerInteractionLab sample matrix。 - 更新 library build workflow 與 Win64 C++Builder package outputs,使
TPdfViewviewer interaction methods 可在 Win64 demos 中正確連結。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.25。
Version 1.39.24
- 新增
Demo\Lazarus\ViewerInteractionLab,讓 focused viewer interaction workflow 在 Delphi sample 之外也覆蓋 Lazarus。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.24。
Version 1.39.23
- 新增
Demo\Lazarus\SearchAndSelect,補齊 Delphi、C++Builder 與 Lazarus 三端 SearchAndSelect sample matrix。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.23。
Version 1.39.22
- 新增
Demo\CBuilder\ContentExtractionLab與Demo\Lazarus\ContentExtractionLab,讓 multi-category content extraction workflow 覆蓋所有支援的 demo IDE。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.22。
Version 1.39.21
- 增強
Demo\Delphi\PreflightReport、Demo\Lazarus\PreflightReport與Demo\CBuilder\PreflightReport,新增 preview format selector,讓使用者在儲存報告前可檢查 text 或 JSON output。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.21。
Version 1.39.20
- 為
FPdfPreflightReport增加 JSON 匯出,可通過TPdfPreflightReport.ToJson與SaveJsonToFile生成機器可讀的 summary、per-standard status / priority、next action 與 issue detail。 - 更新
Demo\Delphi\PreflightReport、Demo\Lazarus\PreflightReport與Demo\CBuilder\PreflightReport,在 TXT / HTML 匯出之外加入 Save JSON 操作。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.20。
Version 1.39.19
- 增強
FPdfPreflightReport,在 TXT / HTML report 中加入TPdfPreflightStatus、issue category、per-standard priority 與 next-action guidance。 - 更新
Demo\Delphi\PreflightReport、Demo\Lazarus\PreflightReport與Demo\CBuilder\PreflightReport,summary grid 現在顯示 status、priority、issue count 與 next action。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.19。
Version 1.39.18
- 新增
Demo\Lazarus\SecurityAudit,補齊 Delphi、C++Builder 與 Lazarus 的 read-only PDF risk-surface audit workflow 示例矩陣。 - Lazarus 示例列舉 permissions、attachments、JavaScript actions、URI / Launch link annotations、web links、signatures、XFA state、V8 / XFA helper availability 與 unsupported-feature callbacks,並可把 finding list 儲存或複製為 TXT report。
- 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.18。
Version 1.39.17
- 新增
Demo\CBuilder\SecurityAudit,在現有 Delphi 示例之外,把只讀 PDF risk-surface audit workflow 帶到 C++Builder。 - C++Builder 示例列舉 permissions、attachments、JavaScript actions、URI / Launch link annotations、web links、signatures、XFA state、V8 / XFA helper availability 與 unsupported-feature callbacks,並可把 finding list 儲存或複製為 TXT report。
- 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.17。
Version 1.39.16
- 新增
Demo\CBuilder\SearchAndSelect,在現有 Delphi 示例之外,把獨立 SearchAndSelect viewer workflow 帶到 C++Builder。 - C++Builder 示例可建立或開啟 PDF,按全頁列出帶 page / character-index preview 的 matches,支援 Previous / Next 與 double-click navigation,並用
HighlightSearchText高亮當前頁 matches。 - 示例也暴露
AllowUserTextSelection、SelectedText、SelectAll、CopySelectionToClipboard、ClearSelection、OnSelectionChange與 spreadDisplayMode選項;版本後設資料同步為 1.39.16。
Version 1.39.15
- 新增
Demo\CBuilder\WatermarkStamp,補齊 reusable Form XObject watermark 與 stamp workflows 的 Delphi、Lazarus、C++Builder 示例矩陣。 - C++Builder 示例會建立 target 與 stamp PDF,通過
CreateXObjectFromPage複用 stamp page,應用TPdfMatrixtransforms,並儲存 centered watermarks、corner stamps 與 page number labels。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.15。
Version 1.39.14
- 新增
Demo\Lazarus\WatermarkStamp,把可複用 Form XObject watermark 與 stamp workflow 帶到 Lazarus。 - Lazarus 示例會建立 target 與 stamp PDF,通過
CreateXObjectFromPage複用 stamp page,應用TPdfMatrixtransforms,並儲存 centered watermarks、corner stamps 與 page number labels。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.14。
Version 1.39.13
- 新增
Demo\CBuilder\PreflightReport,補齊可複用FPdfPreflightReportworkflow 的 Delphi、Lazarus、C++Builder 示例矩陣。 - C++Builder 示例使用
FPdfPreflightReport.hpp生成 standard summaries、TXT report previews、TXT / HTML report files,並提供 Open Last Report 行為。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.13。
Version 1.39.12
- 新增
Demo\Lazarus\PreflightReport,把 PDF/A、PDF/UA、PDF/E、PDF/X、PDF/R、PDF/VT preflight report workflow 帶到 Lazarus。 - Lazarus 示例可開啟或建立 PDF、選擇目標 standards、預覽 summary rows 與 TXT report output、儲存 TXT / HTML reports,並開啟最近一次儲存的 report。
- 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.12。
Version 1.39.11
- 增強
Demo\Delphi\SearchAndSelect,新增全頁搜尋結果列表,記錄 page number、character index 與 preview text。 - 新增 Previous / Next match navigation 與 double-click result jumping,同時保留當前頁
HighlightSearchText行為。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.11。
Version 1.39.10
- 增強
Demo\Delphi\SecurityAudit,新增 Save Report 與 Copy Report 操作,可將當前 summary 和 finding rows 匯出為 TXT audit report。 - 當 audit panel 被 reset 時,示例現在會清除 report export state,確保複製或儲存的 reports 與可見 findings 一致。
- 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.10。
Version 1.39.9
- 增強
Demo\Delphi\ContentExtractionLab,新增 source-PDF save、report copy-to-clipboard 以及 all / none category selection 操作。 - 當 category selection 變化時,示例現在會讓當前 report 失效,確保 TXT / JSON exports 與可見 extraction scope 一致。
- 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.9。
Version 1.39.8
- 新增
Demo\Delphi\ContentExtractionLab,提供統一的 content extraction workflow sample,覆蓋 document metadata、page text、page objects、images、attachments、links、annotations、bookmarks 和 font / character metrics。 - 該示例可開啟現有 PDF,或建立包含 text、image、attachment、annotation 內容的 synthetic PDF,然後生成 summary rows 以及詳細 TXT / JSON reports。
- 更新
TPdf.AboutInfo、Lazarus package metadata 和 installer version metadata,使其報告 1.39.8。
Version 1.39.7
- 新增
Lib\FPdfPreflightReport.pas,提供可複用報告 helper,將ValidatePdfA、ValidatePdfUa、ValidatePdfE、ValidatePdfX、ValidatePdfR、ValidatePdfVT統一包裝為TPdfPreflightReport物件。 - 新增
Demo\Delphi\PreflightReportworkflow 示例,可開啟或建立 PDF、選擇目標 standards、預覽 summary rows 與 issue recommendations,並儲存 TXT 或 HTML 報告。 - 生成的報告會明確說明內建校驗的 marker-level validation 邊界,方便應用在需要時配合專用 content-level preflight tools。
- 更新
TPdf.AboutInfo、Lazarus package metadata、package project lists 與 installer version metadata,使其報告 1.39.7。
Version 1.39.6
- 新增
Demo\Delphi\SearchAndSelect,這是一個聚焦 search highlighting、text selection、selected-text preview、copy、clear 與 spread display modes 的 viewer workflow 示例。 - 該示例展示
HighlightSearchText、match-case / whole-word 搜尋選項、AllowUserTextSelection、SelectedText、SelectAll、CopySelectionToClipboard和ClearSelection,不新增庫 API。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.6。
Version 1.39.5
- 擴充套件
Demo\Delphi\ViewerInteractionLab,形成 SearchAndSelect 風格的 viewer UX 示例,包含HighlightSearchText、match-case / whole-word 選項、選中文本預覽,以及既有 selection / clipboard controls。 - 擴充套件
Demo\Delphi\PrintDialog,用於檢查 PDF author print preferences:PrintCopies、PrintPageRanges、PrintScaling、PrintPaperHandling,並顯示SetPdfPrintPaperHandlingDevModeduplex mapping。 - 新增
Demo\Delphi\SecurityAudit,這是一個只讀 risk-surface 示例,會列出 permissions、attachments、document JavaScript、URI / Launch links、web links、signatures、XFA state,以及 V8 / XFA helper availability。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.5。
Version 1.39.4
- 新增
Demo\CBuilder\ImageToPDF與Demo\Lazarus\ImageToPDF,補齊 Delphi、C++Builder、Lazarus 三端 ImageToPDF 示例矩陣。 - 新示例展示多圖片選擇、選中圖片預覽、每張圖片生成一個 PDF 頁面、A4 portrait / landscape 頁面尺寸選擇、居中縮放放置、逐圖片進度,以及儲存後開啟生成的 PDF。
- 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.4。
Version 1.39.3
- 新增
Demo\CBuilder\BatchExport,讓 C++Builder 與既有 Delphi、Lazarus 示例一樣覆蓋多檔案 PDF 轉 JPG 匯出工作流。 - 該示例展示
LoadCustomDocument、IPdfCancellationTokenSource、流式TFileStream輸入、每檔案與每頁進度、取消處理、DPI / quality / password 輸入,以及完成後開啟輸出目錄。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.3。
Version 1.39.2
- 新增
Demo\Delphi\WatermarkStamp,這是一個可執行的 Form XObject 工作流示例,會建立目標 PDF 與可複用 stamp PDF,並在每一頁應用居中水印、右上角蓋章和頁碼標籤。 - 該示例演示
CreateXObjectFromPage、InsertFormObjectFromXObject、TPdfMatrix和FPDFPageObj_SetMatrix,不新增庫 API。 - 更新
Docs\en-us\Examples.html,在向FPDFPageObj_SetMatrix傳遞矩陣時使用當前的TPdfMatrix.Handle模式。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.2。
Version 1.39.1
- 新增
Demo\Delphi\ViewerInteractionLab,集中演示TPdfView的 display modes、fit modes、page colors、rotation、user text selection、clipboard actions 與DeviceToPage座標反饋。 - 新增
Demo\CBuilder\StandardsLab/Demo\Lazarus\StandardsLab,讓 Lazarus 使用者也能執行 PDF/A、PDF/UA、PDF/E、PDF/X、PDF/R、PDF/VT 校驗與 marker-output 工作流。 - 在
Lib\37.0\PDFiumVcl.dprojandLib\FPC\PDFiumLaz.lpk中列出 standards 單元,並移除 DelphiSplitView示例中重複的Winapi.ShellAPIimport 以修復構建。 - 修復
BatchExport、PDFViewer、MultiPageViewer與SplitView中的 Delphi demo 批次構建阻塞,且不改變其執行行為。 - 修復
PDFViewer與MultiPageViewer的 C++Builder demo 批次構建相容性:在當前 project mode 下將nullptr改為NULL。 - 更新
TPdf.AboutInfo、Lazarus package metadata 與 installer version metadata,使其報告 1.39.1。
Version 1.39.0
- 新增
Demo\Delphi\StandardsLab,這是一個可執行的標準工作流示例:載入或建立 PDF,執行ValidatePdfA、ValidatePdfUa、ValidatePdfE、ValidatePdfX、ValidatePdfR、ValidatePdfVT,並在同一列表中顯示檢測到的 conformance、通過狀態和 issue 數量。 - StandardsLab 的儲存按鈕會呼叫
SaveAsPdfA、SaveAsPdfUa、SaveAsPdfE、SaveAsPdfX、SaveAsPdfR、SaveAsPdfVT,無需編寫自定義測試程式即可檢視 PDF 標準 marker 輸出流程。 - 更新
TPdf.AboutInfo、Lazarus 包後設資料與安裝器版本後設資料到 1.39.0。
Version 1.38.0
TPdfView搜尋與文本選擇覆蓋層現在使用真正的 alpha blending,而不是邏輯 mask 繪製,因此高亮下方的頁面內容會被保留。- 新增
SetPdfPrintPaperHandlingDevMode,可將TPrintPaperHandling對映到 WindowsDEVMODE.dmDuplex值:DMDUP_SIMPLEX、DMDUP_HORIZONTAL、DMDUP_VERTICAL。 TPdfView.SmoothScroll現在會用 timer-driven segments 對 line/page scrollbar commands 做動畫;thumb tracking 仍保持即時響應。- 更新
TPdf.AboutInfo與安裝器版本後設資料到 1.38.0。
Version 1.37.0
TPdf新增例項級渲染鎖,序列化RenderPage、RenderTile、RenderPageProgressive、頁面過載與文件解除安裝路徑。應用現在可以更實際地通過共享元件做 worker 渲染,但仍需自行協調文件修改與生命週期。- 修復 zero-copy bitmap 包裝器:遇到 bottom-up
TBitmapDIB 時改走 PDFium 自有緩衝並在結束後 copy out,消除 VCL 渲染測試中的 stride 破壞 / access violation。 - 收緊
TPdfView選區行為:AllowUserTextSelection只限制使用者輸入,程式碼級選區 API 仍會繪製;SelectAll改按真實可見 spread 選擇,封面頁不再誤選第 2 頁。Delphi、Lazarus、C++Builder 測試同步擴充套件。 - 更新
TPdf.AboutInfo與安裝器版本後設資料到 1.37.0。
Version 1.36.0
- 啟用
TPdfView終端使用者文本選擇:v1.17.0 預留的AllowUserTextSelection現在驅動完整拖選流程,支援滑鼠拖選、雙擊詞、三擊行、Ctrl+A、Ctrl+C與Shift+arrows。 - 新增
SelectionColor、OnSelectionChange與程式碼級選擇 API:HasSelection、SelectionCharCount、SelectedText、ClearSelection、SelectAll、CopySelectionToClipboard。 - spread 顯示模式支援跨可見頁選擇,預設右鍵 Copy 選單會在宿主未指定
PopupMenu時自動掛接;切換文件、頁碼、Active 或 DisplayMode 時會清除選區。 - 擴充套件 Delphi、Lazarus、C++Builder 迴歸測試,覆蓋選擇屬性、滑鼠路徑、鍵盤快捷鍵、預設彈出選單、clipboard round-trip 與 spread 選擇。
Version 1.35.0
- 新增 PDF/VT (ISO 16612-2:2010) 標記注入支援:TPdf.SaveAsPdfVT 將當前文件提升為符合 PDF/VT-1 或 PDF/VT-2 的檔案(可變資料與事務性印刷的 PDF 子集)。PDF/VT 基於 PDF/X-4 構建 —— ISO 16612-2 §6.2.1 要求每個 PDF/VT-1 檔案也必須符合 PDF/X-4 —— 因此注入器在 PDF/VT 專用屬性之外同時寫入完整的 PDF/X-4 標記集(XMP
pdfxid:GTS_PDFXVersion = "PDF/X-4"、Info/GTS_PDFXVersion (PDF/X-4)與/Trapped、catalog/OutputIntents引用含內嵌 ICC profile 的 OutputIntent 字典)。 - PDF/VT 專用注入包括 XMP
pdfvtid:GTS_PDFVTVersion(按 §6.3 Table 2 取 "PDF/VT-1" 或 "PDF/VT-2")和pdfvtid:GTS_PDFVTModDate(按 §6.3 NOTE 1 與xmp:ModifyDate保持同步)以及同時宣告 pdfxid 與 pdfvtid 兩個名稱空間的 pdfaExtension:schemas 描述(NPES URIhttp://www.npes.org/pdfx/ns/id/和http://www.npes.org/pdfvt/ns/id/)。trailer 含/ID陣列。 - 新增 TPdf.SaveAsPdfVTToStream 實現記憶體中 PDF/VT 輸出,以及預設選項簡化過載
TPdf.SaveAsPdfVT(FileName)—— 生成 PDF/VT-1 + 內建 sRGB IEC61966-2.1 OutputIntent(3144 位元組,與 SaveAsPdfA / SaveAsPdfX 同一份 profile)+/Trapped /False。 - 新增 TPdf.ValidatePdfVT:檢查已開啟 PDF 的 PDF/VT 合規標記(XMP
pdfvtid:GTS_PDFVTVersion與GTS_PDFVTModDate存在性、pdfvtid:GTS_PDFVTModDate與xmp:ModifyDate相等、底層pdfxid:GTS_PDFXVersion標識、§6.5 catalog/DPartRoot存在性、/OutputIntents含/DestOutputProfile、trailer /ID、加密狀態、xmp:CreateDate/ModifyDate存在性),返回 TPdfVTValidationResult,包含檢測到的合規級別與問題集合。 - 新增 TPdf.PdfVTConformance 屬性:直接返回當前文件的合規級別(pvc1、pvc2、pvcNone 或 pvcUnknown),無需顯式呼叫 ValidatePdfVT。
- 新單元 FPdfPdfvt 中匯出的新型別:TPdfVTConformance(pvcUnknown/None/1/2)、TPdfVTTrappedState(ptvUnspecified/True/False/Unknown)、TPdfVTValidationResult、TPdfVTValidationIssue、TPdfVTSaveOptions。
- 文件部分層次結構(§6.5
DPartRoot/DPart樹)是應用級結構,由可變資料印刷工作流的收件人 / 頁面範圍對映決定。SaveAsPdfVT **不會**生成 DPart 樹 —— ValidatePdfVT 在缺少/DPartRoot時以pvviMissingDPartRoot報告,方便呼叫方將 PDF/VT 檔案轉入獨立的 DPart 構建流程。內容級 PDF/X-4 要求(字型嵌入、透明度、ICC 顏色管理、OPI / JavaScript / Reference XObject 停用等)仍由文件作者與 PDFium 渲染端負責。 - 更新 TPdf.AboutInfo 字串,使其報告當前產品版本號。
Version 1.34.0
- 新增 PDF/R-1 (ISO 23504-1:2020) 標記注入支援:TPdf.SaveAsPdfR 通過對基礎 PDF 做增量更新後處理,將當前文件提升為符合 PDF/R-1 的檔案(PDF 的 raster image 傳輸子集,用於掃描文件)。注入覆蓋後處理可達成的檔案格式級要求 —— 獨特的
%PDF-raster-1.0版本標識註釋行寫在 trailer 字典與 startxref 關鍵字之間(§5)、catalog 字典精簡到 §6.3 白名單(只保留 Version / ViewerPreferences / PageLayout / PageMode / AcroForm / Metadata)、文件資訊字典精簡到 §6.4.3 白名單(只保留 Creator / Producer / CreationDate / ModDate)、catalog /Metadata XMP 流攜帶 §6.4.4 Table 1 的 4 個對映條目(xmp:CreatorTool / pdf:Producer / xmp:CreateDate / xmp:ModifyDate),以及 trailer /ID 陣列。 - 新增 TPdf.SaveAsPdfRToStream 實現記憶體中 PDF/R 輸出,以及預設選項簡化過載
TPdf.SaveAsPdfR(FileName)適用於常見場景。 - 新增 TPdf.ValidatePdfR:檢查已開啟 PDF 的 PDF/R-1 合規標記(
%PDF-raster-x.yfooter 註釋、header 版本、/Type /ObjStm 不存在、catalog 白名單合規、Info 字典白名單合規、XMP 後設資料流存在、trailer /ID),返回 TPdfRValidationResult,包含檢測到的合規級別與問題集合。 - 新增 TPdf.PdfRConformance 屬性:直接返回當前文件的合規級別(prc1、prcNone 或 prcUnknown),無需顯式呼叫 ValidatePdfR。
- 新單元 FPdfPdfr 中匯出的新型別:TPdfRConformance、TPdfRValidationResult、TPdfRValidationIssue、TPdfRSaveOptions。
TPdfRSaveOptions.Default設定 StripInfoOptionalEntries 與 StripCatalogOptionalEntries 為 True,注入器預設生成符合 §6.3 / §6.4.3 的 catalog 與 Info 字典;呼叫方可設為 False 保留源條目(這樣不再滿足那些 PDF/R 條款,但其餘標記仍附加)。 - 內容級要求仍由源 PDF 負責:每頁 Contents 結構(§6.5.1)、MediaBox
[0 0 w h]形式(§6.5.3)、Filter 限制(§6.2.2 僅允許 FlateDecode、CCITTFaxDecode bitonal、DCTDecode 8-bit gray/RGB)、不允許 object streams(§6.2.4)、§6.6 strip 佈局。後處理無法強制這些 —— PDF/R 在結構上比其他 PDF/x 標準更嚴格,需要源位元組就按合規方式生成。ValidatePdfR 暴露本單元能檢測到的檔案格式問題;完整內容級檢查請配合 TWAIN Working Group PDF/R 驗證器。 - 更新 TPdf.AboutInfo 字串,使其報告當前產品版本號。
Version 1.33.0
- 新增 PDF/X (ISO 15930 系列) 標記注入支援:TPdf.SaveAsPdfX 通過對基礎 PDF 做增量更新後處理,將當前文件提升為符合 PDF/X-1a:2001、PDF/X-3:2002 或 PDF/X-4 的檔案。注入覆蓋後處理可達成的檔案格式級要求 —— XMP 後設資料流攜帶
pdfxid:GTS_PDFXVersion(PDF/X-1a / PDF/X-3 還附帶pdfxid:GTS_PDFXConformance)及匹配的 pdfaExtension:schemas 描述、重寫後的文件資訊字典含/GTS_PDFXVersion、/GTS_PDFXConformance、/Trapped,更新後的 catalog 攜帶/OutputIntents [N 0 R]引用/S /GTS_PDFX的 OutputIntent 字典與嵌入的 ICC profile,以及 trailer/ID陣列。 - 新增 TPdf.SaveAsPdfXToStream 實現記憶體中 PDF/X 輸出,以及預設選項簡化過載
TPdf.SaveAsPdfX(FileName)—— 生成 PDF/X-4 輸出並使用內建 sRGB IEC61966-2.1 OutputIntent(3144 位元組,與 SaveAsPdfA 使用同一份 profile)。 - 新增 TPdf.ValidatePdfX:檢查已開啟 PDF 的 PDF/X 合規標記(XMP pdfxid 標識與 Info 字典值相等、pdfxid 擴充套件模式描述、含 /DestOutputProfile 的 /OutputIntents 陣列、Title 存在性、trailer /ID、加密狀態、xmp:CreateDate / xmp:ModifyDate 存在性),返回 TPdfXValidationResult,包含檢測到的合規級別與問題集合。
- 新增 TPdf.PdfXConformance 屬性:直接返回當前文件的合規級別(pxc1a、pxc3、pxc4、pxcNone 或 pxcUnknown),無需顯式呼叫 ValidatePdfX。XMP 版本字串被解析以區分三個合規級別。
- 新單元 FPdfPdfx 中匯出的新型別:TPdfXConformance(pxcUnknown/None/1a/3/4)、TPdfXTrappedState(ptUnspecified/True/False/Unknown)、TPdfXValidationResult、TPdfXValidationIssue、TPdfXSaveOptions。
TPdfXSaveOptions.Default目標為 PDF/X-4 + sRGB OutputIntent +/Trapped /False;呼叫方可覆蓋Conformance、為商業印刷工作流提供 CMYKIccProfileData位元組流,或修改OutputCondition/OutputConditionIdentifier/RegistryName指向特定 ICC 特徵化註冊項(如 FOGRA39、GRACoL2006_Coated1v2)。 - 內容級要求(所有字型嵌入、不允許 JavaScript、不允許可見 annotations、OPI 停用、PDF/X-1a / PDF/X-3 的透明度規則等)仍由文件作者與 PDFium 渲染端負責。完整合規校驗請配合 callas pdfaPilot 或 Ghent PDF Workgroup Output Suite 等專業預檢工具。
- 更新 TPdf.AboutInfo 字串,使其報告當前產品版本號。
Version 1.32.0
- 新增 PDF/E-1 (ISO 24517-1:2008) 標記注入支援:TPdf.SaveAsPdfE 通過對基礎 PDF 做增量更新後處理,將當前文件提升為符合 PDF/E-1 的檔案。注入覆蓋後處理可達成的檔案格式級要求 —— XMP 後設資料流攜帶
pdfe:ISO_PDFEVersion = "PDF/E-1"及匹配的 pdfaExtension:schemas 描述、重寫後的文件資訊字典含 §5 強制的/ISO_PDFEVersion (PDF/E-1)條目、按 §13.1 從 ISO 19005-1 §6.7 繼承的 Info-XMP 等價橋接(dc:title / dc:creator / dc:description / pdf:Producer / pdf:Keywords / xmp:CreateDate / xmp:ModifyDate / xmp:MetadataDate / xmp:CreatorTool),以及 §6.2 要求的 trailer/ID陣列。 - 新增 TPdf.SaveAsPdfEToStream 實現記憶體中 PDF/E 輸出,以及預設選項簡化過載
TPdf.SaveAsPdfE(FileName)適用於常見場景。 - 新增 TPdf.ValidatePdfE:檢查已開啟 PDF 的 PDF/E-1 合規標記(XMP pdfe:ISO_PDFEVersion 存在並與 Info 字典值相等、pdfe 擴充套件模式描述、Info 字典 /ISO_PDFEVersion 條目、trailer /ID、xmp:CreateDate / xmp:ModifyDate 存在),返回結構化結果,包含檢測到的合規級別與問題集合。
- 新增 TPdf.PdfEConformance 屬性:直接返回當前文件的合規級別(pec1、pecNone 或 pecUnknown),無需顯式呼叫 ValidatePdfE。
- 新單元 FPdfPdfe 中匯出的新型別:TPdfEConformance、TPdfEValidationResult、TPdfEValidationIssue、TPdfESaveOptions。
- Info 字典重寫是 PDFiumVCL 的 PDF/x 後處理路徑首次實現 —— 它用相同物件號重寫現有 Info 物件(保持 xref 子區段 / trailer /Info 引用有效),當源 trailer 無 /Info 條目時則合成新的 Info 字典。PDFium 自身在每次 SaveAs 輸出中都生成 Info 字典,所以常見情況下走重寫路徑。
- 內容級要求(字型嵌入、ToUnicode CMap、停用的 XObject / ExtGState 鍵 / XFA 表單等)仍由文件作者負責 —— SaveAsPdfE 只附加檔案格式標記,不修改頁面內容或刪除停用特性。
- 更新 TPdf.AboutInfo 字串,使其報告當前產品版本號。
Version 1.31.0
- 新增 PDF/UA-1 (ISO 14289-1:2014) 標記注入支援:TPdf.SaveAsPdfUa 通過對基礎 PDF 做增量更新後處理,將當前文件提升為符合 PDF/UA-1 的檔案。注入覆蓋後處理可達成的檔案格式級要求 —— XMP 後設資料流攜帶
pdfuaid:part = 1及匹配的 pdfaExtension:schemas 描述、必填的dc:title、catalog/MarkInfo << /Marked true /Suspects false >>與/ViewerPreferences << /DisplayDocTitle true >>(僅在源 catalog 中不存在時注入)、catalog/Lang(呼叫方提供 BCP 47 標籤時)以及 trailer/ID陣列。 - 新增 TPdf.SaveAsPdfUaToStream 實現記憶體中 PDF/UA 輸出,以及預設選項的簡化過載
TPdf.SaveAsPdfUa(FileName)適用於常見場景。 - 新增 TPdf.ValidatePdfUa:檢查已開啟 PDF 的 PDF/UA-1 合規標記(StructTreeRoot 是否存在、/Lang、/MarkInfo /Marked true 且 /Suspects = false、/ViewerPreferences /DisplayDocTitle true、XMP pdfuaid:part 標識、dc:title、trailer /ID、加密狀態),返回結構化結果,包含檢測到的合規級別與問題集合。
- 新增 TPdf.PdfUaConformance 屬性:直接返回當前文件的合規級別(puc1、pucNone 或 pucUnknown),無需顯式呼叫 ValidatePdfUa。
- 新單元 FPdfPdfua 中匯出的新型別:TPdfUaConformance、TPdfUaValidationResult、TPdfUaValidationIssue、TPdfUaSaveOptions。
- TPdfUaSaveOptions 中 Title / Author / Subject / Keywords / Creator / Producer / CreationDate / ModDate / DocumentId / InstanceId / Language 欄位留空時,會自動從 FPDF_GetMetaText / FPDF_GetFileIdentifier / FPDFCatalog_GetLanguage 填充,因此常見情況只需一行就能儲存。
- 內容級要求(StructTreeRoot 標籤完整性、Figure Alt 文本、ToUnicode CMap、字型嵌入等)仍由文件作者負責 —— SaveAsPdfUa 只附加檔案格式標記,不會修改頁面內容或自動生成標籤。ValidatePdfUa 在缺少 StructTreeRoot 時以
pvuaiMissingStructTreeRoot報告,方便呼叫方將未標籤化文件轉入獨立的標籤化流程。 - 更新 TPdf.AboutInfo 字串,使其報告當前產品版本號。
Version 1.30.0
- PDF/A-1b 輸出現在滿足 ISO 19005-1 (含 Cor.1:2007) 關於文件資訊字典與 XMP 等價性的要求:PDFium 寫入基礎 PDF 的每個 Info 字典條目都會映象到 XMP 包中,包括 Title (dc:title)、Author (dc:creator)、Subject (按 Cor.1 修正對映為 dc:description)、Keywords (pdf:Keywords)、Creator (xmp:CreatorTool)、Producer (pdf:Producer)、CreationDate (xmp:CreateDate)、ModDate (xmp:ModifyDate),並額外補齊 xmp:MetadataDate。
- PDF/A 文件的 trailer 現在始終包含 /ID 陣列(ISO 19005-1 6.1.3 硬性要求)。當 TPdf.SaveAsPdfA 處理的源 PDF 已有 file identifier 時,會複用其 16 位元組的 permanent / changing ID;否則從源位元組派生確定性的 16 位元組回退 ID。
- 注入的 XMP 現在嵌入 pdfaid extension schema 描述(ISO 19005-1 6.7.8,Cor.1 修訂)—— pdfaid 相對 XMP Specification 2004 屬於擴充套件 schema,所有合規檔案必須在 pdfaExtension:schemas 容器中宣告其屬性名、值型別與類別。
- TPdfASaveOptions 新增 5 個可選欄位:Producer、CreationDate、ModDate(PDF 日期字串 “D:YYYYMMDDHHmmSSOHH'mm'” 形式)、DocumentId、InstanceId(trailer /ID 陣列的 16 位元組字串)。TPdf.SaveAsPdfA / SaveAsPdfAToStream 會自動從 FPDF_GetMetaText 與 FPDF_GetFileIdentifier 填充未指定欄位,已有呼叫程式碼無需修改。
- TPdf.ValidatePdfA / TPdf.PdfAConformance 新增三種問題報告:pvaiMissingTrailerId(trailer 缺少 /ID)、pvaiMissingXmpDates(xmp:CreateDate 或 xmp:ModifyDate 缺失)、pvaiMissingExtensionSchema(缺少 pdfaid 擴充套件 schema 描述)。
- Title、Author、Subject、Keywords、Creator、Producer 中的非 ASCII 字元現在以 UTF-8 編碼寫入 XMP 包(XMP Specification 要求),保證多語言後設資料通過 SaveAsPdfA 後能完整保留。
- 更新 TPdf.AboutInfo 字串,使其報告當前產品版本號。
Version 1.29.0
- 更新內建 PDFium DLL(Win32 與 Win64,含標準版與 V8 版)至 2026-05-22 上游快照,納入 FPDFText_SetText / FPDFText_SetCharcodes 崩潰路徑修復及若干內部加固。
- 在 FPdfPageOps.pas 中暴露 PDFium 新增的 FPDF_SUBSET_NEW_FONTS 儲存標誌,允許 FPDF_SaveAsCopy 呼叫者對新增文本物件引用的嵌入字型執行自動子集化。FPDF_INCREMENTAL、FPDF_NO_INCREMENTAL、FPDF_REMOVE_SECURITY 三個常量改為上游位移定義(保留舊數值 3 為 FPDF_REMOVE_SECURITY_DEPRECATED,保證二進位制相容)。
- 在 FPdfView.pas 中新增 FPDF_FONT_BACKEND_TYPE 列舉(FREETYPE / FONTATIONS)以及配套的 FPDF_LIBRARY_CONFIG.m_FontLibraryType 欄位,使用 Skia 渲染器初始化 PDFium 的應用可在啟動時選擇字型後端。
- 同步 TFPDFPage_InsertObject 簽名:C 函式現在返回 FPDF_BOOL(成功為 TRUE,page_object 為 NULL 或所有權轉移失敗時為 FALSE)而非 void。PDFiumVCL 已有呼叫點無需修改即可繼續編譯,Delphi / FPC 允許忽略函式返回值。
- 修正 TPdf.AboutInfo 字串,使其報告當前產品版本(v1.28.0 僅修改文件時遺漏更新,導致一直停留在 v1.27.0)。
Version 1.28.0
- 大幅擴充 API 參考頁面內容:每個屬性、方法、事件、全域性函式條目現在均包含三段 Description、Remarks 列表、多行 Delphi Example、以及更豐富的 See Also 連結,覆蓋 200+ 個先前內容較薄的頁面,包括所有 TPdf 計數屬性、後設資料訪問器、字型/字元索引屬性、頁面級屬性、索引記錄、文件級方法,以及 TPdfView 的完整狀態、顯示、事件 API。
- 微調幫助佈局對齊 losLab HotXLS 參考的視覺基線:統一 h1/h2 字號,把 API 導航網格樣式整合到共用 StyleSheet,並移除 Navigation.html 的內聯 CSS 重寫。
- 文件構建附帶輔助指令碼 Docs\Build-Expand-Entries.ps1,可基於單一資料表重新生成條目頁內容,便於後續維護。
Version 1.27.0
- 新增 PDF/A-1b 建立支援:TPdf.SaveAsPdfA 將當前開啟的文件儲存為 PDF/A-1b 合規檔案——通過增量更新注入 XMP 後設資料流、sRGB ICC OutputIntent 及更新後的文件目錄,無需額外 DLL API,全平臺可用。
- 新增 TPdf.SaveAsPdfAToStream:記憶體流方式輸出 PDF/A 檔案。
- 新增 TPdf.ValidatePdfA:檢查當前文件的 PDF/A 合規性(XMP pdfaid 標記、帶嵌入 ICC 的 OutputIntent、加密檢測),返回檢測到的合規級別及具體問題集。
- 新增 TPdf.PdfAConformance 屬性:直接返回當前文件的合規級別(pac1b、pac1a、pac2b、pac3b、pacNone 或 pacUnknown)。
- 新增型別(在新單元 FPdfPdfa.pas 中):TPdfAConformance、TPdfAValidationResult、TPdfAValidationIssue、TPdfASaveOptions。
- SaveAsPdfA 支援通過 TPdfASaveOptions.IccProfileData 指定自定義 ICC 配置檔案;留空時自動使用內建 sRGB IEC61966-2.1(HP/Microsoft,3144 位元組)。
- 將單體 HTML 參考手冊重構為結構化 Web 幫助系統:302 個獨立 API 入口頁面(TPdf 和 TPdfView 每個屬性、方法、事件、全域性函式各一頁),每頁含完整說明、參數列、Delphi 程式碼示例和 See Also 連結。
- 新增 Navigation.html:分六節(TPdf 屬性/方法/事件、TPdfView 屬性/方法/事件、全域性函式)的 5 列彈性網格導航總覽頁,方便快速定位 API。
- 將 TPdf.html 和 TPdfView.html 重寫為精簡元件概覽頁,保留型別參考章節(Types、Constants、Global Variables),成員列表改為連結至各入口頁面。
- 基於 Search.js 新增全文搜尋,在 312 個已索引頁面上做增量客戶端匹配。
- 全站所有導航欄連結統一指向 Navigation.html。
Version 1.26.0
- 新增 Demo/Lazarus/BatchExport,v1.14.0 Delphi BatchExport 的 LCL 移植版。功能一致:多檔案 PDF→JPG 批次匯出 + 每檔案總體進度 + 每頁當前進度 + DPI / 質量 / 密碼輸入 + 基於 IPdfCancellationToken 的合作式取消。匯出成功後用平臺檔案管理器開啟輸出目錄。
Version 1.25.0
- 為 TPdf 增加 Form XObject 頁面複用能力,支援水印、模板疊加、“一頁蓋多頁” 等場景:CreateXObjectFromPage 把其它文件的某一頁打包成可重用控制代碼;InsertFormObjectFromXObject 把控制代碼的一份副本插入當前頁面。返回插入的 FPDF_PAGEOBJECT,呼叫方可結合 FPDFPageObj_SetMatrix 與 v1.9.0 的 TPdfMatrix 輔助類做定位、縮放、旋轉。
- 新增 Pascal 類 TPdfXObject 封裝 PDFium 的 FPDF_XOBJECT 控制代碼,析構時自動調 FPDF_CloseXObject,無需手工管理資源。
- Delphi 與 Lazarus 迴歸測試套件擴充套件到 147 個用例,C++Builder 套件擴充套件到 123 個用例,覆蓋控制代碼建立與頁面物件插入兩類契約。
Version 1.24.0
- 新增 TPdf.RenderPageProgressive:可取消的 RenderPage 變種,驅動 PDFium 的漸進式渲染迴圈,在迭代間輪詢 v1.7.0 的 IPdfCancellationToken。高 DPI 長時間渲染可以在頁面繪製過程中中斷,而不是等到完成才返回。
- 返回 TPdfProgressiveStatus 列舉:prsDone / prsCancelled / prsFailed。傳 AToken = nil 表示渲染到完成、不輪詢取消(不會返回 prsCancelled)。
- 使用 v1.21.0 引入的 zero-copy fast path —— PDFium 直接寫入目標 TBitmap 的 DIB 緩衝。同樣保留 legacy fallback 應對無法 wrap DIB 的少數情況。
- Delphi 與 Lazarus 迴歸測試套件擴充套件到 145 個用例,C++Builder 套件擴充套件到 121 個用例,覆蓋 nil token(完成)、預取消 token(prsCancelled)、以及與同步 RenderPage 畫素一致性。
Version 1.23.0
- 為 TPdfView 增加六個新方法,把 PDFium 的表單欄位文本選擇 + Undo/Redo 能力暴露給應用:GetSelectedFormText 返回當前聚焦表單欄位中的選中文本;SelectAllFormText 全選;FormUndo / FormRedo / FormCanUndo / FormCanRedo 驅動聚焦欄位的編輯歷史。底層 PDFium API 早已繫結,但沒有 Pascal 風格高層入口。檢視非 Active 或文件沒有 AcroForm 聚焦欄位時,六個方法都安全短路返回空串 / False,不會崩潰。
- Delphi 與 Lazarus 迴歸測試套件擴充套件到 142 個用例,C++Builder 套件擴充套件到 119 個用例,覆蓋“無表單 / 無聚焦”場景下每個方法的契約。
Version 1.22.0
- 為 TPdf 增加頁面組合操作便捷介面:ImportPagesByIndex 通過零基索引陣列從源文件複製指定頁;ImportNPagesToOne 返回一個全新 TPdf,其頁面是當前文件的 N-up 拼版;MovePages 原地重排頁面。底層 PDFium API 早已繫結,但沒有 Pascal 風格高層入口。
- ImportPagesByIndex 接受空陣列以匯入全部源頁面(對應 C ABI 的 nil 引數)。
- Delphi 與 Lazarus 迴歸測試套件擴充套件到 136 個用例,C++Builder 套件擴充套件到 115 個用例,覆蓋子集匯入、全文件匯入、頁面重排、N-up 拼版四類場景。
Version 1.21.0
- 渲染效能最佳化:TPdf.RenderPage / TPdf.RenderTile(以及對應的 TPdfView 輔助方法)切換到 zero-copy 輸出路徑。PDFium 現在直接寫入目標 TBitmap 的 DIB 緩衝,不再寫入內部緩衝後再逐行 copy,每次渲染節省一份 width × height × 4 位元組的記憶體複製。高 DPI 場景(縮略圖面板、列印質量匯出、批次匯出)收益最明顯。
- 保留舊的 per-scanline 路徑作為安全 fallback,應對極端尺寸 / 異常 stride / OOM 等無法 wrap DIB 的少數場景。兩條路徑輸出位元組一致,fallback 只是慢一點。
- Delphi 與 Lazarus 迴歸測試套件擴充套件到 132 個用例,C++Builder 套件擴充套件到 112 個用例,覆蓋呼叫方 bitmap 自動升級 pf32bit、尺寸 round-trip、以及大尺寸 stride sanity 測試。
Version 1.20.0
- 為 TPdfView 增加查詢結果高亮:HighlightSearchText(Text, MatchCase, MatchWholeWord) 掃描檢視當前頁,返回找到的匹配數,並在每次重繪時為每個匹配畫 HighlightColor 高亮矩形。ClearHighlight 清除高亮;切換到其他頁面自動清除(匹配按頁面繫結)。
- HighlightColor 預設 clYellow,published 屬性讓應用可以根據 UI 主題調整高亮色。
- Delphi 與 Lazarus 迴歸測試套件擴充套件到 129 個用例,C++Builder 套件擴充套件到 109 個用例,覆蓋預設色、色 round-trip、對 sample.pdf 中存在單詞的真實匹配數檢測、以及對不存在單詞返回 0 的約束。
Version 1.19.0
- 為 TPdfView 增加 FitMode 屬性,四種模式:pfmNone(手動縮放)、pfmActualSize(100%)、pfmFitPage(整頁適應視口)、pfmFitWidth(頁面寬度匹配視口寬度)。Resize 時與切頁時自動重新應用 fit 模式,混合頁面尺寸的長文件也能保持穩定的視覺填充。
- 直接設 Zoom 會自動取消當前 fit 模式(FitMode 退回 pfmNone),符合主流 PDF viewer 的“輸入縮放值就退出 Fit Page / Fit Width”慣例。
- 預設 pfmNone,舊應用的顯式 Zoom 行為不受影響。
- Delphi 與 Lazarus 迴歸測試套件擴充套件到 124 個用例,C++Builder 套件擴充套件到 106 個用例,覆蓋預設值、模式 round-trip、實際載入文件時 fit-page 產生真實縮放比、以及手動 Zoom 取消 fit 模式四類場景。
Version 1.18.0
- 為 TPdfView 增加 PageColor 屬性,把渲染出來的 PDF 頁面底色與控制元件自身 Color 解耦。預設 clWhite,使 PDF 頁面無論宿主主題如何都以“紙白”渲染。dark mode viewer 可以讓滾動區維持深色背景,同時 PDF 頁面仍然是白(或應用層指定的任何顏色)。
- 行為變化:之前通過 TPdfView.Color 間接換頁面底色的應用,應改成 PageColor。常見場景(主題化控制元件 + 白色 PDF 頁面)的預設體驗在不改一行程式碼的情況下變好。
- Delphi 與 Lazarus 迴歸測試套件擴充套件到 120 個用例,C++Builder 套件擴充套件到 103 個用例,覆蓋預設值與顏色 round-trip。
Version 1.17.0
- 為 TPdfView 增加使用者輸入鎖定開關,方便把 viewer 嵌入到 kiosk、預覽面板、只讀場景時無需 subclass 即可停用導航手勢:AllowUserPageChange 控制新增的 PgUp / PgDn / Ctrl+Home / Ctrl+End 鍵盤快捷鍵;ChangePageOnMouseScrolling 控制新增的滾輪上/下翻頁;AllowUserTextSelection 為將來的滑鼠拖選文本路徑預留。三個屬性預設 True,舊應用升級無任何行為變化。
- 滾輪翻頁路徑跳過 Ctrl+滾輪,方便應用層繼續把 Ctrl+滾輪保留給縮放。
- Delphi 與 Lazarus 迴歸測試套件擴充套件到 118 個用例,C++Builder 套件擴充套件到 101 個用例,覆蓋預設值與開關 round-trip。
Version 1.16.2
- 擴充套件 TPdfView 註釋連結點選迴歸覆蓋:當 viewer 當前頁與關聯 TPdf 當前頁不一致時,通過真實無介面滑鼠點選路徑驗證自動跳轉行為,覆蓋 Delphi、Lazarus 與 C++Builder。
- Delphi 與 Lazarus 套件現在各 114 個用例,C++Builder 套件現在 99 個用例。
Version 1.16.1
- 修復 TPdfView 連結點選處理:自動註釋連結與網頁連結動作現在使用 viewer 當前顯示頁,即使關聯的 TPdf 元件停留在其它頁也不會錯取快取。
- 加固 TPdfThumbnailView 的 Pdf 引用生命週期,關聯的 TPdf 元件銷燬時會自動清空引用,避免懸掛指標。
- 新增縮圖 Pdf 引用生命週期迴歸覆蓋;Delphi 與 Lazarus 套件現在各 113 個用例,C++Builder 套件現在 98 個用例。
- 同步 README、測試說明、HTML Help 搜尋/索引內容以及 C++ 包生成輸出,使其覆蓋 v1.7.0 到 v1.16.0 的整合更新。
Version 1.16.0
- 新增 Delphi PrintDialog 示例(Demo/Delphi/PrintDialog),重點演示 N-up 列印(1 / 2 / 4 / 9 頁拼一張)+ 奇偶頁過濾 + 灰度渲染 + 可選的 1 畫素單元格邊框。作為既有 PrintPDF demo 的輕量夥伴,PrintPDF 已經覆蓋了預覽、最近檔案、縮放、scaling 等大件功能。
Version 1.15.0
- 新增 TPdfThumbnailView 元件(FPdfThumbnail 單元),垂直滾動側欄,每行一個頁面縮圖,支援滑鼠懸停高亮、當前選中頁高亮、單擊切頁。設計為與 TPdfView 並排放置,讓使用者能快速翻閱長 PDF。
- 元件已註冊到 losLab 元件面板,與 TPdf、TPdfView 同 tab。主要屬性:Pdf、CurrentPageIndex、ThumbnailWidth、ThumbnailHeight、TextColor、HoverColor、SelectionColor、BorderColor,以及 OnPageClick 事件。
- Delphi 與 Lazarus 迴歸測試套件擴充套件到 112 個用例,C++Builder 套件擴充套件到 97 個用例,覆蓋預設值、縮圖尺寸 round-trip、極值截斷、顏色 round-trip、以及事件處理器賦值。
Version 1.14.0
- 新增 Delphi BatchExport 示例(Demo/Delphi/BatchExport),演示如何一次性把多個 PDF 檔案批次轉換為 JPG,使用 TPdf.LoadCustomDocument 流式載入、IPdfCancellationToken 合作式取消、以及“按檔案整體進度 + 按頁當前進度”兩個進度條。每個檔案用獨立 TPdf 例項(PDFium 本身不是執行緒安全),匯出成功後自動開啟輸出資料夾。
Version 1.13.0
- 為 TPdfView 增加非同步渲染 UI 提示:新增 AsyncRendering、LoadingText、LoadingColor 三個屬性。AsyncRendering = True 時,單頁 paint 路徑在頁面中央繪製一個 “Loading...” 小提示框,便於應用層在自己的 worker 做長渲染時與庫統一 UI 標識。
- 預設 AsyncRendering = False 保持向後相容,不引入新視覺。
- 文件明確說明:PDFium 本身不是執行緒安全的,把渲染真正搬到 worker 必須保證每個 worker 持有獨立的 TPdf 例項;後續的 v1.14.0 批次匯出 demo 展示該模式。
- Delphi 與 Lazarus 迴歸測試套件擴充套件到 106 個用例,C++Builder 套件擴充套件到 93 個用例,覆蓋預設值與三屬性 round-trip。
Version 1.12.0
- 為 TPdfView 增加基於點選的連結處理:新增 LinkOptions 屬性控制四類 PDF 連結動作的自動行為 —— goto(頁面跳轉)、URI(ShellExecute)、launch(ShellExecute)、嵌入 GotoR(保留)。預設開啟 loAutoGoto 與 loAutoOpenURI;loAutoLaunch 與 loAutoEmbeddedGoto 預設關閉,避免誤點觸發任意程式。
- 新增 OnAnnotationLinkClick 與 OnWebLinkClick 事件,在自動動作之前觸發,允許應用層檢查連結、標記 Handled、或重定向(例如彈出安全確認)。
- 連結點選檢測僅在 click(非 drag)時觸發,使用獨立的 MouseDown 錨點判斷,panning 等長拖拽手勢繼續走原有滾動路徑不受影響。
- Delphi 與 Lazarus 迴歸測試套件擴充套件到 102 個用例,C++Builder 套件擴充套件到 91 個用例,覆蓋 LinkOptions 預設值、集合 round-trip、以及事件處理器賦值。
Version 1.11.0
- 為 TPdfView 增加視覺增強:PageShadowSize、PageShadowColor、PageBorderColor 三個屬性,可選地在頁面矩形下方繪製陰影,並在四周繪製一畫素邊框。預設值保持舊的平面外觀(PageShadowSize = 0;邊框顏色預設 clBlack,但在白底控制元件上不顯眼,直到呼叫方修改顏色)。
- 新增 SmoothScroll 屬性,作為將來分段滾動動畫的 opt-in 開關;屬性可 read/write 持久化,渲染邏輯保持現有即時滾動行為以避免破壞舊應用。
- Delphi 與 Lazarus 迴歸測試套件擴充套件到 98 個用例,C++Builder 套件擴充套件到 89 個用例,覆蓋預設值、屬性 round-trip、以及負陰影尺寸截斷為 0 的約束。
Version 1.10.0
- 新增直接的影像插入介面:TPdf.AddImage 與 TPdfView.AddImage 接受檔案路徑或 TBitmap,是既有 AddPicture(TPicture) 的簡化版。AddImage(FileName) 識別 VCL 與 LCL 註冊過的所有影像格式(BMP、通過 PngImage 單元的 PNG、JPG 等),並走與 AddPicture 完全相同的內部管線,行為一致。
- AddImage(TBitmap) 跳過 TPicture 中間層,方便已經持有 TBitmap 的渲染或批次生成場景。
- Delphi 與 Lazarus 迴歸測試套件擴充套件到 92 個用例,C++Builder 套件擴充套件到 84 個用例,覆蓋點陣圖插入、頁面物件 bounds、nil 點陣圖拒絕、以及 BMP 檔案載入。
Version 1.9.0
- 新增高層變換矩陣支援:FPdfMatrix 單元提供 TPdfMatrix 類,OO 風格包裝 PDFium 的 FS_MATRIX,支援 Translate / Scale / Rotate / 水平翻轉 / 垂直翻轉 / 中心翻轉 / Skew / Multiply 等組合操作,方便在呼叫 FPDFPageObj_SetMatrix 等 PDFium API 之前先構造好複合變換。
- TPdfMatrix.Multiply 在寫入新行之前完整 snapshot 六個矩陣元素,修正了已知的 Pascal 同類實現先覆寫 m.a / m.c / m.e 再據此計算同行第二列的 bug —— 該 bug 會讓除單純 translate 之外的所有矩陣複合得到錯誤結果。
- Delphi 與 Lazarus 迴歸測試套件擴充套件到 88 個用例,C++Builder 套件擴充套件到 81 個用例,覆蓋 identity、reset、translate/scale/flip、post-multiplicative 組合順序、以及上述 Multiply 迴歸用例。
Version 1.8.0
- 新增按需流式載入:TPdf.LoadCustomDocument(AStream, AOwnsStream) 方法配合 TPdfStreamAdapter 輔助類,底層接入 PDFium 的 FPDF_LoadCustomDocument。PDFium 在需要時才從外部 TStream 讀取資料塊,超大 PDF 或遠端流不再需要先完整拷入記憶體。
- 支援可選的 stream 所有權:AOwnsStream = True 時把 TStream 生命週期交給 TPdf,UnloadDocument 時自動釋放。
- Delphi 與 Lazarus 迴歸測試套件擴充套件到 79 個用例,C++Builder 套件擴充套件到 75 個用例,覆蓋 TFileStream 流式載入、owned-stream 解除安裝釋放、以及外部所有 stream 在解除安裝後仍存活三類場景。
Version 1.7.0
- 新增 FPdfAsync 單元,提供合作式非同步取消原語:IPdfCancellationToken / IPdfCancellationTokenSource,以及全域性 PdfNoCancellationToken 單例,使長任務渲染、批次匯出等流程具備從 UI 端發起乾淨取消的能力。
- 新增輕量 TPdfFuture<T> 助手,在後臺執行緒跑 worker,把 TPdfFutureResult<T> 結果信封 dispatch 回主執行緒,區分成功、取消與失敗三種結果。
- Delphi 與 Lazarus 迴歸測試套件擴充套件到 76 個用例,C++Builder 套件擴充套件到 73 個用例,共享覆蓋取消狀態、冪等 Cancel、回撥批次觸發、取消後註冊回撥四類行為。
Version 1.6.10
- 新增高層 TPdf.PrintPageRanges,可讀取 PDF viewer preference 中的列印頁碼範圍,並以一基頁碼範圍返回給應用層。
- 新增 TPdf.SetFormFieldFlags / SetFormFieldFlagsAt 以及對應 TPdfView 輔助方法,應用可通過公開 API 修改 AcroForm 欄位標誌,並補齊 password 與 multi-select 標誌覆蓋。
- 加強 PDFium 繫結 ABI 覆蓋,固定 Windows 下 FPDF_DWORD、FPDF_FILEACCESS 回撥和 V8 embedder slot 欄位的尺寸約束。
Version 1.6.9
- 新增低層 Skia 渲染繫結,開放當前標準版與 V8 版 bundled PDFium DLL 新匯出的 FPDF_RenderPageSkia 和 FPDF_FFLDrawSkia。
- 擴充套件 public 繫結覆蓋檢查,現在標準 DLL 與 V8 DLL 載入測試會與既有 V8/XFA 能力探測一起驗證 Skia 渲染入口。
Version 1.6.8
- 新增 TPdf.SetTextPositions 與 TPdfSingleArray,可通過當前 DLL 新匯出的 FPDFText_SetPositions 為既有文本物件設定逐字元位置。
- 將 FPDFText_SetPositions 提升為當前隨包 PDFium DLL 的必需繫結;同時確認 Skia 渲染入口仍不可用,因為當前 DLL 仍未匯出這兩個函式。
- Delphi、C++Builder、Lazarus 三套迴歸測試擴充套件到每套 65 個用例,覆蓋文本位置設定。
Version 1.6.7
- 新增 TPdf 對文件級 JavaScript name-tree action 的高層讀取能力,可通過 JavaScriptAction 與 JavaScriptActions 取得 action 名稱和指令碼內容。
- 新增 TPdf.FileIdentifier,以不含 PDFium 終止位元組的二進位制 TBytes 讀取 trailer 中的 permanent / changing 檔案 ID。
- 新增 TPdf.PageBox、GetPageBox、SetPageBox,可讀寫當前頁的 MediaBox、CropBox、BleedBox、TrimBox 和 ArtBox。
- 重新確認當前隨包 PDFium DLL 只剩 Skia 渲染入口無法在執行時開放,因為這些匯出並不存在於當前 DLL。
- Delphi、C++Builder、Lazarus 三套迴歸測試擴充套件到每套 64 個用例,覆蓋文件 JavaScript、trailer ID 與頁面 box 讀寫。
Version 1.6.6
- 新增隨執行時 DLL 選擇的 V8 版 PDFium 支援。載入前設定 EnableV8Engine 後,會從 DLLs\Win32 或 DLLs\Win64 目錄樹選擇 pdfium.v8.dll,並在該 DLL 實際匯出對應入口時開放 V8/XFA 專用繫結。
- 新增 V8FeaturesAvailable、XfaBStrHelpersAvailable、GetRecommendedV8Flags,並開放 FPDF_BStr_*、FPDF_GetRecommendedV8Flags、FPDF_GetArrayBufferAllocatorSharedInstance 等低層可選繫結。
- 將 FPDFText_SetPositions 改為可選繫結,讓 PDFiumVCL 在所載入 PDFium DLL 不匯出該實驗性文本位置 setter 時仍可正常載入。
- Delphi、C++Builder、Lazarus 三套迴歸測試擴充套件到每套 61 個用例,覆蓋標準 DLL 與 V8 DLL 的能力探測。
Version 1.6.5
- 新增 tagged PDF 結構樹讀取能力:可通過 TPdf.StructureElements 與 TPdfView.StructureElements 讀取元素型別、標題、替代文本、實際文本、expansion 文本、語言、marked-content ID、子節點數量和屬性數量。
- 新增 Windows PDFium 列印模式選擇能力:通過 TPdfPrintMode 與 SetPdfPrintMode 設定 EMF、純文本、PostScript、pass-through、image-mask 和 Type 42 列印模式。
- 補齊標準 DLL 已匯出的剩餘 PDFium public 低層繫結,覆蓋 JavaScript action、註釋表單 flags / 字型顏色、page object active 狀態、按索引插入、content mark 浮點值、圖片 ICC profile 資料、form object 移除和文本位置。
- Delphi、C++Builder、Lazarus 三套迴歸測試擴充套件到每套 59 個用例,覆蓋 tagged PDF 結構樹、列印模式和 public 匯出繫結。
Version 1.6.4
- 更新 Delphi、C++Builder 和 Lazarus 示例:生成 PDF、匯出文本/圖片以及批次輸出完成後,自動開啟生成檔案或輸出目錄。
Version 1.6.3
- Delphi、C++Builder、Lazarus 三套迴歸測試擴充套件到每套 56 個用例,新增 TPdfView GUI 覆蓋:適配縮放輔助值、裝置/頁面座標往返、字元命中測試,以及隱藏視窗控制元件上的滑鼠拖拽平移。
- TPdfView 測試夾具現在為隱藏 viewer 設定明確尺寸,並通過測試專用子類呼叫受保護滑鼠處理器,在保持全自動無介面執行的同時覆蓋真實 HWND 路徑。
Version 1.6.2
- 修正 TPdf.AddPage(0, ...):插入第一頁後會立即把該頁設為當前頁。既保留現有示例程式碼的相容性,也讓插入後的 PageNumber 返回有效的一基頁號。
- 同步 Lazarus 包版本,並把 Delphi、C++Builder、Lazarus 三套迴歸測試擴充套件到每套 52 個用例。
Version 1.6.1
- 修正 v1.6.0 版本遵循性校驗器對 SetState 動作的版本歸屬錯誤:按 PDF 1.2 參考手冊 6.9.9 節,SetState action 從 PDF 1.2 起即可使用。之前誤標記為 PDF 1.5 起,導致顯式儲存為 PDF 1.3 或 PDF 1.4 時若文件含 SetState 動作會被錯誤拒絕;本版改為 PDF 1.2 起允許。
- 按 PDF 1.2 規範同節同步補齊 1.2 引入特性的檢查:Sound / Movie / NOP 動作以及 Separation 顏色空間,目標版本低於 1.2 時予以拒絕。
- Delphi / C++Builder / Lazarus 三套迴歸測試擴充套件到每套 50 個用例,新增 PDF 1.4 接受 SetState 動作的正向迴歸,固化修正後的版本邊界。
Version 1.6.0
- 全面強化顯式 PDF 1.0 ~ PDF 1.7 目標的 SaveAs 輸出,按 PDF 1.1 到 ISO 32000-1 完整特性時間線擴充套件版本遵循性校驗:儲存結果中出現晚於目標版本才引入的字典項、過濾器名、註釋/動作子型別、字型型別、顏色空間或加密引數時會被直接拒絕。覆蓋例:JBIG2Decode (1.4+)、Tagged PDF / MarkInfo (1.4+)、OutputIntents (1.4+)、ICCBased / DeviceN / BleedBox / TrimBox / ArtBox / StructTreeRoot (1.3+)、Polygon / PolyLine / Caret / Screen / Watermark / Redact 註釋、AES 與 AES-256 加密 (CFM AESV2 / AESV3)、Perms / Legal / Requirements / NeedsRendering catalog 條目,以及 JavaScript / Trans / SetState / Rendition / GoToE / GoTo3DView 等受版本限制的動作型別,目標版本表達不下時一律拒絕。
Version 1.5.13
- Delphi、C++Builder、Lazarus 三套迴歸測試擴充套件到每套 49 個用例,分別新增 PDF 1.2 / 1.3 / 1.4 / 1.5 / 1.6 目標拒絕 ICCBased 顏色空間、Tagged PDF MarkInfo、Polygon 註釋、AES (V2) 加密以及 Redact 註釋的直接覆蓋。
Version 1.5.12
- 修復 SaveAs 儲存後處理中的增量 catalog 重寫路徑。PDFiumVCL 現在會校驗最新的同號間接物件,因此在顯式儲存為較舊 PDF 目標版本時,已有 catalog /Version 覆蓋項會被正確替換。
- Delphi、C++Builder 與 Lazarus 三套迴歸測試擴充套件到每套 44 個用例,新增對舊 catalog /Version 替換、PDF 1.4 catalog 版本規範化,以及低版本目標拒絕透明度和 portable collection 特性的直接覆蓋。
Version 1.5.11
- 強化顯式版本 SaveAs 輸出:當選擇 PDF 1.3、1.4、1.5、1.6 或 1.7 作為目標版本時,PDFiumVCL 會規範化 catalog 版本標記,讓預設 Fit Height OpenAction 保持版本安全,並在目標版本無法表達較新 PDF 特性時直接拒絕儲存。
- Delphi、C++Builder 與 Lazarus 三套迴歸測試新增顯式 PDF 1.3 到 PDF 1.7 儲存與重新載入覆蓋,驗證最終檔案頭、預設 Fit Height OpenAction 以及重新讀取後的 PDF 版本。
Version 1.5.10
- 從測試規劃的 B 選項升級到 C 選項:在三套 IDE 測試中新增 TPdfView 冒煙用例(Tests.PdfView)。每套測試在控制台 runner 中建立隱藏的父 TForm(Pascal 端用 TForm.CreateNew,C++Builder 端用
new TForm(NULL, 0)),把 TPdfView 重新掛到該窗體上,調 Active := True,再驗證 PageCount、PageNumber 預設值、Zoom、Rotation、DisplayMode 的 set/get 往返,以及 View.Text 與底層 TPdf.Text 的一致性。每套測試現在跑 39 用例。
Version 1.5.9
- 從測試規劃的 A 選項升級到 B 選項:在三套 IDE 測試中新增渲染冒煙用例。每套 Tests.Render 在 sample.pdf 上呼叫 TPdf.RenderPage,用三種穩健訊號替代位元組級校驗和:返回的 bitmap 畫素尺寸與請求完全一致;不同請求尺寸(200x100、64x256)都被精確遵守;渲染結果至少 95% 白底 + 至少 50(Lazarus 20)個非白畫素標記抗鋸齒文本。每套測試現在跑 33 用例。
Version 1.5.8
- 完成最初 A(2) 測試規劃中餘下的功能分組覆蓋:在 Delphi、Lazarus、C++Builder 三套測試中再新增 7 個迴歸用例。包括 TPdf.CreateAnnotation 構造 anHighlight 高亮註釋 + SaveAs/LoadDocument 往返;針對 Demo/Delphi/FormFill/cmp_fill_out_and_merge_forms.pdf 的 AcroForm 讀取路徑(FormType=ftAcroForm、首頁 FormFieldCount > 0、FlattenAllPages 後欄位歸零);以及 Bookmarks、LinkAnnotationCount、WebLinkCount 在不帶相應資料的文件上的“安靜讀取”路徑。每套測試現在跑 30 用例。
Version 1.5.7
- 在 Delphi(DUnitX)、Lazarus(FPCUnit)、C++Builder(GoogleTest)三套測試中新增 7 個迴歸用例:PdfVersion 識別、PageRotation 預設值、TPdf.FindFirst / FindNext 子串定位、CharacterOrigin / CharacterRectangle 與 AddText 起點的一致性、CreateAttachment 註冊、附件 SaveAs/LoadDocument 往返保留、以及 v1.3.0 的歐洲字元 AddText 往返(驗證 Latin-1 supplemental 字元 é/à/ß 經過文本提取鏈路後仍完整保留)。
Version 1.5.6
- 儲存 PDF 時,如果文件尚未定義 OpenAction,現在會自動加入第一頁適應頁高的預設開啟動作,讓閱讀器初次開啟生成文件時按頁高縮放顯示。
- 為 Delphi、Lazarus、C++Builder 三套測試補充 OpenAction 與適應頁高設定的迴歸覆蓋。
Version 1.5.5
- 在 Delphi(DUnitX)、Lazarus(FPCUnit)、C++Builder(GoogleTest)三套測試中新增字元與字型檢查 API 的迴歸用例,覆蓋 TPdf.FontBaseName、FontFamilyName、FontWeight、FontItalicAngle、FontData、FontIsEmbedded、CharacterFontWeight、CharacterAngle。Lazarus 套件暫不呼叫 FontData,因為 FPC 下 FPDFFont_GetFontData 當前會觸發訪問違例。
Version 1.5.4
- 新增從 Delphi 示例直接移植的 C++Builder Attachment 示例,覆蓋建立 PDF、新增附件、列出附件、提取附件、刪除附件、儲存文件,以及顯示附件 MIME subtype。
Version 1.5.3
- 把 TPdfView 雙頁模式背後的頁碼配對邏輯公開為 unit 級輔助函式 ComputeSpreadPages(DisplayMode, PageNumber, PageCount, out LeftPageNo, out RightPageNo)。行為完全不變,僅是把封面對齊規則解耦出來,方便在不例項化檢視器的前提下做迴歸驗證。
- 在 Delphi(DUnitX)、Lazarus(FPCUnit)、C++Builder(GoogleTest)三套測試中新增 5 個用例,覆蓋空文件、常規雙頁配對、dmTwoPageContinuousWithCover 下封面單獨顯示、封面之後的頁碼配對,以及末頁和越界 PageNumber 的鉗位行為。
Version 1.5.2
- 新增 TPdf.Language,支援讀取和設定 PDF Catalog 的 /Lang 文件語言。
- 新增 TPdf.AttachmentType,用於讀取附件嵌入檔案的 MIME subtype。
- TPdfAnnotationSubtype 新增 anRedact,併為 TPdf 與 TPdfView 新增頁面物件移除輔助方法。
- 更新 viewer 與 attachment 示例,在可用時顯示文件語言和附件型別資訊。
Version 1.5.1
- 新增 TPdfView 的 dmTwoPageContinuousWithCover 顯示模式,支援首頁單獨顯示、後續頁面按雙頁跨頁連續顯示。
- 更新 Delphi、C++Builder、Lazarus 的 MultiPageViewer 示例,開放新的封面雙頁顯示模式並同步頁面跳轉行為。
Version 1.5.0
- 新增 Delphi(DUnitX)、Lazarus(FPCUnit)、C++Builder(GoogleTest)三套自動化冒煙測試。三套用例共享 Tests\TestData 下的同一份測試 PDF,分別覆蓋文件載入、頁面資訊、文本提取、後設資料、儲存往返、PDF 檔案頭校驗和 Compressed 屬性。
Version 1.4.3
- 增強 FontProperties 示例,同時展示 TPdfView 與 TPdf 的字型後設資料 API,包括字型控制代碼、字型資料大小和字元度量資訊。
- 新增 TPdfView 的索引式字元與字型檢查屬性,並更新 FontProperties 示例,使用文本物件索引查詢字型後設資料。
Version 1.4.2
- 為 TPdf 新增索引式字元與字型檢查屬性,無需例項化 viewer 即可做文本分析。字元索引類屬性(CharacterAngle、CharacterFontSize、CharacterFontWeight)從當前頁文本流按字元索引查詢逐字元度量資料;頁面物件索引類屬性(FontAscent、FontBaseName、FontData、FontDescent、FontFamilyName、FontHandle、FontIsEmbedded、FontItalicAngle、FontWeight)按頁面物件索引查詢文本物件的字型後設資料。
- 非文本頁面物件對所有 Font* 屬性均返回安全的零值或空值,而非觸發錯誤,方便遍歷所有頁面物件時僅針對文本物件進行篩查。
- FontBaseName 直接讀取 PostScript base font 名稱,不再用字型族名代替,提供更準確的嵌入字型識別符號。
Version 1.4.1
- 補齊 EuropeanText 的 C++Builder 與 Lazarus 版示例,使三個 IDE 系列都能驗證基於系統 TrueType 字型的歐洲重音字元生成流程。
- 補齊 FormFill 的 C++Builder 與 Lazarus 版示例,包含示例表單 PDF、欄位編輯、外觀流重新生成、填寫後儲存以及展平儲存流程。
Version 1.4.0
- 新增 Lazarus / Free Pascal 支援:新的 PDFiumLaz 包在 LCL 控制元件集下提供與 Delphi 版相同的 TPdf、TPdfView 及相關元件,使 Lazarus IDE 和 Free Pascal 編譯器使用者可以與 Delphi / C++Builder 使用者共享同一套 PDF 庫。
- 新增各主要功能的 Lazarus 版示例,方便 Lazarus 開發者即開即用地體驗各個特性。
- 修正 Lazarus 包編譯問題:將 Free Pascal 條件定義與 Delphi 編譯器版本判斷分離,避免 FPC 構建時嘗試解析 Delphi 專用單元名稱而失敗。
Version 1.3.1
- 在幫助文件中補齊了表單展平相關功能的說明:GenerateFormAppearances、FlattenPage、FlattenAllPages 三個方法以及配套的 FLAT_* / FLATTEN_* 常量,已分別加入 TPdf、TPdfView、API 參考、功能列表與示例程式碼各章節。
- 修正概覽頁架構表中的幾處單元檔名錯誤,使其與 Lib 目錄實際釋出的繫結單元一致。
Version 1.3.0
- 改進建立 PDF 時的歐洲字元支援。TPdf.AddText 在建立文本物件前會載入並快取系統內對應的 TrueType 字型,使生成的文本能正確保留捷克語、法語、德語、西班牙語、葡萄牙語、波蘭語、土耳其語等重音字元 —— 這些字元是 PDFium 內建標準字型所無法表示的。
- 之前在非 ASCII Latin 字元處輸出問號或替換字形的應用,無需修改程式碼即可正確渲染。新增 EuropeanText 示例演示該功能。
Version 1.2.0
- 為 TPdf 新增 AcroForm 外觀流重新整理能力:修改 FormField[] 賦值後呼叫 GenerateFormAppearances,可立即更新欄位外觀,讓填寫結果在標準閱讀器中無需進入編輯模式即可正常顯示。
- 為 TPdf 新增表單展平功能(FlattenPage / FlattenAllPages),並在 TPdfView 提供當前頁的對應方法。展平操作將已填寫的欄位值永久嵌入為普通頁面內容並移除互動式表單層,生成的文件在所有閱讀器中渲染一致。
- 新增 Demo\Delphi\FormFill 示例,展示表單填寫儲存與填寫展平兩套完整工作流。
Version 1.1.2
- 新增儲存時 PDF 流壓縮能力。新增的 TPdf.Compressed 屬性(預設啟用)在 SaveAs 時將未壓縮的內容流重寫為 FlateDecode 壓縮流,可顯著縮減程式生成的 PDF 檔案體積。如需為特定工具保留非壓縮格式,在呼叫 SaveAs 前將 Compressed 設為 False 即可。
Version 1.1.1
- Win64 包構建不再包含設計期註冊單元,避免在僅執行時部署場景下引入不必要的設計期依賴,消除相關構建錯誤。
- PDFium DLL 載入順序調整為:優先搜尋 Win32 或 Win64 應用程式子目錄(標準檔名 pdfium.dll 與 pdfium.v8.dll),找不到時再依次回退到程式同目錄和 Windows 系統目錄。該順序與元件包附帶的 DLL 佈局一致,安裝無需額外配置。
Version 1.1.0
- 修復 TPdfView 雙頁模式下的視覺裁剪缺陷:左右兩個頁面瓦片共用同一裁剪矩形,導致頁面內容向中間裝訂線區域溢位。現在每個瓦片獨立裁剪,內容始終限定在各自頁面邊界內。
- 改進 Delphi 示例在找不到 PDFium DLL 時的錯誤提示,明確告知應檢查的 DLL 名稱與目錄位置。