FlateDecode akışlarını en yüksek sıkıştırmada yeniden kodlar; ölçülen bayt tasarrufu çağıranın eşiğini geçtiğinde akışı değiştirirfunction 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 önce geçerli bellek içi belgenin artımlı olmayan bir kopyasını yazar, ardından sarmalayıcı SaveAsReachable ile tam olarak aynı şekilde belge geneli bir erişilebilirlik taraması yapar
Erişilebilir her FlateDecode akışı PdfInflate ile çözülür ve DeflateCompress ile en yüksek sıkıştırmada yeniden kodlanır; yalnızca ölçülen tasarrufu hem MinSavingBytes hem de MinSavingRatio eşiklerini geçen akışlar değiştirilir
Nesne numaraları ve kuşakları kararlı kalır; böylece yalnızca yeniden sıkıştırılan akış yükleri ve bunların doğrudan /Length değerleri değişir ve numaralandırma yapılmadan hayatta kalan her çapraz referans geçerliliğini korur
Çıktı tek bir klasik revizyondur ve yeniden oluşturulan trailer /Root, /Info ve /ID girdilerini ileriye taşır
TPdfFlateRecompressOptions.MinSavingBytes ve MinSavingRatio, yeterli tasarruf sağlamayacak yeniden kodlamaları engelleyerek zaten en iyi durumda olan akışlara dokunmazTPdfFlateRecompressReport, yeniden sıkıştırılan, atlanan ve başarısız olan akış sayılarının yanı sıra özgün ve yeniden sıkıştırılmış akış bayt toplamlarını raporlar/Length girdileri ve çözülemeyen akışlar belgeyi bozmadan atlanır veya başarısız olarak işaretlenirAllowSignedDocument açıkça etkinleştirilmedikçe imzalı belgeler reddedilir
Options.MinSavingBytes:= 64;
Options.MinSavingRatio:= 0.1;
Pdf.SaveAsFlateRecompressed('recompressed.pdf', Options, Report);
WriteLn('recompressed ', Report.RecompressedCount, ' streams');