Introduction
Le PDF est le standard de facto pour les contrats, les spécifications, les rapports et les dépôts réglementaires — et avec plusieurs versions en circulation, identifier exactement ce qui a changé entre deux fichiers devient rapidement fastidieux. Faire défiler les documents côte à côte et annoter les différences à la main ne passe pas à l’échelle, et même les outils dédiés comme la fonction Compare d’Adobe Acrobat nécessitent une intervention manuelle pour chaque paire de fichiers.
GroupDocs.Comparison for .NET vous permet d’exécuter la comparaison de PDF entièrement depuis le code et de choisir exactement comment le résultat est présenté. La version 26.4 a introduit une classe dédiée PdfCompareOptions avec trois modes d’affichage :
- Inline (par défaut) — un seul PDF fusionné où les suppressions et insertions sont mises en évidence avec des couleurs différentes sur les mêmes pages. C’est le comportement classique et le résultat le plus simple à partager en tant que fichier autonome.
- Side‑by‑Side — chaque page de résultat montre les pages source et cible placées côte à côte, sans chevauchement de contenu. Idéal lorsque les documents diffèrent fortement et que le mélange de contenu sur une même page serait confus.
- Interleaved — le résultat contient des pages alternées : les pages impaires proviennent de la source (suppressions mises en évidence), les pages paires de la cible (insertions mises en évidence). Les changements sont représentés comme des annotations PDF natives — un type d’objet PDF intégré qui porte des métadonnées telles que le type de changement et le nom de l’auteur. La plupart des visionneuses PDF (Adobe Acrobat Reader, Foxit, etc.) permettent d’ouvrir le panneau des annotations et d’accepter ou de supprimer des annotations individuelles, offrant ainsi un flux de révision léger sans logiciel supplémentaire. Ouvrir ce fichier dans un lecteur PDF en Vue deux pages produit une comparaison naturelle gauche/droite.
Dans cet article, nous passerons en revue les trois modes avec des exemples C# fonctionnels, explorerons PdfCompareOptions et ses propriétés, et aborderons brièvement comment réaliser la même tâche manuellement dans Adobe Acrobat.
Comparaison de PDFs dans Adobe Acrobat
Avant de plonger dans l’approche programmatique, il est utile de connaître ce qu’Adobe Acrobat Pro propose en standard. L’outil intégré Compare Files d’Acrobat (disponible sous Outils → Compare Files) génère un rapport côte à côte qui met en évidence les changements de texte, les différences d’images et les variations de mise en forme.
Pour lancer une comparaison dans Acrobat Pro :
- Ouvrez Acrobat Pro et choisissez Outils → Compare Files.
- Sélectionnez le Older File (source) et le Newer File (cible).
- Cliquez sur Compare. Acrobat génère un rapport de comparaison interactif avec une page de synthèse et des marqueurs de changement en ligne.
Cela fonctionne bien pour des revues manuelles occasionnelles. Cependant, l’outil de comparaison d’Acrobat présente des limitations importantes lorsque la comparaison doit faire partie d’un pipeline automatisé.
Lorsque la comparaison doit s’effectuer sur un serveur, dans un pipeline CI/CD, ou dans le cadre d’un flux de révision personnalisé, une bibliothèque « code‑first » est l’outil adéquat.
Prérequis
Avant de commencer :
- .NET 6.0 ou version ultérieure.
- GroupDocs.Comparison for .NET 26.4 ou version ultérieure — installez via NuGet :
dotnet add package GroupDocs.Comparison
- Un fichier de licence (
GroupDocs.Comparison.lic). Sans celui‑ci, la bibliothèque fonctionne en mode évaluation avec filigranes et limites de nombre de pages. Vous pouvez demander une temporary license pour les tests. - Deux fichiers PDF à comparer — nous les appellerons
source.pdfettarget.pdf. Exemple de contenu :
source.pdf |
target.pdf |
|---|
Mode 1 : Comparaison Inline (Par défaut)
Quand l’utiliser : vous souhaitez un seul fichier PDF autonome que n’importe qui peut ouvrir et voir immédiatement ce qui a changé — sans besoin d’un visionneur spécial ou d’une mise en page à deux pages. Un scénario typique est le partage d’un projet de contrat annoté avec une contre‑partie.
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source.pdf"))
{
comparer.Add("target.pdf");
var options = new PdfCompareOptions
{
DisplayMode = PdfCompareOptions.ComparisonDisplayMode.Inline
};
comparer.Compare("result_inline.pdf", options);
}
Note :
Inlineest la valeur par défaut deDisplayMode, donc le blocoptionsci‑dessus est optionnel. Un simple appelcomparer.Compare("result_inline.pdf")produit le même résultat.
Document résultant en mode Inline :
Ce qui se passe en coulisses :
- Le contenu supprimé du document source est mis en évidence d’une couleur (rouge par défaut).
- Le contenu inséré du document cible est mis en évidence d’une autre couleur (vert par défaut).
- Les deux ensembles de changements coexistent sur les mêmes pages, le résultat est donc compact mais peut sembler chargé lorsque les documents diffèrent fortement. Avec des modifications textuelles importantes, le contenu supprimé et inséré peut physiquement se chevaucher sur la page — par exemple, un paragraphe remplacé s’affiche au-dessus de l’original, produisant un méli‑mélange illisible. Dans ces cas, le mode
SideBySideouInterleavedest préférable.
Mode 2 : Comparaison Side‑by‑Side
Quand l’utiliser : les deux documents diffèrent fortement et placer les suppressions et insertions sur la même page rendrait le résultat difficile à lire. Side‑by‑Side garde le contenu source et cible strictement séparés, ce qui facilite la lecture rapide de chaque page.
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source.pdf"))
{
comparer.Add("target.pdf");
var options = new PdfCompareOptions
{
DisplayMode = PdfCompareOptions.ComparisonDisplayMode.SideBySide
};
comparer.Compare("result_side_by_side.pdf", options);
}
Document résultant en mode Side‑by‑Side :
Ce qui se passe en coulisses :
- Chaque page de résultat est en fait une large toile divisée en deux moitiés.
- La moitié gauche montre la page source correspondante avec les suppressions mises en évidence.
- La moitié droite montre la page cible avec les insertions mises en évidence.
- Le contenu des deux documents ne se chevauche jamais, ainsi même les pages fortement modifiées restent lisibles.
Mode 3 : Comparaison Interleaved
Quand l’utiliser : vous voulez examiner les changements page par page dans un lecteur PDF standard en utilisant son mode Two Page View (ou « Facing Pages »). Chaque page source se trouve à gauche, sa page cible correspondante à droite — la disposition physique des pages reflète ce que Side‑by‑Side rend sur une seule toile, mais chaque page conserve sa taille réelle.
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source.pdf"))
{
comparer.Add("target.pdf");
var options = new PdfCompareOptions
{
DisplayMode = PdfCompareOptions.ComparisonDisplayMode.Interleaved,
AnnotationAuthorName = "GroupDocs"
};
comparer.Compare("result_interleaved.pdf", options);
}
Document résultant en mode Interleaved (affiché en Vue deux pages) :
Ce qui se passe en coulisses :
- Le document résultat contient
2 × Npages pour une paire source/cible deNpages. - Les pages impaires (1, 3, 5 …) sont les pages source avec les suppressions mises en évidence.
- Les pages paires (2, 4, 6 …) sont les pages cible avec les insertions mises en évidence.
AnnotationAuthorNameappose le nom de l’auteur sur les annotations PDF générées pendant la comparaison — utile lorsque le résultat alimente un flux de révision où les commentaires de plusieurs auteurs doivent être distinguables.
Astuce : ouvrez le résultat dans Adobe Acrobat Reader ou tout autre visionneur supportant View → Page Display → Two Page View pour obtenir automatiquement la disposition gauche/droite prévue.
Limiter la comparaison à une plage de pages
Les trois modes supportent le filtrage par plage de pages via la propriété PagesSetup. Cela est pratique lorsqu’un chapitre ou une section spécifique d’un gros document a changé et que vous souhaitez ignorer le reste.
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source.pdf"))
{
comparer.Add("target.pdf");
var options = new PdfCompareOptions
{
DisplayMode = PdfCompareOptions.ComparisonDisplayMode.SideBySide,
PagesSetup = new PagesSetup
{
StartPage = 3,
EndPage = 10
}
};
comparer.Compare("result_pages_3_to_10.pdf", options);
}
Lorsque PagesSetup est null (ou non défini), toutes les pages sont comparées — le même comportement que dans les versions précédentes.
Explorer PdfCompareOptions
PdfCompareOptions est une sous‑classe spécifique aux PDF de CompareOptions, suivant le même modèle que WordCompareOptions introduit dans la version 26.2. Elle regroupe tous les paramètres propres aux PDF en un seul endroit afin que vous n’appliquiez pas accidentellement des options propres à Word ou à des feuilles de calcul à un travail PDF.
| Property | Type | Description |
|---|---|---|
DisplayMode |
ComparisonDisplayMode |
Contrôle la disposition du résultat : Inline (par défaut), SideBySide ou Interleaved. |
PagesSetup |
PagesSetup |
Plage de pages à comparer. Si null, toutes les pages sont traitées. |
CompareImagesPdf |
bool |
Indique s’il faut inclure les images intégrées dans la comparaison. |
AnnotationAuthorName |
string |
Nom de l’auteur apposé sur les annotations PDF (utilisé en mode Interleaved). |
ImagesInheritanceMode |
enum | Contrôle quel document fournit les images lorsque la comparaison d’images est désactivée. |
Exemple entièrement configuré :
var options = new PdfCompareOptions
{
DisplayMode = PdfCompareOptions.ComparisonDisplayMode.Interleaved,
CompareImagesPdf = true,
AnnotationAuthorName = "Review Bot",
PagesSetup = new PagesSetup { StartPage = 1, EndPage = 5 }
};
Les propriétés héritées de la classe de base CompareOptions — InsertedItemStyle, DeletedItemStyle, ChangedItemStyle — sont également disponibles, vous permettant de remplacer les couleurs de mise en évidence par défaut si besoin.
Récupérer les modifications par programme
Quel que soit le mode d’affichage, vous pouvez obtenir une liste structurée de toutes les différences détectées via Comparer.GetChanges(). Cela est utile pour créer des rapports personnalisés, alimenter un système de révision ou collecter des statistiques sur l’ampleur des modifications.
using (var comparer = new Comparer("source.pdf"))
{
comparer.Add("target.pdf");
comparer.Compare("result.pdf");
var changes = comparer.GetChanges(); // returns ChangeInfo[]
Console.WriteLine($"Total changes detected: {changes.Length}");
}
Voir la référence officielle de l’API pour plus de détails : Comparer.GetChanges.
Travailler avec des PDFs protégés par mot de passe
Les PDFs protégés par mot de passe sont entièrement pris en charge. Transmettez le mot de passe via LoadOptions lors de la création du Comparer :
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source_protected.pdf",
new LoadOptions { Password = "secret" }))
{
comparer.Add("target_protected.pdf", new LoadOptions { Password = "secret" });
var options = new PdfCompareOptions
{
DisplayMode = PdfCompareOptions.ComparisonDisplayMode.SideBySide
};
comparer.Compare("result_protected.pdf", options);
}
Obtenir un essai gratuit
Vous pouvez télécharger GroupDocs.Comparison for .NET depuis la official releases page. Pour des tests illimités, demandez une temporary license — aucune carte de crédit requise.
Questions fréquentes
Q : Dois‑je installer Adobe Acrobat ou un autre logiciel PDF sur le serveur ?
R : Non. GroupDocs.Comparison est une bibliothèque .NET autonome qui lit et écrit des fichiers PDF sans dépendances tierces.
Q : Quel mode d’affichage devrais‑je utiliser par défaut ?
R : Commencez avec Inline — il produit le résultat le plus compact et le plus facile à partager. Passez à SideBySide lorsque des modifications importantes rendent la vue inline difficile à lire, ou utilisez Interleaved lorsque les réviseurs ouvriront le résultat en mode « Two Page View » d’un lecteur PDF.
Q : Puis‑je comparer des documents dans d’autres formats que le PDF ?
R : Oui — la bibliothèque prend en charge les documents Word, les classeurs Excel, les présentations PowerPoint, les fichiers texte brut, et bien d’autres. La liste complète se trouve dans la documentation.
Q : Que se passe‑t‑il si je ne définis pas de licence ?
R : La bibliothèque fonctionne en mode évaluation. Les documents de sortie contiendront un filigrane et seules les premières pages seront traitées. Une temporary license supprime ces restrictions pour les tests.
Q : Puis‑je comparer uniquement les images à l’intérieur d’un PDF et ignorer les changements de texte ?
R : Utilisez CompareImagesPdf = true sur PdfCompareOptions pour inclure la comparaison d’images. Pour vous concentrer exclusivement sur les images, vous pouvez combiner cela avec la propriété ImagesInheritanceMode ; consultez la référence de l’API pour les détails.
Conclusion
GroupDocs.Comparison for .NET 26.4 vous offre un contrôle précis, piloté par le code, sur la façon dont les résultats de comparaison de PDF sont présentés. Le mode Inline couvre le cas d’usage le plus courant — un PDF rouge annoté unique et partageable. SideBySide maintient le contenu fortement modifié clair et lisible. Interleaved s’associe naturellement à la Two Page View de tout lecteur PDF pour une revue page par page en taille réelle. En outre, le filtrage par plage de pages vous permet de cibler exactement les sections qui importent, et PdfCompareOptions regroupe tous les paramètres spécifiques aux PDF dans une classe facilement découvrable.
Choisissez le mode qui correspond à votre flux de travail, ou générez les trois et laissez chaque public choisir la vue qui lui convient le mieux.