روش THotPDF.OptimizeLoadedStreams
خانوادههای جریان بارگذاریشدهٔ انتخابشده را تنها وقتی جایگزین کوچکتر به اندازهٔ آستانهٔ درخواستشده است بهصورت Flate بازنویسی میکند
اعلان
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer;
واحد
HPDFDoc
پارامترها
| نام | هدف |
|---|---|
FilterFamilies | کاندیداهای پالایشنشده، Flate، LZW، ASCII85، ASCIIHex و RunLength را انتخاب میکند |
MinimumSavingsBytes | حداقل کاهش بایت مثبت مورد نیاز پیش از آنکه یک کاندید جریان مبدأ خود را جایگزین کند |
AInfo | مجموعهای بایت اسکنشده، کاندید، بازنویسیشده، پشتیبانینشده، شکستخورده، قبل، بعد و ذخیرهشده را دریافت میکند |
مقدار بازگشتی
تعداد payloadهای جریان جایگزینشده در گراف شیء بارگذاریشده را بازمیگرداند
یادداشتهای کاربرد
CompressionLevelسرعت و نسبت zlib را انتخاب میکند، در حالی کهclNoneگذر را به یک no-op تبدیل میکند- کاندیداهای رمزگشایی و فشردهشده پس از
LoadedStreamMemoryThresholdبه پروندههای موقت متعلق سرریز میکنند و حافظهٔ سند بزرگ را محدود نگه میدارند - payload و دیکشنری اصلی پس از شکست رمزگشایی یا پسانداز ناکافی بدون تغییر باقی میمانند
- جریانهای با
/DecodeParmsپرش میشوند تا معناشناسی پیشبینیکننده و LZW غیرپیشفرض بهطور تصادفی تغییر نکنند - زنجیرههای چندپالایشی تنها وقتی هر خانواده انتخاب و پشتیبانی شود واجد شرایط هستند
- پس از گذر
SaveLoadedDocumentرا صدا بزنید تا payloadهای پذیرفتهشده را پایدار کنید
نوعها و تشخیصها
THPDFLoadedStreamFilterFamily = (lsffUnfiltered, lsffFlate, lsffLZW,
lsffASCII85, lsffASCIIHex, lsffRunLength);
THPDFLoadedStreamFilterFamilies = set of THPDFLoadedStreamFilterFamily;
THPDFLoadedStreamOptimizationInfo = record
ScannedStreamCount: Integer;
CandidateStreamCount: Integer;
RewrittenStreamCount: Integer;
UnsupportedStreamCount: Integer;
DecodeFailureCount: Integer;
BytesBefore: Int64;
BytesAfter: Int64;
BytesSaved: Int64;
end;
نمونه
Families := [lsffUnfiltered, lsffFlate, lsffLZW];
Count := PDF.OptimizeLoadedStreams(Families, 16, Info);
if Count > 0 then
PDF.SaveLoadedDocument('optimized.pdf');