function SaveAsPdfUaToStream(Stream: TStream; const Options: TPdfUaSaveOptions): Boolean;
SaveAsPdfUaToStream — потоковый аналог SaveAsPdfUa —
создаёт тот же вывод PDF/UA-1, но записывает результат в любой
поддерживающий позиционирование TStream, предоставленный вызывающим.
Полезно для конвейеров загрузки по HTTP, столбцов BLOB, слоёв кэша
в памяти, архивных контейнеров (ZIP / TAR) или любого рабочего
процесса, где байты PDF/UA не должны попадать на диск
Логика постобработки идентична SaveAsPdfUa(FileName, Options):
сначала выполняется базовый SaveAs, затем инкрементное обновление внедряет
поток метаданных XMP (с обязательным dc:title согласно
ISO 14289-1 §7.1 и описанием схемы расширения pdfuaid), каталог
/MarkInfo и /ViewerPreferences, если их нет в
источнике, каталог /Lang, когда вызывающий предоставил тег
BCP 47, и массив /ID трейлера. Пустые поля Options
автоматически заполняются из средств чтения PDFium
(FPDF_GetMetaText, FPDF_GetFileIdentifier,
FPDFCatalog_GetLanguage), поэтому типичному вызывающему
достаточно задать DocumentTitle или Language
при необходимости
Возвращает True в случае успеха. Выходной поток остаётся в
позиции после последнего записанного байта. Возвращает False,
если базовый SaveAs завершился неудачей или постобработку не удалось
прикрепить (обычно из-за зашифрованного источника)
saRemoveSecurity
var
Stream: TMemoryStream;
Opts: TPdfUaSaveOptions;
begin
Stream := TMemoryStream.Create;
try
Opts := TPdfUaSaveOptions.Default;
Opts.DocumentTitle := 'Quarterly Report';
Opts.Language := 'en';
if Pdf1.SaveAsPdfUaToStream(Stream, Opts) then
begin
Stream.Position := 0;
UploadToArchive(Stream);
end;
finally
Stream.Free;
end;
end;