function SaveAsDeduplicated(Stream: TStream; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsDeduplicated(const FileName: string; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
O PDFium primeiro grava uma cópia não incremental do documento atual em memória; em seguida o wrapper executa uma varredura de alcançabilidade em todo o documento e descarta cada objeto inalcançável exatamente como SaveAsReachable
Fontes, imagens e form XObjects recebem então um fingerprint: cada dicionário candidato, seu subgrafo alcançável completo e sua carga bruta de stream são hash de forma recursiva, de modo que duplicatas só são fundidas quando todo o seu conteúdo é idêntico
Toda cross-reference que apontava para uma duplicata fundida é regravada para o representante sobrevivente, e os números e gerações de objeto permanecem estáveis, de modo que toda cross-reference sobrevivente continua válida
A saída é uma única revisão clássica sem object streams e sem cross-reference stream, e o trailer reconstruído carrega /Root, /Info e /ID para frente
TPdfDedupReport relata contagens de objetos mantidos e podados, além de contagens por categoria de fontes, imagens e form XObjects fundidos, com tamanhos em bytes de origem e saída e uma mensagem estruturada de falhaAllowSignedDocument seja habilitado explicitamente, porque uma regravação completa invalida os intervalos de bytes das assinaturas existentes
Pdf.SaveAsDeduplicated('deduplicated.pdf', Report);
WriteLn('merged ', Report.MergedImageCount, ' images');