Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Veuillez noter que tous les outils de comparaison sont disponibles dans la bibliothèque Aspose.PDF.Drawing.
Lorsque vous travaillez avec des documents PDF, il y a des moments où vous devez comparer le contenu de deux documents pour identifier les différences. La bibliothèque Aspose.PDF for .NET fournit un ensemble d’outils puissant à cet effet. Dans cet article, nous allons explorer comment comparer des documents PDF en utilisant quelques extraits de code simples.
La fonctionnalité de comparaison dans Aspose.PDF vous permet de comparer deux documents PDF page par page. Vous pouvez choisir de comparer soit des pages spécifiques, soit des documents entiers. Le document de comparaison résultant met en évidence les différences, facilitant ainsi l’identification des changements entre les deux fichiers.
Voici une liste des façons possibles de comparer des documents PDF en utilisant la bibliothèque Aspose.PDF for .NET :
Comparer des pages spécifiques - Comparez les premières pages de deux documents PDF.
Comparer des documents entiers - Comparez le contenu entier de deux documents PDF.
Comparer des documents PDF graphiquement :
Comparez PDF avec la méthode GetDifference - images individuelles où les changements sont marqués.
Comparez PDF avec la méthode CompareDocumentsToPdf - document PDF avec des images où les changements sont marqués.
Le premier extrait de code démontre comment comparer les premières pages de deux documents PDF.
Initialisation du document. Le code commence par initialiser deux documents PDF en utilisant leurs chemins de fichiers respectifs (documentPath1 et documentPath2). Les chemins sont spécifiés comme des chaînes vides pour l’instant, mais en pratique, vous les remplaceriez par les chemins de fichiers réels.
Processus de comparaison.
‘AdditionalChangeMarks = true’ - cette option garantit que des marqueurs de changement supplémentaires sont affichés. Ces marqueurs mettent en évidence les différences qui pourraient être présentes sur d’autres pages, même si elles ne se trouvent pas sur la page actuelle en cours de comparaison.
‘ComparisonMode = ComparisonMode.IgnoreSpaces’ - ce mode indique au comparateur d’ignorer les espaces dans le texte, se concentrant uniquement sur les changements au sein des mots.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ComparingSpecificPages()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_DocumentCompare();
// Open PDF documents
using (var document1 = new Aspose.Pdf.Document(dataDir + "ComparingSpecificPages1.pdf"))
{
using (var document2 = new Aspose.Pdf.Document(dataDir + "ComparingSpecificPages2.pdf"))
{
// Compare
Aspose.Pdf.Comparison.SideBySidePdfComparer.Compare(document1.Pages[1], document2.Pages[1], dataDir + "ComparingSpecificPages_out.pdf", new Aspose.Pdf.Comparison.SideBySideComparisonOptions
{
AdditionalChangeMarks = true,
ComparisonMode = Aspose.Pdf.Comparison.ComparisonMode.IgnoreSpaces,
DeleteColor = Color.DarkGray,
InsertColor = Color.LightYellow
});
}
}
}
Le deuxième extrait de code élargit le champ d’application pour comparer le contenu entier de deux documents PDF.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ComparingEntireDocuments()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_DocumentCompare();
// Open PDF documents
using (var document1 = new Aspose.Pdf.Document(dataDir + "ComparingEntireDocuments1.pdf"))
{
using (var document2 = new Aspose.Pdf.Document(dataDir + "ComparingEntireDocuments2.pdf"))
{
// Compare
Aspose.Pdf.Comparison.SideBySidePdfComparer.Compare(
document1,
document2,
dataDir + "ComparingEntireDocuments_out.pdf",
new Aspose.Pdf.Comparison.SideBySideComparisonOptions
{
AdditionalChangeMarks = true,
ComparisonMode = Aspose.Pdf.Comparison.ComparisonMode.IgnoreSpaces,
DeleteColor = Color.DarkGray,
InsertColor = Color.LightYellow
});
}
}
}
Les résultats de comparaison générés par ces extraits sont des documents PDF que vous pouvez ouvrir dans un visualiseur comme Adobe Acrobat. Si vous utilisez la vue à deux pages dans Adobe Acrobat, vous verrez les changements côte à côte :
En définissant ‘AdditionalChangeMarks’ sur ’true’, vous pouvez également voir des marqueurs pour les changements qui peuvent se produire sur d’autres pages, même si ces changements ne sont pas sur la page actuelle affichée.
Aspose.PDF for .NET fournit des outils robustes pour comparer des documents PDF, que vous ayez besoin de comparer des pages spécifiques ou des documents entiers. En utilisant des options comme ‘AdditionalChangeMarks’ et différents paramètres ‘ComparisonMode’, vous pouvez adapter le processus de comparaison à vos besoins spécifiques. Le document résultant fournit une vue claire, côte à côte des changements, facilitant le suivi des révisions et garantissant l’exactitude des documents.
| Classe | But | Propriétés clés | Comment utiliser |
|---|---|---|---|
SideBySideDocsComparisonResult |
Représente le résultat d’une comparaison côte à côte de deux documents PDF. | * HasChanges – indique si des changements ont été détectés.* FirstDocChanges – une liste de changements regroupés par pages de la première version du document.* SecondDocChanges – une liste de changements regroupés par pages de la deuxième version du document.* FullChanges – la séquence complète des changements, où chaque élément correspond à une paire de pages comparées et contient toutes les opérations de comparaison pour cette paire de pages. |
Renvoie par la méthode SideBySidePdfComparer.Compare(Document, Document, string, SideBySideComparisonOptions). Après avoir obtenu l’instance, vous pouvez déterminer si des changements existent (HasChanges) et parcourir les collections pour récupérer des informations détaillées sur les pages et fragments qui ont changé. |
SideBySidePagesComparisonResult |
Représente le résultat d’une comparaison côte à côte de deux pages PDF individuelles. | * HasChanges – indique si des différences existent entre les pages.* FirstPageChanges – une liste de changements détectés sur la première page.* SecondPageChanges – une liste de changements détectés sur la deuxième page.* FullChanges – la séquence complète des opérations de comparaison entre les deux pages. |
Renvoie par la méthode SideBySidePdfComparer.Compare(Page, Page, string, SideBySideComparisonOptions). Après avoir obtenu l’instance, vous pouvez déterminer si des changements existent (HasChanges) et parcourir les collections pour récupérer la liste complète des différences. |
| Propriété | Type | Description |
|---|---|---|
HasChanges |
bool |
Indique si au moins une différence existe. |
FirstDocChanges / FirstPageChanges |
List<List<EditContainer>> / List<EditContainer> |
Contient les changements détectés dans le premier (document/page). Pour les documents, il s’agit d’une liste de listes, où chaque liste imbriquée correspond à une seule page. |
SecondDocChanges / SecondPageChanges |
List<List<EditContainer>> / List<EditContainer> |
Contient les changements détectés dans le deuxième (document/page). Pour les documents, il s’agit d’une liste de listes, où chaque liste imbriquée correspond à une seule page. |
FullChanges |
List<List<DiffOperation>> (documents) List<DiffOperation> (pages) |
Un ensemble consolidé de toutes les opérations de comparaison. Pour les documents, il s’agit d’une liste à deux dimensions où chaque élément extérieur correspond à une paire de pages comparées. Pour les pages, il s’agit d’une liste plate d’opérations. |
DiffOperation |
(type externe) | Décrit un changement spécifique (insertion, suppression, égalité). |
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ComparingEntireDocuments()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_DocumentCompare();
// --- Comparing pages ----------------------------
// Open PDF documents
using (Document doc1 = new Document(dataDir + "ComparingEntireDocuments1.pdf"),
doc2 = new Document(dataDir + "ComparingEntireDocuments2.pdf"))
{
// Compare
SideBySidePagesComparisonResult pageResult = SideBySidePdfComparer.Compare(
doc1.Pages[1],
doc2.Pages[1],
dataDir + "ComparingEntireDocuments_out.pdf",
new SideBySideComparisonOptions
{
AdditionalChangeMarks = false,
ComparisonMode = ComparisonMode.Normal
});
Console.WriteLine("=== Page Comparison ===");
Console.WriteLine(pageResult.HasChanges ? "Changes were detected" : "No changes detected");
Console.WriteLine($"First page changes count : {pageResult.FirstPageChanges.Count}");
Console.WriteLine($"Second page changes count: {pageResult.SecondPageChanges.Count}");
Console.WriteLine($"Total changes count : {pageResult.FullChanges.Count}");
}
// --- Comparing documents ----------------------------
// Open PDF documents
using (Document doc1 = new Document(dataDir + "ComparingEntireDocuments1.pdf"),
doc2 = new Document(dataDir + "ComparingEntireDocuments2.pdf"))
{
// Compare
SideBySideDocsComparisonResult docResult = SideBySidePdfComparer.Compare(
doc1,
doc2,
dataDir + "ComparingEntireDocuments_out.pdf",
new SideBySideComparisonOptions
{
AdditionalChangeMarks = false,
ComparisonMode = ComparisonMode.Normal
});
Console.WriteLine("\n=== Document Comparison ===");
Console.WriteLine(docResult.HasChanges ? "Changes were detected" : "No changes detected");
Console.WriteLine($"First document changes count : {Count(docResult.FirstDocChanges)} ");
Console.WriteLine($"Second document changes count: {Count(docResult.SecondDocChanges)}");
Console.WriteLine($"Total changes count : {Count(docResult.FullChanges)}");
}
}
private static int Count<T>(List<List<T>> list)
{
int count = 0;
foreach (var innerList in list)
{
count += innerList.Count;
}
return count;
}
EditContainer est un objet d’aide qui décrit un changement individuel détecté lors de la comparaison de pages PDF (ou de documents). Il sert de “conteneur” qui stocke l’identifiant du changement, le type de différence, des indicateurs de marqueurs supplémentaires et des coordonnées géométriques (rectangles) indiquant l’emplacement exact du changement sur la page.
| Propriété | Type | Description |
|---|---|---|
Id |
int |
Un identifiant unique du changement. Il permet de distinguer un changement d’un autre dans le résultat de comparaison. Il est utilisé dans les annotations de changement sur les pages. |
Operation |
DiffOperation |
Le type d’opération diff décrivant la nature du changement (insertion, suppression, remplacement, etc.). |
Rects |
List<Rectangle> |
Une collection de régions rectangulaires couvrant le fragment modifié sur la page. |
Lors de la collaboration sur des documents, en particulier dans des environnements professionnels, vous vous retrouvez souvent avec plusieurs versions du même fichier.
Vous pouvez utiliser la classe GraphicalPdfComparer pour comparer des documents et des pages PDF. La classe est adaptée pour comparer les changements dans le contenu graphique d’une page.
Avec Aspose.PDF for .NET, il est possible de comparer des documents et des pages et de sortir le résultat de la comparaison dans un document PDF ou un fichier image.
Vous pouvez définir les propriétés de classe suivantes :
La classe dispose d’une méthode qui vous permet d’obtenir les différences d’image de page sous une forme adaptée à un traitement ultérieur : ImagesDifference GetDifference(Page page1, Page page2).
Cette méthode renvoie un objet de la classe ImagesDifference, qui contient une image de la première page comparée et un tableau de différences. Le tableau de différences et l’image originale ont le format de pixel RGB24bpp.
ImagesDifference vous permet de générer une image différente et d’obtenir une image de la deuxième page comparée en ajoutant un tableau de différences à l’image originale. Pour ce faire, utilisez les méthodes ImagesDifference.GetDestinationImage et ImagesDifference.DifferenceToImage.
Le code fourni définit une méthode GetDifference qui compare deux documents PDF et génère des représentations visuelles des différences entre eux.
Cette méthode compare les premières pages de deux fichiers PDF et génère deux images PNG :
Ce processus peut être utile pour comparer visuellement les changements ou les différences entre deux versions d’un document.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ComparePDFWithGetDifferenceMethod()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_DocumentCompare();
// Open PDF documents
using (var document1 = new Aspose.Pdf.Document(dataDir + "ComparePDFWithGetDifferenceMethod1.pdf"))
{
using (var document2 = new Aspose.Pdf.Document(dataDir + "ComparePDFWithGetDifferenceMethod2.pdf"))
{
// Create comparer
var comparer = new Aspose.Pdf.Comparison.GraphicalPdfComparer();
// Compare
using (var imagesDifference = comparer.GetDifference(document1.Pages[1], document2.Pages[1]))
{
using (var diffImg = imagesDifference.DifferenceToImage(Aspose.Pdf.Color.Red, Aspose.Pdf.Color.White))
{
diffImg.Save(dataDir + "ComparePDFWithGetDifferenceMethodDiffPngFilePath_out.png");
}
using (var destImg = imagesDifference.GetDestinationImage())
{
destImg.Save(dataDir + "ComparePDFWithGetDifferenceMethodDestPngFilePath_out.png");
}
}
}
}
}
L’extrait de code fourni utilise la méthode CompareDocumentsToPdf, qui compare deux documents et génère un rapport PDF des résultats de comparaison.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ComparePDFWithCompareDocumentsToPdfMethod()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_DocumentCompare();
// Open PDF documents
using (var document1 = new Aspose.Pdf.Document(dataDir + "ComparePDFWithCompareDocumentsToPdfMethod1.pdf"))
{
using (var document2 = new Aspose.Pdf.Document(dataDir + "ComparePDFWithCompareDocumentsToPdfMethod2.pdf"))
{
// Create comparer
var comparer = new Aspose.Pdf.Comparison.GraphicalPdfComparer()
{
Threshold = 3.0,
Color = Aspose.Pdf.Color.Blue,
Resolution = new Aspose.Pdf.Devices.Resolution(300)
};
// Compare
comparer.CompareDocumentsToPdf(document1, document2, dataDir + "compareDocumentsToPdf_out.pdf");
}
}
}
Vous pouvez utiliser la classe TextPdfComparer pour comparer des documents et des pages individuelles. La classe permet de comparer des documents page par page ou comme un flux de contenu continu unique (sans séparation de pages). Les méthodes de comparaison renvoient un tableau de différences qui peut être passé à n’importe quelle classe implémentant les interfaces IStringOutputGenerator ou IFileOutputGenerator pour produire une sortie de comparaison formatée. La sortie est prise en charge dans : HTML, Markdown, PDF, et JSON. Vous pouvez également utiliser la classe ComparisonStatistics pour obtenir des statistiques sur les opérations de comparaison effectuées.
| Méthode | Description | Paramètres | Valeur de retour |
|---|---|---|---|
CompareDocumentsPageByPage(Document document1, Document document2, ComparisonOptions options) |
Compare deux documents PDF page par page. | * document1 – le premier document.* document2 – le deuxième document.* options – options de comparaison (voir ci-dessous). |
List<List<DiffOperation>> – liste des différences pour chaque page. |
CompareDocumentsPageByPage(Document document1, Document document2, ComparisonOptions options, string resultPdfDocumentPath) |
Même que ci-dessus, mais enregistre également les résultats de comparaison dans un fichier PDF. | Même paramètres que ci-dessus + resultPdfDocumentPath – chemin vers le fichier de sortie. |
List<List<DiffOperation>> – liste des différences. |
CompareFlatDocuments(Document document1, Document document2, ComparisonOptions options) |
Compare deux documents PDF comme un texte continu unique (fusionnant toutes les pages). | Même paramètres que dans CompareDocumentsPageByPage. |
List<DiffOperation> – liste de toutes les différences. |
CompareFlatDocuments(Document document1, Document document2, ComparisonOptions options, string resultPdfDocumentPath) |
Comparaison de documents plats avec résultat enregistré dans un fichier PDF. | Même paramètres que dans CompareFlatDocuments + resultPdfDocumentPath. |
List<DiffOperation> – liste des différences. |
ComparePages(Page page1, Page page2, ComparisonOptions options) |
Compare deux pages individuelles. | * page1 – la première page.* page2 – la deuxième page.* options – options de comparaison. |
List<DiffOperation> – liste des différences de page. |
CreateComparisonStatistics(List<DiffOperation> diffs) |
Génère des statistiques de comparaison pour une liste d’opérations (page unique). | diffs – liste de DiffOperation. |
TextItemComparisonStatistics (voir ci-dessous). |
CreateComparisonStatistics(List<List<DiffOperation>> diffs) |
Génère des statistiques de comparaison pour une liste d’opérations sur plusieurs pages (niveau document). | diffs – liste de listes de DiffOperation. |
DocumentComparisonStatistics (voir ci-dessous). |
AssemblySourcePageText(List<DiffOperation> diffs) |
Reconstruit le texte original (avant changement) de la page. | diffs – liste d’opérations. |
string – texte original. |
AssemblyDestinationPageText(List<DiffOperation> diffs) |
Reconstruit le texte modifié (après changement) de la page. | diffs – liste d’opérations. |
string – texte modifié. |
ComparisonOptionsParamètres affectant le processus de comparaison :
| Propriété | Type | Description |
|---|---|---|
ExtractionArea |
Rectangle |
La zone à partir de laquelle le texte sera extrait. Non compatible avec ExcludeTables, ExcludeAreas1/2. |
ExcludeTables |
bool |
Exclure les tables de la comparaison. Non compatible avec ExtractionArea. |
ExcludeAreas1 |
Rectangle[] |
Tableau de zones à exclure pour le premier document. |
ExcludeAreas2 |
Rectangle[] |
Tableau de zones à exclure pour le deuxième document. |
EditOperationsOrder |
EditOperationsOrder (enum) |
Ordre d’application des opérations d’insertion/suppression (la valeur par défaut est DeleteFirst). |
DiffOperationReprésente une opération de différence unique. Contient :
| Propriété | Type | Description |
|---|---|---|
Operation |
Operation (enum) |
Type d’opération (Equal, Delete, Insert). |
Text |
string |
Texte associé à l’opération. |
ComparisonStatistics| Classe | Description |
|---|---|
TextItemComparisonStatistics |
Statistiques pour un texte individuel (page). Comprend le nombre total de caractères, le nombre d’insertion, de suppressions et les opérations correspondantes. |
DocumentComparisonStatistics (hérite de TextItemComparisonStatistics) |
Statistiques étendues pour l’ensemble du document, y compris une liste de PagesStatistics (statistiques par page). |
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.