/Info du trailerfunction SaveAsReachable(Stream: TStream; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsReachable(const FileName: string; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean;
PDFium écrit d’abord une copie non incrémentale du document en mémoire courant afin que la réécriture démarre depuis des octets canoniques
Le graphe d’objets est ensuite analysé et une marche d’accessibilité à l’échelle du document depuis le catalogue collecte chaque objet indirect survivant, y compris l’arbre de pages, les ressources de page, les polices, images, XObjects de formulaire, AcroForm, l’arbre de structure, les plans, les arbres de noms, le contenu optionnel, les métadonnées, les intents de sortie et les fichiers associés
Les objets laissés inaccessibles par des mises à jour incrémentales, des fusions de pages ou des sauvegardes réparées sont abandonnés, et la sortie est une seule révision classique sans flux d’objet et sans flux de références croisées
Les numéros d’objet et générations sont préservés, donc chaque référence croisée survivante reste valide sans renumérotation ; les objets inaccessibles deviennent des entrées libres dans la table de références croisées classique reconstruite
Le trailer reconstruit ne porte /Root, /Info et /ID en avant que lorsque les objets référencés ont survécu au balayage
TPdfPruneReport rapporte les comptages d’objets indirects conservés et élagués, les tailles d’octets source et sortie, et un message d’échec structuréAllowSignedDocument est explicitement activé car une réécriture complète invalide les plages d’octets de signature existantes
Pdf.SaveAsReachable('pruned.pdf', Report);
WriteLn('Kept ', Report.KeptObjectCount, ' pruned ', Report.PrunedObjectCount);