function SaveAsPdfE(const FileName: string): Boolean; overload;
function SaveAsPdfE(const FileName: string; const Options: TPdfESaveOptions): Boolean; overload;
SaveAsPdfE realiza primero el SaveAs normal y después superpone una
actualización incremental sobre los bytes guardados que promociona el archivo a un archivo PDF/E-1
(ISO 24517-1:2008, el formato de documentos de ingeniería derivado de PDF 1.6). El posprocesado
inyecta cuatro clases de marcadores en el flujo guardado:
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.La salida permanece idéntica en bytes al resultado base de SaveAs hasta el
final del PDF original; solo se añade la actualización incremental. Los lectores que no entienden
PDF/E siguen renderizando el archivo exactamente como lo haría el SaveAs normal. Las dos
sobrecargas difieren solo en cómo se pasa la configuración: la forma de solo nombre de archivo usa
TPdfESaveOptions.Default con autocompletado desde FPDF_GetMetaText y
FPDF_GetFileIdentifier, mientras que la forma TPdfESaveOptions permite al
llamador anular Title, Author, Subject, Keywords, Creator, Producer, CreationDate, ModDate, DocumentId,
InstanceId y la cadena Version (por defecto "PDF/E-1")
Devuelve True si tiene éxito. Devuelve False si falló el SaveAs
base o si no se pudo acoplar la actualización incremental (normalmente por un trailer no válido en los bytes
guardados)
SaveAsPdfE adjunta los marcadores de formato de archivo requeridos por ISO 24517-1 — no incrusta fuentes ausentes, no elimina XObjects prohibidos, no normaliza claves ExtGState ni elimina formularios XFA. Crear un documento cuyo contenido ya cumpla PDF/E-1 (según §7–§11) sigue siendo responsabilidad de quien llama. Usa ValidatePdfE para mostrar los problemas a nivel de formato que este método cubre; combínalo con un validador PDF/E externo (callas pdfaPilot, axesPDF, ...) para comprobaciones a nivel de contenido/ID del trailer y las cadenas que contiene deben ser objetos directos; SaveAsPdfE escribe el /ID directamente, cumpliendo esa restricciónxref / trailer /Info siguen siendo válidashttp://www.aiim.org/pdfe/ns/id/ (convención industrial AIIM, que coincide con los URI pdfa / pdfua). El texto de ISO 24517-1:2008 §13.3 imprime este URI sin una de las letras "i", lo que parece una errata. Sobrescribe mediante TPdfESaveOptions.Version si un validador exige la ortografía estricta de la especificación
// 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;