שיטת THotPDF.OptimizeLoadedStreams
כותבת מחדש משפחות זרם טעון נבחרות כ-Flate רק כאשר ההחלפה קטנה יותר בסף המבוקש
הצהרה
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer;
יחידה
HPDFDoc
פרמטרים
| שם | מטרה |
|---|---|
FilterFamilies | בוחר מועמדי לא-מסונן, Flate, LZW, ASCII85, ASCIIHex ו-RunLength |
MinimumSavingsBytes | הפחתת בתים מינימלית חיובית הנדרשת לפני שמועמד מחליף את זרם המקור שלו |
AInfo | מקבל סכומי נסרקים, מועמדים, שנכתבו-מחדש, לא-נתמכים, נכשלו, לפני, אחרי ובתים-שנחסכו |
ערך החזרה
מחזיר את מספר מטעני הזרם שהוחלפו בגרף האובייקטים הטעון
הערות שימוש
CompressionLevelבוחר את מהירות ויחס ה-zlib, בעודclNoneהופך את המעבר ל-no-op- מועמדים מפוענחים ודחוסים נשפכים אל קבצים זמניים בבעלות לאחר
LoadedStreamMemoryThreshold, ושומרים על זיכרון מסמך-גדול חסום - המטען והמילון המקוריים נשארים ללא שינוי לאחר כשל פענוח או חיסכון בלתי-מספק
- זרמים עם
/DecodeParmsמדלגים כך שסמנטיקת חזאי ו-LZW שאינו-ברירת-מחדל לא ישתנו בטעות - שרשראות מרובות-מסננים זכאיות רק כאשר כל משפחה נבחרת ונתמכת
- קרא ל-
SaveLoadedDocumentלאחר המעבר כדי להחזיק מטענים שאומצו
טיפוסים ואבחון
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');