/Info dictionaryfunction SaveAsReachable(Stream: TStream; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsReachable(const FileName: string; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean;
PDFium primero escribe una copia no incremental del documento en memoria actual para que la reescritura parta de bytes canónicos
El grafo de objetos se analiza entonces y un recorrido de alcanzabilidad en todo el documento desde el catálogo recoge cada objeto indirecto superviviente, incluidos el árbol de páginas, los recursos de página, fuentes, imágenes, XObjects de formulario, AcroForm, árbol de estructura, esquemas, árboles de nombres, contenido opcional, metadatos, intenciones de salida y archivos asociados
Los objetos dejados inalcanzables por actualizaciones incrementales, fusiones de páginas o guardados reparados se descartan, y la salida es una única revisión clásica sin flujos de objeto y sin flujo de referencias cruzadas
Los números de objeto y generaciones se preservan, de modo que cada referencia cruzada superviviente sigue siendo válida sin renumeración; los objetos inalcanzables se convierten en entradas libres en la tabla de referencias cruzadas clásica reconstruida
El trailer reconstruido lleva /Root, /Info y /ID hacia adelante solo cuando los objetos referenciados sobrevivieron al barrido
TPdfPruneReport reports the kept and pruned indirect object counts, the source and output byte sizes, and a structured failure messageAllowSignedDocument is explicitly enabled because a full rewrite invalidates existing signature byte ranges
Pdf.SaveAsReachable('pruned.pdf', Report);
WriteLn('Kept ', Report.KeptObjectCount, ' pruned ', Report.PrunedObjectCount);