DeduplicateResources
Manipulation de documents, optimisation
Description
Recherche les flux de ressources indirects identiques octet pour octet dans le document, redirige chaque référence vers un flux canonique déterministe et supprime facultativement les doublons
L’égalité exige à la fois une signature indépendante de l’ordre du dictionnaire de flux complet et une correspondance exacte de la charge utile encodée ; les masques, espaces colorimétriques, tableaux de décodage, associations de contenu facultatif, identifiants de structure, métadonnées, filtres et chaque entrée sémantique participent donc à la décision
Syntaxe
Delphi
Function TPDFlib.DeduplicateResources(
Options: Integer= PDF_RESOURCE_DEDUP_DEFAULT): Integer; Overload;
Function TPDFlib.DeduplicateResources(Options: Integer;
Out Stats: TPDFlibResourceDedupStats): Integer; Overload;
Paramètres
| Options | Combinaison binaire des constantes d’option de déduplication des ressources |
|---|---|
| Stats | Reçoit les compteurs d'analyse, de hachage, de comparaison, de référence, de charge utile, de catégorie et d'objets orphelins |
Options de type de ressource
| PDF_RESOURCE_DEDUP_IMAGES | Inclut les objets XObject image, les masques d'image explicites, les images de masque de transparence, les images alternatives et les miniatures |
|---|---|
| PDF_RESOURCE_DEDUP_FORMS | Inclut les objets XObject Form tels que les graphiques de page réutilisables, les apparences d'annotation et les groupes de transparence |
| PDF_RESOURCE_DEDUP_PATTERNS | Inclut les motifs de pavage basés sur des flux |
| PDF_RESOURCE_DEDUP_SHADINGS | Inclut les ombrages de maillage basés sur des flux |
| PDF_RESOURCE_DEDUP_FUNCTIONS | Inclut les flux de fonctions échantillonnées |
| PDF_RESOURCE_DEDUP_ICC_PROFILES | Inclut les flux de profils ICC référencés par les espaces colorimétriques ICCBased ou les intentions de sortie |
| PDF_RESOURCE_DEDUP_FONT_PROGRAMS | Inclut les flux référencés par FontFile, FontFile2 ou FontFile3 |
| PDF_RESOURCE_DEDUP_CMAPS | Inclut les flux CMap et ToUnicode |
| PDF_RESOURCE_DEDUP_TYPE3_CHARPROCS | Inclut les flux de procédures de glyphes Type 3 |
| PDF_RESOURCE_DEDUP_EMBEDDED_FILES | Inclut les flux de fichiers incorporés |
| PDF_RESOURCE_DEDUP_METADATA | Inclut les flux de métadonnées |
| PDF_RESOURCE_DEDUP_POSTSCRIPT | Inclut les PostScript XObjects |
| PDF_RESOURCE_DEDUP_ALL_TYPES | Combine les douze indicateurs de type de ressource |
Options de l’opération
| PDF_RESOURCE_DEDUP_DRY_RUN | Signale les flux et références en double sans modifier le graphe d'objets ni collecter les objets |
|---|---|
| PDF_RESOURCE_DEDUP_GARBAGE_COLLECT | Exécute un nettoyage mark-and-sweep après la redirection des références |
| PDF_RESOURCE_DEDUP_DEFAULT | Combine tous les types de ressources avec le nettoyage |
Valeurs de retour
| Positive value | Le nombre de flux indirects en double regroupés ou signalés par une simulation |
|---|---|
| 0 | Aucun flux en double admissible n’a été trouvé ou aucun document n’est chargé |
Remarques
Le plus petit numéro d'objet et la plus petite génération de chaque groupe d'équivalence exacte deviennent le flux canonique, rendant les exécutions répétées déterministes
L’ordre des clés de dictionnaire n’affecte pas l’égalité, mais chaque clé et valeur sémantique l’affecte, y compris l’identité des références indirectes ; une entrée Length numérique de niveau supérieur est comparée par sa valeur résolue afin que des formes directes et indirectes équivalentes puissent partager une ressource
Les ressources au contenu décodé identique mais aux filtres ou octets encodés différents restent séparées, de même si leurs dictionnaires référencent des objets imbriqués distincts
Toutes les charges utiles candidates sont hachées une fois avec SHA-256 ; une confirmation octet par octet ne s'exécute que dans un compartiment de hachage et de signature de dictionnaire correspondant
La méthode agit sur les flux indirects, car ISO 32000 exige que les flux soient des objets indirects et que les ressources partagées soient représentées par des références indirectes
Utilisez la valeur par défaut après la modification du document et avant un enregistrement complet pour récupérer immédiatement les octets d'objets en double
Pour un enregistrement incrémentiel, omettez PDF_RESOURCE_DEDUP_GARBAGE_COLLECT lorsque les anciennes révisions doivent rester physiquement intactes ; les références redirigées réduisent toujours les doublons de la nouvelle révision, mais ne peuvent retirer les octets des révisions antérieures
Exemple
var
Stats: TPDFlibResourceDedupStats;
Merged: Integer;
begin
Merged:= PDF.DeduplicateResources(
PDF_RESOURCE_DEDUP_DEFAULT, Stats);
PDF.SaveToFile('optimised.pdf');
end;
Voir aussi
TPDFlibResourceDedupStats, PurgeUnusedResources, GarbageCollectObjects