THotPDF.OptimizeLoadedStreams-Methode
Schreibt ausgewählte geladene Stream-Familien als Flate um, nur wenn der Ersatz um den angeforderten Schwellenwert kleiner ist
Deklaration
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer;
Unit
HPDFDoc
Parameter
| Name | Zweck |
|---|---|
FilterFamilies | Wählt ungefilterte, Flate-, LZW-, ASCII85-, ASCIIHex- und RunLength-Kandidaten |
MinimumSavingsBytes | Positive Mindest-Byte-Reduktion, die erforderlich ist, bevor ein Kandidat seinen Quell-Stream ersetzt |
AInfo | Empfängt gescannte, Kandidat-, umgeschriebene, nicht unterstützte, fehlgeschlagene, vorher-, nachher- und eingesparte-Byte-Summen |
Rückgabewert
Gibt die Anzahl der Stream-Payloads zurück, die im geladenen Objektgraphen ersetzt wurden
Verwendungshinweise
CompressionLevelwählt die zlib-Geschwindigkeit und -Rate, währendclNoneden Durchlauf zu einem No-Op macht- Dekodierte und komprimierte Kandidaten laufen nach
LoadedStreamMemoryThresholdin eigene temporäre Dateien über, was den Großdokument-Speicher begrenzt - Die ursprüngliche Payload und das Wörterbuch bleiben nach Dekodierungs-Fehlschlag oder unzureichenden Einsparungen unverändert
- Streams mit
/DecodeParmswerden übersprungen, sodass Prädiktor- und nicht-Standard-LZW-Semantik nicht versehentlich geändert werden kann - Mehrfilter-Ketten sind nur dann berechtigt, wenn jede Familie ausgewählt und unterstützt wird
- Rufen Sie
SaveLoadedDocumentnach dem Durchlauf auf, um übernommene Payloads zu persistieren
Typen und Diagnostik
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;
Beispiel
Families := [lsffUnfiltered, lsffFlate, lsffLZW];
Count := PDF.OptimizeLoadedStreams(Families, 16, Info);
if Count > 0 then
PDF.SaveLoadedDocument('optimized.pdf');