function SaveAsPdfR(const FileName: string): Boolean; overload;
function SaveAsPdfR(const FileName: string; const Options: TPdfRSaveOptions): Boolean; overload;
SaveAsPdfR 會先執行一般 SaveAs,再於儲存後的位元組上層 附加一個掛上 PDF/R-1 檔案格式標記的 增量更新。PDF/R-1(ISO 23504-1:2020)是 TWAIN Working Group 供掃描文件工作流程使用的嚴格 PDF 光柵影像傳輸子集;每頁攜帶固定大小的 光柵緩衝區,只支援雙色 / 灰階 / RGB 影像 與 FlateDecode / CCITTFaxDecode / DCTDecode 壓縮
後處理會把五類位元組注入儲存後的串流:
%PDF-raster-1.0 版本識別註解,寫在 trailer 字典與 startxref 關鍵字之間(ISO 23504-1 §5)。這是 PDF/R 獨有的作法 — 其他 PDF/x 標準改以 XMP 與 Info 字典項目表明身分輸出在原始 PDF 結尾之前與基礎 SaveAs 的結果逐位元組相同;
只有增量更新會被附加(且來源目錄 / Info 會透過同物件編號
改寫,替換為刪減後的版本)。兩個多載
的差異僅在於設定的傳入方式:僅傳檔名的
形式使用 TPdfRSaveOptions.Default,並
從 FPDF_GetMetaText / FPDF_GetFileIdentifier
自動填入四個 Info 欄位與 DocumentId
成功時傳回 True
[0 0 w h]、只允許 FlateDecode / CCITTFaxDecode(雙色)/ DCTDecode(8 位元灰階或 RGB)濾鏡、不得有 object stream、每個間接參照的世代編號都必須為零,而且每頁基本上就是單一光柵影像。已符合此模式的 PDFium 產生文件(例如經 PDFium 重新打包的掃描器輸出)運作良好;任意內容豐富的 PDF 通常則否TPdfRSaveOptions.StripCatalogOptionalEntries 與 StripInfoOptionalEntries 預設為 True;若您希望注入器保留所有來源項目,可設為 False(此時輸出不符合 §6.3 / §6.4.3,但版本標記與 XMP 仍會附加)%PDF-2.0 檔頭與 AES 加密。PDFium 產生的 PDF 使用 1.x 檔頭,因此加密輸出若不再另行重存,就不是 PDF/R-1 的候選
// Simple PDF/R-1 output; only meaningful when the source PDF is
// already a raster scan (one image per page, allowed filters only).
if Pdf1.SaveAsPdfR('C:\Scan.pdfr.pdf') then
ShowMessage('Saved with PDF/R-1 markers');
// Validate to see whether structural rules are also satisfied
Pdf1.FileName := 'C:\Scan.pdfr.pdf';
Pdf1.Active := True;
if Pdf1.ValidatePdfR.IsCompliant then
ShowMessage('PDF/R-1 conformant');