FlateDecode-streams op maximale compressie, waarbij een stream alleen wordt vervangen wanneer de gemeten bytebesparing een door de aanroeper ingestelde drempel overschrijdtfunction SaveAsFlateRecompressed(Stream: TStream; const Options: TPdfFlateRecompressOptions; out Report: TPdfFlateRecompressReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsFlateRecompressed(const FileName: string; const Options: TPdfFlateRecompressOptions; out Report: TPdfFlateRecompressReport; AllowSignedDocument: Boolean = False): Boolean;
PDFium schrijft eerst een niet-incrementele kopie van het huidige in-memory document, waarna de wrapper een documentbrede bereikbaarheidswandeling uitvoert, net als SaveAsReachable
Elke bereikbare FlateDecode-stream wordt gedecodeerd met PdfInflate en op maximale compressie hercodeerd met DeflateCompress; alleen streams waarvan de gemeten besparing zowel MinSavingBytes als MinSavingRatio overschrijdt, worden vervangen
Objectnummers en generaties blijven stabiel, dus alleen de hercomprimeerde streampayloads en hun directe /Length-waarden veranderen; elke overlevende kruisverwijzing blijft geldig zonder hernummering
De uitvoer is één klassieke revisie waarbij de herbouwde trailer /Root, /Info en /ID overdraagt
TPdfFlateRecompressOptions.MinSavingBytes en MinSavingRatio voorkomen het hercoderen van streams die niet genoeg besparen, waardoor al optimale streams onaangeroerd blijvenTPdfFlateRecompressReport rapporteert aantallen hercomprimeerde, overgeslagen en mislukte streams plus de originele en hercomprimeerde streambytetotalen/Length-vermeldingen en streams die niet decoderen worden overgeslagen of als mislukt gemarkeerd zonder het document te beschadigenAllowSignedDocument expliciet is ingeschakeld, omdat een volledige herschrijving bestaande handtekeningbytebereiken ongeldig maakt
Options.MinSavingBytes:= 64;
Options.MinSavingRatio:= 0.1;
Pdf.SaveAsFlateRecompressed('recompressed.pdf', Options, Report);
WriteLn('recompressed ', Report.RecompressedCount, ' streams');