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

OptionsCombinaison binaire des constantes d’option de déduplication des ressources
StatsReç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_IMAGESInclut les objets XObject image, les masques d'image explicites, les images de masque de transparence, les images alternatives et les miniatures
PDF_RESOURCE_DEDUP_FORMSInclut les objets XObject Form tels que les graphiques de page réutilisables, les apparences d'annotation et les groupes de transparence
PDF_RESOURCE_DEDUP_PATTERNSInclut les motifs de pavage basés sur des flux
PDF_RESOURCE_DEDUP_SHADINGSInclut les ombrages de maillage basés sur des flux
PDF_RESOURCE_DEDUP_FUNCTIONSInclut les flux de fonctions échantillonnées
PDF_RESOURCE_DEDUP_ICC_PROFILESInclut les flux de profils ICC référencés par les espaces colorimétriques ICCBased ou les intentions de sortie
PDF_RESOURCE_DEDUP_FONT_PROGRAMSInclut les flux référencés par FontFile, FontFile2 ou FontFile3
PDF_RESOURCE_DEDUP_CMAPSInclut les flux CMap et ToUnicode
PDF_RESOURCE_DEDUP_TYPE3_CHARPROCSInclut les flux de procédures de glyphes Type 3
PDF_RESOURCE_DEDUP_EMBEDDED_FILESInclut les flux de fichiers incorporés
PDF_RESOURCE_DEDUP_METADATAInclut les flux de métadonnées
PDF_RESOURCE_DEDUP_POSTSCRIPTInclut les PostScript XObjects
PDF_RESOURCE_DEDUP_ALL_TYPESCombine les douze indicateurs de type de ressource

Options de l’opération

PDF_RESOURCE_DEDUP_DRY_RUNSignale les flux et références en double sans modifier le graphe d'objets ni collecter les objets
PDF_RESOURCE_DEDUP_GARBAGE_COLLECTExécute un nettoyage mark-and-sweep après la redirection des références
PDF_RESOURCE_DEDUP_DEFAULTCombine tous les types de ressources avec le nettoyage

Valeurs de retour

Positive valueLe nombre de flux indirects en double regroupés ou signalés par une simulation
0Aucun 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