PDFium Delphi Component Docs

SaveAsPdfX Метод

Компонент: TPdf  ·  Модуль: PDFium
Сохраняет кандидат PDF/X с идентификационными метаданными и встроенным выходным профилем для выбранного варианта ISO 15930

Syntax

function SaveAsPdfX(const FileName: string): Boolean; overload;
function SaveAsPdfX(const FileName: string; const Options: TPdfXSaveOptions): Boolean; overload;

Description

SaveAsPdfX сначала выполняет обычный SaveAs, а затем поверх сохранённых байтов накладывает инкрементальное обновление для выбранного варианта обмена печатными данными PDF/X. Постобработка вписывает в сохранённый поток пять классов байтов:

Trailer переписывается, чтобы добавить массив /ID. Вывод остаётся побайтово идентичным результату базового SaveAs вплоть до конца исходного PDF; дописывается только инкрементальное обновление. Разница перегрузок только в том, как передаётся конфигурация: форма только с именем файла берёт TPdfXSaveOptions.Default (PDF/X-4 + sRGB + /Trapped /False) с автозаполнением полей Info / DocumentId из FPDF_GetMetaText и FPDF_GetFileIdentifier

Возвращает True после записи подготовленных байтов или False, если документ неактивен или базовое сохранение провалилось Успешная сериализация не означает полного соответствия PDF/X

Для pxc1a IccProfileData должен содержать структурно корректный выходной профиль ICC v2 с классом устройства prtr, цветовым пространством данных CMYK, PCS Lab или XYZ и требуемыми двунаправленными LUT Отсутствующие, RGB, обрезанные, неверно классифицированные или неподдерживаемые данные профиля дают EArgumentException; запасного варианта с sRGB для PDF/X-1a нет

Для PDF/X-1a значения OutputCondition, OutputConditionIdentifier и OutputIntentInfo, всё ещё равные встроенному значению по умолчанию sRGB IEC61966-2.1, заменяются описанием проверенного профиля Если у профиля нет описания, задайте непустой, нестандартный OutputConditionIdentifier; он даст замещающую метку, иначе вызов бросит EArgumentException Явно заданные вызывающим метки сохраняются

Сериализация и эти проверки профиля завершаются во временном хранилище сохранения до того, как целевой файл будет открыт для записи Поэтому существующая цель остаётся без изменений, если валидация профиля бросает исключение или базовое сохранение проваливается Это не гарантия атомарной замены файла: сбой ввода-вывода после открытия цели может оставить частичный вывод

Remarks

Example

// Simple PDF/X-4 with bundled sRGB OutputIntent
if Pdf1.SaveAsPdfX('C:\AdProof.pdfx.pdf') then
  ShowMessage('Saved PDF/X-4');

// PDF/X-1a with a custom CMYK ICC profile (e.g. FOGRA39)
var
  Opts: TPdfXSaveOptions;
begin
  Opts := TPdfXSaveOptions.Default;
  Opts.Conformance := pxc1a;
  Opts.IccProfileData := TFile.ReadAllBytes('C:\ICC\FOGRA39.icc');
  Opts.OutputCondition := 'Coated FOGRA39 (ISO 12647-2:2004)';
  Opts.OutputConditionIdentifier:= 'FOGRA39';
  Opts.RegistryName := 'http://www.color.org';
  Opts.Trapped := ptFalse;
  Pdf1.SaveAsPdfX('C:\AdProof.cmyk.pdfx.pdf', Opts);
end;

See Also

SaveAsPdfXToStream, ValidatePdfX, PdfXConformance, SaveAsPdfA, SaveAsPdfE