function SaveAsPdfE(const FileName: string): Boolean; overload;
function SaveAsPdfE(const FileName: string; const Options: TPdfESaveOptions): Boolean; overload;
SaveAsPdfE performs the regular SaveAs first, then layers an incremental update on top of the saved bytes that promotes the file to a PDF/E-1 archive (ISO 24517-1:2008, the engineering document format derived from PDF 1.6). The post-processing injects four classes of markers into the saved stream:
pdfe:ISO_PDFEVersion = "PDF/E-1") plus the matching pdfaExtension:schemas description for the pdfe namespace, and bridged Dublin Core / xmp / pdf properties inherited from ISO 19005-1 §6.7 via §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) entry required by §5 SHALL clause. The Info object keeps its original object number; PDFium-emitted Info entries are preserved untouched. When the source trailer carries no /Info, a fresh Info dictionary is synthesised and a new /Info reference is written into the trailer./Metadata reference pointing to the new XMP stream./ID array (§6.2): reused from FPDF_GetFileIdentifier when the source PDF already carries one, otherwise derived deterministically from the source bytes.The output stays byte-identical to the base SaveAs result up to the
end of the original PDF; only the incremental update is appended.
Existing readers that don't understand PDF/E still render the file
exactly as the regular SaveAs would. The two overloads differ only
in how the configuration is passed in: the file-name-only form uses
TPdfESaveOptions.Default with auto-population from
FPDF_GetMetaText and FPDF_GetFileIdentifier,
while the TPdfESaveOptions form lets the caller override
Title, Author, Subject, Keywords, Creator, Producer, CreationDate,
ModDate, DocumentId, InstanceId, and the Version string
(defaults to "PDF/E-1").
Returns True on success. Returns False if
the base SaveAs failed or if the incremental update could not be
attached (typically an invalid trailer in the saved bytes).
http://www.aiim.org/pdfe/ns/id/ (AIIM industry convention, matching pdfa / pdfua URIs). The text of ISO 24517-1:2008 §13.3 prints this URI without one of the "i" letters, which appears to be a typo. Override via TPdfESaveOptions.Version if a validator demands the strict-spec spelling.
// 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 := 'PDFiumVCL';
Pdf1.SaveAsPdfE('C:\Bridge.pdfe.pdf', Opts);
end;