PDFium Delphi Component Docs

SaveAsPdfA Метод

Компонент: TPdf  ·  Модуль: PDFium
Сохраняет текущий документ как файл, совместимый с PDF/A-1b, путём постобработки базового PDF с добавлением incremental update, который внедряет поток метаданных XMP, sRGB ICC OutputIntent и обновлённый каталог документа

Syntax

function SaveAsPdfA(const FileName: string; Conformance: TPdfAConformance = pac1b): Boolean; overload;
function SaveAsPdfA(const FileName: string; const Options: TPdfASaveOptions): Boolean; overload;

Description

SaveAsPdfA сначала выполняет обычный SaveAs, затем наслаивает incremental update поверх сохранённых байтов, повышающий файл до архива PDF/A (по умолчанию PDF/A-1b; ISO 19005-1 с Cor.1:2007). Постобработка внедряет в сохранённый поток четыре вещи:

Результат побайтово совпадает с выводом базового SaveAs до конца исходного PDF; добавляется только incremental update. Существующие программы чтения, не понимающие PDF/A, по-прежнему отображают файл точно так же, как это сделал бы обычный SaveAs. Две перегрузки различаются лишь способом передачи соответствия и параметров — форма TPdfAConformance является сокращением для типичного случая (pac1b); форма TPdfASaveOptions принимает запись с полной поверхностью конфигурации, включая необязательные переопределения Title, Author, Subject, Keywords, Creator, Producer, CreationDate, ModDate, DocumentId и InstanceId. Пустые поля заполняются автоматически из FPDF_GetMetaText / FPDF_GetFileIdentifier, поэтому обычному вызывающему коду не нужно задавать никакое поле, кроме Conformance

Значение Conformance выбирает целевой стандарт и уровень. PDF/A-1 (ISO 19005-1) предлагает pac1b и pac1a; PDF/A-2 (ISO 19005-2) и PDF/A-3 (ISO 19005-3) добавляют уровни b, u и a как pac2b / pac2u / pac2a и pac3b / pac3u / pac3a. Внедряемые pdfaid:part (1, 2 или 3) и pdfaid:conformance (A, B или U) следуют запрошенному значению, тогда как OutputIntent сохраняет подтип GTS_PDFA1, который ISO 19005-2 оставляет для каждой части. Поскольку постпроцессор не может синтезировать логическую структуру, запрос уровня A (pac1a / pac2a / pac3a) автоматически понижается до соответствующего уровня B, если исходный документ лишён структуры tagged PDF, требуемой этим уровнем — поэтому сохранённый файл никогда не заявляет ложное соответствие уровню A

Возвращает True в случае успеха. Возвращает False, если базовый SaveAs завершился ошибкой, если incremental update не удалось присоединить (PDF слишком короткий, недопустимый trailer) или если данные профиля ICC были переданы, но не прошли проверку

Remarks

Example

// Simple PDF/A-1b output using the bundled sRGB profile
if Pdf1.SaveAsPdfA('C:\Report.pdfa.pdf') then
  ShowMessage('Saved PDF/A-1b');

// With a custom ICC profile
var
  Opts: TPdfASaveOptions;
begin
  Opts := Default(TPdfASaveOptions);
  Opts.Conformance := pac1b;
  Opts.IccProfileData := TFile.ReadAllBytes('C:\Profiles\Coated.icc');
  Pdf1.SaveAsPdfA('C:\Report.cmyk.pdfa.pdf', Opts);
end;

See Also

SaveAsPdfAToStream, ValidatePdfA, PdfAConformance, SaveAs