Método THotPDF.OptimizeLoadedStreams
Reescreve famílias de fluxos carregados selecionadas como Flate apenas quando a substituição é mais pequena pelo limiar pedido
Declaração
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer; overload;
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
RecompressionMode: THPDFFlateRecompressionMode;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer; overload;
Unidade
HPDFDoc
Parâmetros
| Nome | Função |
|---|---|
FilterFamilies | Seleciona candidatos não filtrados, Flate, LZW, ASCII85, ASCIIHex e RunLength |
MinimumSavingsBytes | Redução mínima positiva de bytes exigida antes de um candidato substituir o seu fluxo de origem |
RecompressionMode | Seleciona o caminho padrão de passagem única ou a seleção Flate determinística de alta proporção com quatro estratégias |
AInfo | Recebe totais de fluxos analisados, candidatos, reescritos, não suportados, com falha, de bytes antes e depois e poupados |
Valor de retorno
Devolve o número de payloads de fluxo substituídos no gráfico de objetos carregado
Notas de utilização
CompressionLevelseleciona a velocidade e proporção zlib, enquantoclNonetorna a passagem uma não-operaçãofrmHighRatioexperimenta estratégias predefinida, filtrada, run-length e só-Huffman de compressão máxima e retém o fluxo compatível com as normas mais pequeno- Os candidatos descodificados e comprimidos transitam para ficheiros temporários próprios após
LoadedStreamMemoryThreshold, mantendo a memória de documentos grandes limitada - O payload e o dicionário originais permanecem inalterados após falha de descodificação ou poupança insuficiente
- Fluxos com
/DecodeParmssão ignorados, de modo a que as semânticas de predictor e LZW não predefinidas não possam ser alteradas acidentalmente - Cadeias multifiltro só são elegíveis quando todas as famílias estão selecionadas e suportadas
- Chame
SaveLoadedDocumentdepois da passagem para persistir os payloads adotados
Tipos e diagnóstico
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 regista a contagem de fluxos pré-otimização, os bytes codificados e a atribuição de fase por família sem forçar uma passagem de descodificação adicional
Exemplo
Families := [lsffUnfiltered, lsffFlate, lsffLZW];
Count := PDF.OptimizeLoadedStreams(Families, 16, frmHighRatio, Info);
if Count > 0 then
PDF.SaveLoadedDocument('optimized.pdf');