Metoda THotPDF.OptimizeLoadedStreams
Rescrie familiile selectate de fluxuri încărcate ca Flate doar atunci când înlocuirea este mai mică cu pragul cerut
Declarație
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer; overload;
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
RecompressionMode: THPDFFlateRecompressionMode;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer; overload;
Unitate
HPDFDoc
Parametri
| Nume | Scop |
|---|---|
FilterFamilies | Selectează candidați nefiltrați, Flate, LZW, ASCII85, ASCIIHex și RunLength |
MinimumSavingsBytes | Reducere minimă pozitivă de octeți cerută înainte ca un candidat să-și înlocuiască fluxul sursă |
RecompressionMode | Selectează calea standard cu o singură trecere sau selecția Flate deterministă cu patru strategii de raport ridicat |
AInfo | Primește totalurile scanate, candidate, rescrise, nesuportate, eșuate, înainte, după și octeți economisiți |
Valoare returnată
Returnează numărul de încărcături de flux înlocuite în graful de obiecte încărcat
Note de utilizare
CompressionLevelselectează viteza și raportul zlib, în timp ceclNoneface trecerea o non-operațiefrmHighRatioîncearcă strategiile de compresie-maximă implicită, filtrată, run-length și doar-Huffman și păstrează cel mai mic flux compatibil cu standardele- Candidații decodificați și comprimați se revărsă în fișiere temporare proprii după
LoadedStreamMemoryThreshold, menținând memoria documentelor mari limitată - Încărcătura și dicționarul originale rămân neschimbate după eșec de decodificare sau economisire insuficientă
- Fluxurile cu
/DecodeParmssunt omise, astfel încât semantica predictor și LZW non-implicită să nu poată fi modificată accidental - Lanțurile multi-filtru sunt eligibile doar atunci când fiecare familie este selectată și suportată
- Apelați
SaveLoadedDocumentdupă trecere pentru a persista încărcăturile adoptate
Tipuri și diagnosticare
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;
FilterStatistics: THPDFLoadedStreamFilterStatistics;
RecompressionMode: THPDFFlateRecompressionMode;
CompressionTrialCount: Integer;
end;
FilterStatistics înregistrează numărul de fluxuri înainte de optimizare, octeții codificați și atribuirea pe familie a etapei fără a forța o trecere suplimentară de decodificare
Exemplu
Families := [lsffUnfiltered, lsffFlate, lsffLZW];
Count := PDF.OptimizeLoadedStreams(Families, 16, frmHighRatio, Info);
if Count > 0 then
PDF.SaveLoadedDocument('optimized.pdf');