THotPDF.OptimizeLoadedStreams Method
Riscrive le famiglie di flusso caricato selezionate come Flate solo quando la sostituzione è più piccola della soglia richiesta
Dichiarazione
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer;
Unità
HPDFDoc
Parametri
| Nome | Scopo |
|---|---|
FilterFamilies | Seleziona i candidati non filtrati, Flate, LZW, ASCII85, ASCIIHex e RunLength |
MinimumSavingsBytes | Riduzione minima positiva in byte richiesta prima che un candidato sostituisca il suo flusso sorgente |
AInfo | Riceve i totali di byte scansionati, candidati, riscritti, non supportati, falliti, prima, dopo e risparmiati |
Valore restituito
Restituisce il numero di payload di flusso sostituiti nel grafo degli oggetti caricato
Note d'uso
CompressionLevelseleziona la velocità e il rapporto zlib, mentreclNonerende il passaggio un no-op- I candidati decodificati e compressi passano a file temporanei di proprietà dopo
LoadedStreamMemoryThreshold, mantenendo limitata la memoria dei documenti di grandi dimensioni - Il payload e il dizionario originali rimangono invariati dopo un fallimento della decodifica o un risparmio insufficiente
- I flussi con
/DecodeParmsvengono saltati così che la semantica del predittore e LZW non predefinita non possa essere modificata accidentalmente - Le catene multi-filtro sono idonee solo quando ogni famiglia è selezionata e supportata
- Chiamare
SaveLoadedDocumentdopo il passaggio per persistere i payload adottati
Tipi e diagnostica
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;
Esempio
Families := [lsffUnfiltered, lsffFlate, lsffLZW];
Count := PDF.OptimizeLoadedStreams(Families, 16, Info);
if Count > 0 then
PDF.SaveLoadedDocument('optimized.pdf');