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;