Método THotPDF.OptimizeLoadedStreams
Reescribe las familias de flujos cargados seleccionadas como Flate únicamente cuando el reemplazo es menor según el umbral solicitado
Declaración
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer;
Unidad
HPDFDoc
Parámetros
| Nombre | Finalidad |
|---|---|
FilterFamilies | Selecciona candidatos sin filtrar, Flate, LZW, ASCII85, ASCIIHex y RunLength |
MinimumSavingsBytes | Reducción mínima positiva de bytes exigida antes de que un candidato reemplace su flujo de origen |
AInfo | Recibe los totales de bytes examinados, candidatos, reescritos, no soportados, fallidos, antes, después y ahorrados |
Valor devuelto
Devuelve el número de cargas útiles de flujo reemplazadas en el grafo de objetos cargado
Notas de uso
CompressionLevelselecciona la velocidad y la relación de zlib, mientras queclNoneconvierte el pase en una operación nula- Los candidatos descodificados y comprimidos se vuelcan a archivos temporales propios tras
LoadedStreamMemoryThreshold, manteniendo acotada la memoria en documentos grandes - La carga útil y el diccionario originales permanecen sin cambios tras un fallo de descodificación o un ahorro insuficiente
- Los flujos con
/DecodeParmsse omiten para que la semántica de predictor y de LZW no predeterminada no pueda modificarse accidentalmente - Las cadenas multifiltro son aptas únicamente cuando todas las familias están seleccionadas y soportadas
- Llame a
SaveLoadedDocumenttras el pase para persistir las cargas útiles adoptadas
Tipos y 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;
Ejemplo
Families := [lsffUnfiltered, lsffFlate, lsffLZW];
Count := PDF.OptimizeLoadedStreams(Families, 16, Info);
if Count > 0 then
PDF.SaveLoadedDocument('optimized.pdf');