FlateDecode s maximální kompresí, přičemž proud nahradí pouze tehdy, když změřená úspora bajtů překoná práh zvolený volajícímfunction 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 nejprve zapíše nepřírůstkovou kopii aktuálního dokumentu v paměti a poté obálka provede celodokumentovou procházku dosažitelnosti přesně jako SaveAsReachable
Každý dosažitelný proud FlateDecode je dekódován pomocí PdfInflate a znovu zakódován pomocí DeflateCompress s maximální kompresí; nahrazeny jsou pouze proudy, jejichž změřená úspora překoná jak MinSavingBytes, tak MinSavingRatio
Čísla objektů a generace zůstávají stabilní, takže se mění pouze znovu komprimované obsahy proudů a jejich přímé hodnoty /Length; každý přeživší křížový odkaz zůstává platný bez přečíslování
Výstup je jediná klasická revize se znovu sestaveným trailerem přenášejícím /Root, /Info a /ID dále
TPdfFlateRecompressOptions.MinSavingBytes a MinSavingRatio zabrání opětovnému kódování proudů, které by neuspořily dost, a ponechají již optimální proudy nedotčenéTPdfFlateRecompressReport hlásí počty znovu komprimovaných, přeskočených a neúspěšných proudů plus původní a znovu komprimované celkové počty bajtů proudů/Length a proudy, které se nepodaří dekódovat, jsou přeskočeny nebo selžou bez poškození dokumentuAllowSignedDocument výslovně povoleno, protože úplný přepis zneplatní stávající rozsahy bajtů podpisů
Options.MinSavingBytes:= 64;
Options.MinSavingRatio:= 0.1;
Pdf.SaveAsFlateRecompressed('recompressed.pdf', Options, Report);
WriteLn('znovu komprimováno ', Report.RecompressedCount, ' proudů');