Metoda THotPDF.OptimizeLoadedStreams
Prepiše izbrane družine naloženih tokov kot Flate le, ko je nadomestek manjši za zahtevani prag
Deklaracija
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer; overload;
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
RecompressionMode: THPDFFlateRecompressionMode;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer; overload;
Enota
HPDFDoc
Parametri
| Ime | Namen |
|---|---|
FilterFamilies | Izbere nefiltrirane kandidate ter kandidate Flate, LZW, ASCII85, ASCIIHex in RunLength |
MinimumSavingsBytes | Pozitivno najmanjšo zmanjšanje bajtov, ki je potrebno, preden kandidat nadomesti svoj izvorni tok |
RecompressionMode | Izbere standardno pot z enim prehodom ali deterministično izbiro Flate z visokim razmerjem prek štirih strategij |
AInfo | Prejme skupne vrednosti pregledanih, kandidatov, prepisanih, nepodprtih, spodletelih ter bajtov pred, po in prihranjeno |
Vrnjena vrednost
Vrne število zamenjanih koristnih tokov v naloženem grafu predmetov
Opombe o uporabi
CompressionLevelizbere hitrost in razmerje zlib,clNonepa spremeni prehod v izpustfrmHighRatiopreizkusi strategije default, filtered, run-length in Huffman-only z največjo kompresijo in obdrži najmanjši z standardi združljiv tok- Dekodirani in stisnjeni kandidati preidejo v lastnične začasne datoteke po
LoadedStreamMemoryThreshold, tako da pomnilnik velikih dokumentov ostaja omejen - Izvirna koristna vsebina in slovar po neuspehu dekodiranja ali nezadostnem prihranku ostaneta nespremenjena
- Tokovi z
/DecodeParmsse preskočijo, da napovednik in neprivzeta semantika LZW ne bi bila po pomoti spremenjena - Verige z več filtri so upravičene le, ko je izbrana in podprta vsaka družina
- Po prehodu pokličite
SaveLoadedDocument, da prevzete koristne vsebine ohranite
Tipi in diagnostika
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 beleži število tokov pred optimizacijo, kodirane bajte in pripis stopenj po posamezni družini brez vsilitve dodatnega prehoda dekodiranja
Primer
Families := [lsffUnfiltered, lsffFlate, lsffLZW];
Count := PDF.OptimizeLoadedStreams(Families, 16, frmHighRatio, Info);
if Count > 0 then
PDF.SaveLoadedDocument('optimized.pdf');