function SaveAsPdfRToStream(Stream: TStream; const Options: TPdfRSaveOptions): Boolean;
SaveAsPdfRToStream — потоковый вариант SaveAsPdfR; те же выходные байты записываются в любой seekable TStream, который передает вызывающий код. Это удобно для конвейеров захвата и архивирования документов, где выход сканера получает маркеры PDF/R-1 и сразу отправляется в хранилище содержимого без обращения к диску
Постобработка полностью совпадает с SaveAsPdfR: каталог урезается до белого списка §6.3, словарь Info — до белого списка §6.4.3, поток XMP содержит четыре записи из Table 1 §6.4.4, добавляется footer-комментарий %PDF-raster-1.0 и trailer /ID. Из Info автоматически заполняются только четыре разрешенные записи (Creator / Producer / CreationDate / ModDate); Title / Author / Subject / Keywords намеренно не переносятся, потому что PDF/R запрещает их в словаре Info
Возвращает True при успехе
SaveAsPdfR: структурные требования PDF/R, включая per-page Contents, форму MediaBox, разрешенные фильтры и отсутствие object streams, должны уже выполняться в исходном PDF. SaveAsPdfRToStream только добавляет маркеры уровня формата и удаляет запрещенные записи словарейTMemoryStream для конвейеров в памяти; полученные байты можно напрямую передать в хранилище содержимого или в API валидатора PDF/R
var
Stream: TMemoryStream;
Opts: TPdfRSaveOptions;
begin
Stream := TMemoryStream.Create;
try
Opts := TPdfRSaveOptions.Default;
Opts.Producer := 'PDFiumPas scan pipeline';
if Pdf1.SaveAsPdfRToStream(Stream, Opts) then
begin
Stream.Position := 0;
ArchiveScan(Stream);
end;
finally
Stream.Free;
end;
end;