BI/ID/EI dans un XObject d’image réutilisable et en remplaçant chaque bloc inline par un opérateur /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;
Chaque flux de contenu de page est décodé et scanné pour les images inline ; chaque bloc BI/ID/EI est extrait dans un nouvel objet indirect d’XObject d’image
Les abréviations de dictionnaire d’image inline (/W, /H, /BPC, /CS, /F, abréviations d’espace de couleur et de valeur de filtre) sont étendues à leurs noms complets d’XObject d’image afin que l’objet extrait soit conforme aux normes
Le bloc inline dans le flux de contenu est remplacé par /ImN Do, le dictionnaire /Resources /XObject de la page est mis à jour avec la nouvelle référence, et le flux de contenu réécrit est Flate-compressé
Les numéros d’objet et générations des objets existants restent stables ; de nouveaux XObjects d’image et flux de contenu sont ajoutés
TPdfInlineImageExternaliseOptions.SkipUnsafePages laisse inchangées les pages dont les limites d’image inline ne peuvent pas être déterminées au lieu d’avorter la sauvegardeTPdfInlineImageExternaliseReport rapporte les comptages externalisés, ignorés et échoués plus le nombre de XObjects créés/Resources indirectes ou contenu non résoluble sont ignoréesAllowSignedDocument est explicitement activé car une réécriture complète invalide les plages d’octets de signature existantes
Options.SkipUnsafePages:= True;
Pdf.SaveAsInlineImagesExternalised('externalised.pdf', Options, Report);
WriteLn('externalised ', Report.ExternalisedCount, ' inline images');