Método THotPDF.OptimizeLoadedStreams
Reescreve famílias de fluxo carregado selecionadas como Flate somente quando a substituição é menor pelo limite solicitado
Declaração
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer;
Unit
HPDFDoc
Parâmetros
| Nome | Finalidade |
|---|---|
FilterFamilies | Seleciona candidatos não filtrados, Flate, LZW, ASCII85, ASCIIHex e RunLength |
MinimumSavingsBytes | Redução mínima positiva de bytes exigida antes que um candidato substitua seu fluxo de origem |
AInfo | Recebe os totais de bytes examinados, candidatos, reescritos, não suportados, com falha, antes, depois e economizados |
Valor de retorno
Retorna o número de payloads de fluxo substituídos no grafo de objetos carregado
Notas de uso
CompressionLevelseleciona a velocidade e a proporção do zlib, enquantoclNonetorna a passagem uma operação nula- Candidatos decodificados e comprimados passam para arquivos temporários próprios após
LoadedStreamMemoryThreshold, mantendo a memória de documentos grandes delimitada - O payload e o dicionário originais permanecem inalterados após falha de decodificação ou economia insuficiente
- Fluxos com
/DecodeParmssão ignorados para que a semântica de predictor e LZW não padrão não possa ser alterada acidentalmente - Cadeias de vários filtros são elegíveis somente quando todas as famílias são selecionadas e suportadas
- Chame
SaveLoadedDocumentapós a passagem para persistir os payloads adotados
Tipos e diagnósticos
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;
Exemplo
Families := [lsffUnfiltered, lsffFlate, lsffLZW];
Count := PDF.OptimizeLoadedStreams(Families, 16, Info);
if Count > 0 then
PDF.SaveLoadedDocument('optimized.pdf');