THotPDF.OptimizeLoadedStreams Method
Przepisuje wybrane rodziny wczytanych strumieni jako Flate tylko wtedy, gdy zamiennik jest mniejszy o żądany próg
Deklaracja
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer;
Jednostka
HPDFDoc
Parametry
| Nazwa | Przeznaczenie |
|---|---|
FilterFamilies | Wybiera kandydatów niefiltrowanych, Flate, LZW, ASCII85, ASCIIHex i RunLength |
MinimumSavingsBytes | Dodatnia minimalna redukcja bajtów wymagana, zanim kandydat zastąpi swój strumień źródłowy |
AInfo | Odbiera sumy zeskanowanych, kandydatów, przepisanych, nieobsługiwanych, zakończonych niepowodzeniem, przed, po i zapisanych bajtów |
Wartość zwracana
Zwraca liczbę ładunków strumienia zastąpionych we wczytanym grafie obiektów
Uwagi dotyczące użycia
CompressionLevelwybiera szybkość i współczynnik zlib, podczas gdyclNoneczyni przebieg pustą operacją- Zdekodowani i skompresowani kandydaci są zrzucani do własnych plików tymczasowych po
LoadedStreamMemoryThreshold, utrzymując ograniczoną pamięć dużych dokumentów - Oryginalny ładunek i słownik pozostają niezmienione po niepowodzeniu dekodowania lub niewystarczających oszczędnościach
- Strumienie z
/DecodeParmssą pomijane, tak aby semantyka predyktora i niedomyślnego LZW nie mogła zostać zmieniona przypadkowo - Łańcuchy wielofiltrowe są kwalifikowane tylko wtedy, gdy każda rodzina jest wybrana i obsługiwana
- Wywołaj
SaveLoadedDocumentpo przebiegu, aby utrwalić przyjęte ładunki
Types and diagnostics
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;
Przykład
Families := [lsffUnfiltered, lsffFlate, lsffLZW];
Count := PDF.OptimizeLoadedStreams(Families, 16, Info);
if Count > 0 then
PDF.SaveLoadedDocument('optimized.pdf');