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) هو subset صارم لنقل الصور النقطية من PDF تستخدمه TWAIN Working Group في سير عمل المستندات الممسوحة؛ إذ يحمل مخزنًا نقطيًا ثابت الحجم لكل صفحة، ويدعم صور bitonal / grayscale / RGB وضغط FlateDecode / CCITTFaxDecode / DCTDecode فقط
تحقن المعالجة اللاحقة خمس فئات من البايتات في التدفق المحفوظ:
%PDF-raster-1.0 المكتوب بين قاموس الـ trailer والكلمة المفتاحية startxref (البند §5 من ISO 23504-1). وهذه سمة فريدة لـ PDF/R — فمعايير PDF/x الأخرى تعرّف عن نفسها عبر مدخلات XMP وقاموس Info بدلًا من ذلكيبقى الإخراج مطابقًا بالبايت لنتيجة SaveAs الأساسية حتى
نهاية ملف PDF الأصلي؛ ولا يُلحق سوى التحديث التزايدي
(مع استبدال catalog و Info المصدرين بنسختين مقشّطتين عبر إعادة الكتابة بأرقام الكائنات نفسها). والفرق الوحيد بين
الصيغتين الزائدتين هو طريقة تمرير الإعداد: الصيغة باسم الملف فقط
تستخدم TPdfRSaveOptions.Default مع التعبئة التلقائية
لحقول Info الأربعة و DocumentId من
FPDF_GetMetaText / FPDF_GetFileIdentifier
يُرجع True عند النجاح
[0 0 w h]، ولا تُسمح إلا مرشحات FlateDecode / CCITTFaxDecode (bitonal) / DCTDecode (رمادي 8 بت أو RGB)، ولا object streams، وكل مرجع غير مباشر يجب أن يحمل رقم توليد صفرًا، وكل صفحة هي في جوهرها صورة نقطية واحدة. والمستندات المولدة من PDFium التي تطابق هذا النمط أصلًا (مثل مخرجات الماسحات الضوئية الممررة عبر PDFium لإعادة التغليف) تعمل جيدًا؛ أما ملفات PDF الغنية بالمحتوى فلا تعمل غالبًاTPdfRSaveOptions.StripCatalogOptionalEntries و StripInfoOptionalEntries هي True؛ واضبطهما على False إذا أردت أن يحفظ الحاقن كل مدخلات المصدر (لن يستوفي الإخراج عندها البند §6.3 / §6.4.3 لكن علامة الإصدار و XMP تبقى مضافة)%PDF-2.0 وتعمية AES. وملفات PDF المولدة من PDFium تستخدم ترويسة 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');