Méthode THotPDF.OptimizeLoadedStreams
Récrit certaines familles de flux chargés en Flate uniquement lorsque le remplacement est plus petit de la marge demandée
Déclaration
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer;
Unité
HPDFDoc
Paramètres
| Nom | Rôle |
|---|---|
FilterFamilies | Sélectionne les candidats non filtrés, Flate, LZW, ASCII85, ASCIIHex et RunLength |
MinimumSavingsBytes | Réduction minimale positive en octets requise avant qu'un candidat remplace son flux source |
AInfo | Reçoit les totaux de flux analysés, candidats, réécrits, non pris en charge, échoués, avant, après et octets économisés |
Valeur de retour
Renvoie le nombre de charges utiles de flux remplacées dans le graphe d'objets chargé
Notes d'utilisation
CompressionLevelsélectionne la vitesse et le ratio zlib, tandis queclNonetransforme le passage en no-op- Les candidats décodés et compressés sont déversés dans des fichiers temporaires possédés après
LoadedStreamMemoryThreshold, ce qui maintient bornée la mémoire pour les grands documents - La charge utile et le dictionnaire d'origine restent inchangés après un échec de décodage ou des économies insuffisantes
- Les flux avec
/DecodeParmssont ignorés afin que la sémantique de prédicteur et de LZW non par défaut ne puisse pas être modifiée par accident - Les chaînes multi-filtres ne sont éligibles que lorsque chaque famille est sélectionnée et prise en charge
- Appelez
SaveLoadedDocumentaprès le passage pour rendre persistantes les charges utiles adoptées
Types et diagnostics
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;
Exemple
Families := [lsffUnfiltered, lsffFlate, lsffLZW];
Count := PDF.OptimizeLoadedStreams(Families, 16, Info);
if Count > 0 then
PDF.SaveLoadedDocument('optimized.pdf');