function SaveAsPdfE(const FileName: string): Boolean; overload;
function SaveAsPdfE(const FileName: string; const Options: TPdfESaveOptions): Boolean; overload;
SaveAsPdfE сначала выполняет обычный SaveAs, а затем поверх сохранённых байтов накладывает инкрементальное обновление, повышающее файл до архива PDF/E-1 (ISO 24517-1:2008, инженерный формат документов на базе PDF 1.6). Постобработка вписывает в сохранённый поток четыре класса маркеров:
pdfe:ISO_PDFEVersion = "PDF/E-1") плюс соответствующее описание pdfaExtension:schemas для пространства имён pdfe и мостовые свойства Dublin Core / xmp / pdf, унаследованные из ISO 19005-1 §6.7 через §13.1 (dc:title / dc:creator / dc:description / xmp:CreateDate / xmp:ModifyDate / xmp:MetadataDate / xmp:CreatorTool / pdf:Producer / pdf:Keywords)/ISO_PDFEVersion (PDF/E-1), которую требует пункт SHALL из §5. Info-объект сохраняет исходный номер объекта; записи Info, испущенные PDFium, остаются нетронутыми. Если в исходном trailer нет /Info, синтезируется свежий словарь Info, а в trailer пишется новая ссылка /Info/Metadata, указывающей на новый XMP-поток/ID в trailer (§6.2): переиспользуется из FPDF_GetFileIdentifier, если у исходного PDF он уже есть, иначе детерминированно выводится из исходных байтовВывод остаётся побайтово идентичным результату базового SaveAs вплоть до
конца исходного PDF; дописывается только инкрементальное обновление
Существующие ридеры, не знающие про PDF/E, по-прежнему отрисуют файл
ровно так же, как обычный SaveAs. Разница перегрузок только в том, как
передаётся конфигурация: форма только с именем файла берёт
TPdfESaveOptions.Default с автозаполнением из
FPDF_GetMetaText и FPDF_GetFileIdentifier,
а форма с TPdfESaveOptions позволяет вызывающему переопределить
Title, Author, Subject, Keywords, Creator, Producer, CreationDate,
ModDate, DocumentId, InstanceId и строку Version
(по умолчанию "PDF/E-1")
При успехе возвращается True. False возвращается, если
базовый SaveAs провалился или инкрементальное обновление не удалось
приложить (обычно из-за невалидного trailer в сохранённых байтах)
http://www.aiim.org/pdfe/ns/id/ (отраслевая конвенция AIIM, в одном ряду с URI pdfa / pdfua). Текст ISO 24517-1:2008 §13.3 печатает этот URI без одной буквы "i", что выглядит опечаткой. Переопределите через TPdfESaveOptions.Version, если валидатор требует строгое написание по спецификации
// Simple PDF/E-1 output, options auto-populated from the document
if Pdf1.SaveAsPdfE('C:\Drawing.pdfe.pdf') then
ShowMessage('Saved PDF/E-1');
// With explicit options (Title overridden, custom Producer)
var
Opts: TPdfESaveOptions;
begin
Opts := TPdfESaveOptions.Default;
Opts.Title := 'Bridge Assembly Drawing - Sheet 12';
Opts.Producer := 'PDFium Delphi Component';
Pdf1.SaveAsPdfE('C:\Bridge.pdfe.pdf', Opts);
end;