BI/ID/EI в переиспользуемый image XObject и заменяя каждый встроенный блок оператором /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;
Каждый поток содержимого страницы декодируется и сканируется на встроенные изображения; каждый блок BI/ID/EI извлекается в новый косвенный объект image XObject
Сокращения словаря встроенного изображения (/W, /H, /BPC, /CS, /F, сокращения значений цветового пространства и фильтра) разворачиваются в полные имена image XObject, чтобы извлечённый объект соответствовал стандарту
Встроенный блок в потоке содержимого заменяется на /ImN Do, словарь /Resources /XObject страницы пополняется новой ссылкой, а переписанный поток содержимого сжимается Flate
Номера объектов и поколения существующих объектов остаются стабильными; новые image XObject и потоки содержимого добавляются в конец
TPdfInlineImageExternaliseOptions.SkipUnsafePages оставляет страницы, границы встроенных изображений которых не удаётся определить, без изменений вместо прерывания сохраненияTPdfInlineImageExternaliseReport сообщает количества вынесенных, пропущенных и неудавшихся изображений, а также количество созданных XObject/Resources или неразрешимым содержимым пропускаютсяAllowSignedDocument, поскольку полная перезапись аннулирует существующие байтовые диапазоны подписей
Options.SkipUnsafePages:= True;
Pdf.SaveAsInlineImagesExternalised('externalised.pdf', Options, Report);
WriteLn('externalised ', Report.ExternalisedCount, ' inline images');