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 в сохраненных байтах)
SaveAsPdfE добавляет маркеры формата, требуемые ISO 24517-1, но не внедряет отсутствующие шрифты, не удаляет запрещенные XObject, не нормализует ключи ExtGState и не убирает формы XFA. Подготовка документа, содержимое которого уже соответствует PDF/E-1 по §7–§11, по-прежнему остается обязанностью вызывающего кода. Используйте ValidatePdfE, чтобы увидеть проблемы на уровне формата, которые решает этот метод; для проверок на уровне содержимого сочетайте его с внешним валидатором PDF/E (callas pdfaPilot, axesPDF, ...)/ID в trailer и строки внутри него должны быть прямыми объектами; SaveAsPdfE записывает /ID напрямую, удовлетворяя этому ограничению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 := 'PDFiumPas';
Pdf1.SaveAsPdfE('C:\Bridge.pdfe.pdf', Opts);
end;