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) — строгий транспортный поднабор PDF для растровых изображений, используемый TWAIN Working Group в процессах сканирования документов; он несёт фиксированный по размеру растровый буфер на страницу, поддерживает изображения bitonal / grayscale / RGB и только сжатие FlateDecode / CCITTFaxDecode / DCTDecode
Постобработка вписывает в сохранённый поток пять классов байтов:
%PDF-raster-1.0, записываемый между словарём trailer и ключевым словом startxref (ISO 23504-1 §5). Это уникально для PDF/R — остальные стандарты PDF/x идентифицируют себя через XMP и записи информационного словаряВывод остаётся побайтово идентичным результату базового SaveAs вплоть до
конца исходного PDF; дописывается только инкрементальное обновление
(а исходные каталог / Info подменяются урезанными версиями через перезапись с тем же номером объекта). Разница перегрузок
только в том, как передаётся конфигурация: форма только с именем файла берёт
TPdfRSaveOptions.Default с
автозаполнением четырёх полей Info и DocumentId из
FPDF_GetMetaText / FPDF_GetFileIdentifier
При успехе возвращается True
[0 0 w h], разрешены только фильтры FlateDecode / CCITTFaxDecode (bitonal) / DCTDecode (8-битный gray или RGB), object streams запрещены, каждая косвенная ссылка обязана иметь generation number ноль, и каждая страница по сути является единственным растровым изображением. Сгенерированные 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');