/Info del trailerfunction SaveAsReachable(Stream: TStream; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsReachable(const FileName: string; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean;
PDFium escribe primero una copia no incremental del documento actual en memoria, de modo que la reescritura parte de bytes canónicos
Luego se analiza el grafo de objetos y un recorrido de alcanzabilidad sobre todo el documento desde el catálogo recopila cada objeto indirecto superviviente, incluidos el árbol de páginas, los recursos de página, las fuentes, las imágenes, los form XObjects, AcroForm, el árbol de estructura, los esquemas, los árboles de nombres, el contenido opcional, los metadatos, las output intents y los archivos asociados
Los objetos que quedaron inalcanzables por actualizaciones incrementales, fusiones de páginas o guardados reparados se descartan, y la salida es una única revisión clásica sin object streams ni cross-reference stream
Los números y generaciones de objeto se conservan, por lo que toda referencia cruzada superviviente sigue siendo válida sin renumeración; los objetos inalcanzables se convierten en entradas libres de la tabla clásica de referencias cruzadas reconstruida
El trailer reconstruido propaga /Root, /Info e /ID solo cuando los objetos referenciados sobrevivieron al barrido
TPdfPruneReport informa los conteos de objetos indirectos conservados y podados, los tamaños en bytes de origen y de salida, y un mensaje de falla estructuradoAllowSignedDocument se habilite de forma explícita, porque una reescritura completa invalida los rangos de bytes de las firmas existentes
Pdf.SaveAsReachable('pruned.pdf', Report);
WriteLn('Kept ', Report.KeptObjectCount, ' pruned ', Report.PrunedObjectCount);