FlateDecode المؤهلة عند أقصى ضغط، مستبدلةً التيار فقط عندما يتجاوز توفير البايتات المقاس عتبة المستدعيfunction 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 أولًا نسخة غير تزايدية من المستند الحالي في الذاكرة، ثم ينفذ المُغلِّف مسح قابلية وصول على مستوى المستند تمامًا مثل SaveAsReachable
يُفك ترميز كل تيار FlateDecode قابل للوصول بـ PdfInflate ويُعاد ترميزه بـ DeflateCompress عند أقصى ضغط؛ ولا تُستبدل سوى التيارات التي يتجاوز توفيرها المقاس كلاً من MinSavingBytes و MinSavingRatio
تظل أرقام الكائنات والأجيال مستقرة، بحيث تتغير فقط حمولات التيارات المعاد ضغطها وقيم /Length المباشرة لها؛ ويظل كل مرجع متبادل ناجٍ صالحًا دون إعادة ترقيم
الإخراج مراجعة كلاسيكية واحدة مع مقطع الذيل المعاد بناؤه يحمل /Root و /Info و /ID للأمام
TPdfFlateRecompressOptions.MinSavingBytes و MinSavingRatio إعادة ترميز التيارات التي لن توفر ما يكفي، تاركًا التيارات المثلى مسبقًا دون مساسTPdfFlateRecompressReport عددي التيارات المعاد ضغطها والمتخطاة والفاشلة إضافة إلى إجمالي بايتات التيارات الأصلي والمعاد ضغطه/Length غير المباشرة والتيارات التي تفشل في فك الترميز دون إتلاف المستندAllowSignedDocument صراحةً لأن إعادة الكتابة الكاملة تبطل نطاقات بايتات التوقيع الموجودة
Options.MinSavingBytes:= 64;
Options.MinSavingRatio:= 0.1;
Pdf.SaveAsFlateRecompressed('recompressed.pdf', Options, Report);
WriteLn('recompressed ', Report.RecompressedCount, ' streams');