function SaveAsPdfXToStream(Stream: TStream; const Options: TPdfXSaveOptions): Boolean;
SaveAsPdfXToStream — потоковый аналог SaveAsPdfX —
те же выходные байты, записанные в любой поддерживающий позиционирование
TStream, предоставленный вызывающим. Полезно для интеграции допечатных
рабочих процессов, где полезные данные PDF/X передаются напрямую в порталы
подачи печати, системы MIS / учёта заданий, столбцы BLOB, контейнеры ZIP
или конвейеры загрузки по HTTP
Постобработка идентична SaveAsPdfX: внедрение XMP с идентификатором
pdfxid и описанием схемы расширения, перезапись Information-словаря
документа с GTS_PDFXVersion / GTS_PDFXConformance / Trapped, обновление
каталога со ссылками /Metadata и /OutputIntents, словарь OutputIntent с
/S /GTS_PDFX и встроенным профилем ICC и массив /ID трейлера. Пустые поля
Options автоматически заполняются из FPDF_GetMetaText /
FPDF_GetFileIdentifier
Возвращает True после сериализации, оставляя выходной поток в позиции после последнего записанного байта
False возвращается для неактивного документа или провалившегося базового сохранения; успешный возврат не является вердиктом о полном соответствии PDF/X
Для pxc1a задайте в Options.IccProfileData структурно корректный выходной профиль ICC v2 с классом prtr, данными CMYK, PCS Lab или XYZ и требуемыми двунаправленными LUT
Отсутствующие или непригодные данные дают EArgumentException до того, как целевой поток будет изменён
Для PDF/X-1a метки output-condition, всё ещё равные встроенному значению sRGB по умолчанию, заменяются описанием проверенного профиля ICC
Если этого описания нет, обязателен явный непустой, нестандартный OutputConditionIdentifier, который даёт замещающую метку
Явно заданные метки сохраняются; затронутые поля перечислены в SaveAsPdfX
var
Stream: TMemoryStream;
Opts: TPdfXSaveOptions;
begin
Stream := TMemoryStream.Create;
try
Opts := TPdfXSaveOptions.Default;
Opts.Conformance := pxc4;
Opts.Title := 'Spring Catalogue 2026';
if Pdf1.SaveAsPdfXToStream(Stream, Opts) then
begin
Stream.Position := 0;
SubmitToPrinter(Stream);
end;
finally
Stream.Free;
end;
end;