BI/ID/EI do wielokrotnie używanego XObjectu obrazu i zastępując każdy blok wbudowany operatorem /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;
Każdy strumień treści strony jest dekodowany i skanowany w poszukiwaniu obrazów wbudowanych; każdy blok BI/ID/EI jest wyodrębniany do nowego obiektu pośredniego XObject obrazu
Skróty słownika obrazu wbudowanego (/W, /H, /BPC, /CS, /F, skróty wartości przestrzeni barw i filtrów) są rozwijane do pełnych nazw XObject obrazu, dzięki czemu wyodrębniony obiekt jest zgodny ze standardem
Blok wbudowany w strumieniu treści jest zastępowany przez /ImN Do, słownik /Resources /XObject strony jest aktualizowany o nowe odwołanie, a przepisany strumień treści jest kompresowany algorytmem Flate
Numery obiektów i generacje istniejących obiektów pozostają stabilne; nowe XObjecty obrazów i strumienie treści są dopisywane
TPdfInlineImageExternaliseOptions.SkipUnsafePages pozostawia niezmienione strony, których granic obrazów wbudowanych nie da się ustalić, zamiast przerywać zapisTPdfInlineImageExternaliseReport raportuje liczby wyodrębnionych, pominiętych i niepomyślnych przypadków oraz liczbę utworzonych XObjectów/Resources lub nierozwiązywalną treścią są pomijaneAllowSignedDocument zostało jawnie włączone, ponieważ pełne przepisanie unieważnia istniejące zakresy bajtowe podpisów
Options.SkipUnsafePages:= True;
Pdf.SaveAsInlineImagesExternalised('externalised.pdf', Options, Report);
WriteLn('externalised ', Report.ExternalisedCount, ' inline images');