BI/ID/EI para um image XObject reutilizável e substituindo cada bloco inline por um 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 content stream de página é descodificado e analisado à procura de imagens inline; cada bloco BI/ID/EI é extraído para um novo objeto indireto image XObject
As abreviaturas do dicionário de imagem inline (/W, /H, /BPC, /CS, /F, abreviaturas de espaços de cor e de filtros) são expandidas para os nomes completos de image XObject, para que o objeto extraído esteja em conformidade com a norma
O bloco inline no content stream é substituído por /ImN Do, o dicionário /Resources /XObject da página é atualizado com a nova referência e o content stream reescrito é comprimido com Flate
Os números e gerações dos objetos existentes mantêm-se estáveis; os novos image XObjects e content streams são acrescentados
TPdfInlineImageExternaliseOptions.SkipUnsafePages deixa inalteradas as páginas cujos limites de imagens inline não podem ser determinados, em vez de abortar a gravaçãoTPdfInlineImageExternaliseReport reporta contagens de externados, ignorados e falhados, mais a contagem de XObjects criados/Resources indireto ou conteúdo não resolúvel são ignoradasAllowSignedDocument estiver explicitamente ativado, porque uma reescrita completa invalida os intervalos de bytes das assinaturas existentes
Options.SkipUnsafePages:= True;
Pdf.SaveAsInlineImagesExternalised('externalised.pdf', Options, Report);
WriteLn('externalised ', Report.ExternalisedCount, ' inline images');