BI/ID/EI hacia un image XObject reutilizable y reemplazando cada bloque inline por un operador /ImN Dofunction SaveAsInlineImagesExternalised(Stream: TStream; const Options: TPdfInlineImageExternaliseOptions; out Report: TPdfInlineImageExternaliseReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsInlineImagesExternalised(const FileName: string; const Options: TPdfInlineImageExternaliseOptions; out Report: TPdfInlineImageExternaliseReport; AllowSignedDocument: Boolean = False): Boolean;
Cada stream de contenido de página se decodifica y se examina en busca de imágenes inline; cada bloque BI/ID/EI se extrae hacia un nuevo objeto indirecto image XObject
Las abreviaturas del diccionario de imagen inline (/W, /H, /BPC, /CS, /F, abreviaturas de espacio de color y de filtro) se expanden a sus nombres completos de image XObject, de modo que el objeto extraído cumpla con el estándar
El bloque inline del stream de contenido se reemplaza por /ImN Do, el diccionario /Resources /XObject de la página se actualiza con la nueva referencia y el stream de contenido reescrito se comprime con Flate
Los números y generaciones de los objetos existentes permanecen estables; los nuevos image XObjects y streams de contenido se agregan al final
TPdfInlineImageExternaliseOptions.SkipUnsafePages deja sin cambios las páginas cuyos límites de imagen inline no pueden determinarse, en lugar de abortar el guardadoTPdfInlineImageExternaliseReport informa los conteos externalizados, omitidos y fallidos más la cantidad de XObjects creados/Resources indirecto o contenido no resoluble se omitenAllowSignedDocument se habilite de forma explícita, porque una reescritura completa invalida los rangos de bytes de las firmas existentes
Options.SkipUnsafePages:= True;
Pdf.SaveAsInlineImagesExternalised('externalised.pdf', Options, Report);
WriteLn('externalised ', Report.ExternalisedCount, ' inline images');