FlateDecode-streams ved maksimal komprimering og erstatter kun en stream, når den målte bytebesparelse overstiger en kalder-tærskelfunction 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 skriver først en ikke-inkrementel kopi af det aktuelle in-memory-dokument, derefter udfører wrapperen en dokumentbred reachability-gennemgang nøjagtigt som SaveAsReachable
Hver opnåelig FlateDecode-stream afkodes med PdfInflate og genkodes med DeflateCompress ved maksimal komprimering; kun streams, hvis målte besparelse overstiger både MinSavingBytes og MinSavingRatio, erstattes
Objektnumre og generationer forbliver stabile, så kun de genkomprimerede stream-payloads og deres direkte /Length-værdier ændres; hver overlevende cross-reference forbliver gyldig uden omnummerering
Outputtet er en enkelt klassisk revision med den genopbyggede trailer, der fører /Root, /Info og /ID videre
TPdfFlateRecompressOptions.MinSavingBytes og MinSavingRatio forhindrer re-encoding af streams, der ikke ville spare nok, og lader allerede optimale streams være urørteTPdfFlateRecompressReport rapporterer genkomprimerede, sprungne og fejlede stream-antal plus de oprindelige og genkomprimerede stream-byte-totaler/Length-indgange og streams, der ikke kan afkodes, springes over eller fejler uden at beskadige dokumentetAllowSignedDocument eksplicit er aktiveret, fordi en fuld omskrivning ugyldiggør eksisterende signatur-byte-ranges
Options.MinSavingBytes:= 64;
Options.MinSavingRatio:= 0.1;
Pdf.SaveAsFlateRecompressed('recompressed.pdf', Options, Report);
WriteLn('recompressed ', Report.RecompressedCount, ' streams');