function SaveAsPdfEToStream(Stream: TStream; const Options: TPdfESaveOptions): Boolean;
SaveAsPdfEToStream — потоковый аналог SaveAsPdfE —
создаёт тот же вывод PDF/E-1, но записывает результат в любой
поддерживающий позиционирование TStream, предоставленный вызывающим.
Полезно для интеграции инженерных рабочих процессов, где полезные
данные PDF/E передаются напрямую в системы PLM / PDM, столбцы BLOB,
архивные контейнеры или конвейеры загрузки по HTTP без обращения к диску
Логика постобработки идентична SaveAsPdfE(FileName, Options):
сначала выполняется базовый SaveAs, затем инкрементное обновление внедряет
поток метаданных XMP (с pdfe:ISO_PDFEVersion и описанием схемы расширения),
переписывает Information-словарь документа, добавляя обязательную запись
/ISO_PDFEVersion (PDF/E-1), обновляет каталог для ссылки на
новый XMP и создаёт трейлер со свежим массивом /ID. Пустые поля
Options автоматически заполняются из средств чтения PDFium
(FPDF_GetMetaText, FPDF_GetFileIdentifier), поэтому
типичному вызывающему достаточно переопределить поле Version для нестандартных
значений Part / Amd / Corr
Возвращает True в случае успеха. Выходной поток остаётся в
позиции после последнего записанного байта. Возвращает False,
если базовый SaveAs завершился неудачей или постобработку не удалось
прикрепить
/ISO_PDFEVersion. Существующие значения версии PDF/E заменяются
var
Stream: TMemoryStream;
Opts: TPdfESaveOptions;
begin
Stream := TMemoryStream.Create;
try
Opts := TPdfESaveOptions.Default;
Opts.Producer := 'CAD-Workflow 2026';
if Pdf1.SaveAsPdfEToStream(Stream, Opts) then
begin
Stream.Position := 0;
PushToPLM(Stream);
end;
finally
Stream.Free;
end;
end;