Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Harap dicatat bahwa semua alat perbandingan tersedia di Aspose.PDF.Drawing library.
Saat bekerja dengan dokumen PDF, ada kalanya Anda perlu membandingkan konten dari dua dokumen untuk mengidentifikasi perbedaan. Library Aspose.PDF for .NET menyediakan seperangkat alat yang kuat untuk tujuan ini. Dalam artikel ini, kita akan menjelajahi cara membandingkan dokumen PDF menggunakan beberapa cuplikan kode sederhana.
Fungsi perbandingan di Aspose.PDF memungkinkan Anda untuk membandingkan dua dokumen PDF halaman demi halaman. Anda dapat memilih untuk membandingkan halaman tertentu atau seluruh dokumen. Dokumen perbandingan yang dihasilkan menyoroti perbedaan, sehingga lebih mudah untuk mengidentifikasi perubahan antara kedua file.
Berikut adalah daftar cara yang mungkin untuk membandingkan dokumen PDF menggunakan library Aspose.PDF for .NET:
Membandingkan Halaman Tertentu - Bandingkan halaman pertama dari dua dokumen PDF.
Membandingkan Seluruh Dokumen - Bandingkan seluruh konten dari dua dokumen PDF.
Bandingkan dokumen PDF secara grafis:
Bandingkan PDF dengan metode GetDifference - gambar individu di mana perubahan ditandai.
Bandingkan PDF dengan metode CompareDocumentsToPdf - dokumen PDF dengan gambar di mana perubahan ditandai.
Cuplikan kode pertama menunjukkan cara membandingkan halaman pertama dari dua dokumen PDF.
Inisialisasi Dokumen. Kode dimulai dengan menginisialisasi dua dokumen PDF menggunakan jalur file masing-masing (documentPath1 dan documentPath2). Jalur tersebut ditentukan sebagai string kosong untuk saat ini, tetapi dalam praktiknya, Anda akan menggantinya dengan jalur file yang sebenarnya.
Proses Perbandingan.
‘AdditionalChangeMarks = true’ - opsi ini memastikan bahwa penanda perubahan tambahan ditampilkan. Penanda ini menyoroti perbedaan yang mungkin ada di halaman lain, bahkan jika tidak ada di halaman saat ini yang dibandingkan.
‘ComparisonMode = ComparisonMode.IgnoreSpaces’ - mode ini memberi tahu pembanding untuk mengabaikan spasi dalam teks, hanya fokus pada perubahan dalam kata.
// 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
});
}
}
}
Cuplikan kode kedua memperluas cakupan untuk membandingkan seluruh konten dari dua dokumen 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
});
}
}
}
Hasil perbandingan yang dihasilkan oleh cuplikan ini adalah dokumen PDF yang dapat Anda buka di penampil seperti Adobe Acrobat. Jika Anda menggunakan tampilan Dua halaman di Adobe Acrobat, Anda akan melihat perubahan berdampingan:
Dengan mengatur ‘AdditionalChangeMarks’ ke ’true’, Anda juga dapat melihat penanda untuk perubahan yang mungkin terjadi di halaman lain, bahkan jika perubahan tersebut tidak ada di halaman saat ini yang sedang dilihat.
Aspose.PDF for .NET menyediakan alat yang kuat untuk membandingkan dokumen PDF, baik Anda perlu membandingkan halaman tertentu atau seluruh dokumen. Dengan menggunakan opsi seperti ‘AdditionalChangeMarks’ dan pengaturan ‘ComparisonMode’ yang berbeda, Anda dapat menyesuaikan proses perbandingan sesuai dengan kebutuhan spesifik Anda. Dokumen yang dihasilkan memberikan tampilan yang jelas, berdampingan dari perubahan, sehingga lebih mudah untuk melacak revisi dan memastikan akurasi dokumen.
| Kelas | Tujuan | Properti Kunci | Cara Menggunakan |
|---|---|---|---|
SideBySideDocsComparisonResult |
Mewakili hasil perbandingan berdampingan dari dua dokumen PDF. | * HasChanges – menunjukkan apakah ada perubahan yang terdeteksi.* FirstDocChanges – daftar perubahan yang dikelompokkan berdasarkan halaman versi dokumen pertama.* SecondDocChanges – daftar perubahan yang dikelompokkan berdasarkan halaman versi dokumen kedua.* FullChanges – urutan lengkap perubahan, di mana setiap elemen sesuai dengan sepasang halaman yang dibandingkan dan berisi semua operasi perbandingan untuk pasangan halaman tersebut. |
Dikembalikan oleh metode SideBySidePdfComparer.Compare(Document, Document, string, SideBySideComparisonOptions). Setelah mendapatkan instansinya, Anda dapat menentukan apakah ada perubahan yang ada (HasChanges) dan mengiterasi melalui koleksi untuk mengambil informasi rinci tentang halaman dan fragmen mana yang telah berubah. |
SideBySidePagesComparisonResult |
Mewakili hasil perbandingan berdampingan dari dua halaman PDF individu. | * HasChanges – menunjukkan apakah ada perbedaan antara halaman.* FirstPageChanges – daftar perubahan yang terdeteksi di halaman pertama.* SecondPageChanges – daftar perubahan yang terdeteksi di halaman kedua.* FullChanges – urutan lengkap operasi perbandingan antara kedua halaman. |
Dikembalikan oleh metode SideBySidePdfComparer.Compare(Page, Page, string, SideBySideComparisonOptions). Setelah mendapatkan instansinya, Anda dapat menentukan apakah ada perubahan yang ada (HasChanges) dan mengiterasi melalui koleksi untuk mengambil daftar lengkap perbedaan. |
| Properti | Tipe | Deskripsi |
|---|---|---|
HasChanges |
bool |
Menunjukkan apakah setidaknya satu perbedaan ada. |
FirstDocChanges / FirstPageChanges |
List<List<EditContainer>> / List<EditContainer> |
Mengandung perubahan yang terdeteksi di dokumen (halaman) pertama. Untuk dokumen, ini adalah daftar daftar, di mana setiap daftar bersarang sesuai dengan satu halaman. |
SecondDocChanges / SecondPageChanges |
List<List<EditContainer>> / List<EditContainer> |
Mengandung perubahan yang terdeteksi di dokumen (halaman) kedua. Untuk dokumen, ini adalah daftar daftar, di mana setiap daftar bersarang sesuai dengan satu halaman. |
FullChanges |
List<List<DiffOperation>> (dokumen) List<DiffOperation> (halaman) |
Sekumpulan operasi perbandingan yang lengkap. Untuk dokumen, ini adalah daftar dua dimensi di mana setiap elemen luar sesuai dengan sepasang halaman yang dibandingkan. Untuk halaman, ini adalah daftar datar dari operasi. |
DiffOperation |
(tipe eksternal) | Menggambarkan perubahan spesifik (penyisipan, penghapusan, kesetaraan). |
// 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 adalah objek pembantu yang menggambarkan perubahan individu yang terdeteksi selama perbandingan halaman PDF (atau dokumen). Ini berfungsi sebagai “wadah” yang menyimpan pengidentifikasi perubahan, jenis perbedaan, tanda tambahan, dan koordinat geometris (persegi panjang) yang menunjukkan lokasi tepat dari perubahan di halaman.
| Properti | Tipe | Deskripsi |
|---|---|---|
Id |
int |
Pengidentifikasi unik dari perubahan. Ini memungkinkan satu perubahan dibedakan dari yang lain dalam hasil perbandingan. Ini digunakan dalam anotasi perubahan di halaman. |
Operation |
DiffOperation |
Jenis operasi perbedaan yang menggambarkan sifat perubahan (penyisipan, penghapusan, penggantian, dll.). |
Rects |
List<Rectangle> |
Kumpulan wilayah persegi panjang yang mencakup fragmen yang dimodifikasi di halaman. |
Saat berkolaborasi pada dokumen, terutama di lingkungan profesional, Anda sering kali berakhir dengan beberapa versi dari file yang sama.
Anda dapat menggunakan kelas GraphicalPdfComparer untuk membandingkan dokumen dan halaman PDF. Kelas ini cocok untuk membandingkan perubahan dalam konten grafis halaman.
Dengan Aspose.PDF for .NET, dimungkinkan untuk membandingkan dokumen dan halaman dan mengeluarkan hasil perbandingan ke dokumen PDF atau file gambar.
Anda dapat mengatur properti kelas berikut:
Kelas ini memiliki metode yang memungkinkan Anda untuk mendapatkan perbedaan gambar halaman dalam bentuk yang cocok untuk pemrosesan lebih lanjut: ImagesDifference GetDifference(Page page1, Page page2).
Metode ini mengembalikan objek dari kelas ImagesDifference, yang berisi gambar dari halaman pertama yang dibandingkan dan array perbedaan. Array perbedaan dan gambar asli memiliki format piksel RGB24bpp.
ImagesDifference memungkinkan Anda untuk menghasilkan gambar yang berbeda dan mendapatkan gambar dari halaman kedua yang dibandingkan dengan menambahkan array perbedaan ke gambar asli. Untuk melakukan ini, gunakan metode ImagesDifference.GetDestinationImage dan ImagesDifference.DifferenceToImage.
Kode yang disediakan mendefinisikan metode GetDifference yang membandingkan dua dokumen PDF dan menghasilkan representasi visual dari perbedaan antara keduanya.
Metode ini membandingkan halaman pertama dari dua file PDF dan menghasilkan dua gambar PNG:
Proses ini dapat berguna untuk membandingkan perubahan atau perbedaan secara visual antara dua versi dokumen.
// 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");
}
}
}
}
}
Cuplikan kode yang disediakan menggunakan metode CompareDocumentsToPdf yang membandingkan dua dokumen dan menghasilkan laporan PDF dari hasil perbandingan.
// 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");
}
}
}
Anda dapat menggunakan kelas TextPdfComparer untuk membandingkan dokumen dan halaman individu. Kelas ini memungkinkan membandingkan dokumen halaman demi halaman atau sebagai aliran konten kontinu tunggal (tanpa pemisahan halaman). Metode perbandingan mengembalikan array perbedaan yang dapat diteruskan ke kelas mana pun yang mengimplementasikan antarmuka IStringOutputGenerator atau IFileOutputGenerator untuk menghasilkan keluaran perbandingan yang diformat. Keluaran didukung dalam: HTML, Markdown, PDF, dan JSON. Anda juga dapat menggunakan kelas ComparisonStatistics untuk memperoleh statistik tentang operasi perbandingan yang dilakukan.
| Metode | Deskripsi | Parameter | Nilai Kembali |
|---|---|---|---|
CompareDocumentsPageByPage(Document document1, Document document2, ComparisonOptions options) |
Membandingkan dua dokumen PDF halaman demi halaman. | * document1 – dokumen pertama.* document2 – dokumen kedua.* options – opsi perbandingan (lihat di bawah). |
List<List<DiffOperation>> – daftar perbedaan untuk setiap halaman. |
CompareDocumentsPageByPage(Document document1, Document document2, ComparisonOptions options, string resultPdfDocumentPath) |
Sama seperti di atas, tetapi juga menyimpan hasil perbandingan ke file PDF. | Parameter yang sama seperti di atas + resultPdfDocumentPath – jalur ke file keluaran. |
List<List<DiffOperation>> – daftar perbedaan. |
CompareFlatDocuments(Document document1, Document document2, ComparisonOptions options) |
Membandingkan dua dokumen PDF sebagai teks kontinu tunggal (menggabungkan semua halaman). | Parameter yang sama seperti di CompareDocumentsPageByPage. |
List<DiffOperation> – daftar semua perbedaan. |
CompareFlatDocuments(Document document1, Document document2, ComparisonOptions options, string resultPdfDocumentPath) |
Perbandingan dokumen datar dengan hasil disimpan ke file PDF. | Parameter yang sama seperti di CompareFlatDocuments + resultPdfDocumentPath. |
List<DiffOperation> – daftar perbedaan. |
ComparePages(Page page1, Page page2, ComparisonOptions options) |
Membandingkan dua halaman individu. | * page1 – halaman pertama.* page2 – halaman kedua.* options – opsi perbandingan. |
List<DiffOperation> – daftar perbedaan halaman. |
CreateComparisonStatistics(List<DiffOperation> diffs) |
Menghasilkan statistik perbandingan untuk daftar operasi (halaman tunggal). | diffs – daftar DiffOperation. |
TextItemComparisonStatistics (lihat di bawah). |
CreateComparisonStatistics(List<List<DiffOperation>> diffs) |
Menghasilkan statistik perbandingan untuk daftar operasi di seluruh halaman (tingkat dokumen). | diffs – daftar daftar DiffOperation. |
DocumentComparisonStatistics (lihat di bawah). |
AssemblySourcePageText(List<DiffOperation> diffs) |
Membangun kembali teks halaman asli (sebelum perubahan). | diffs – daftar operasi. |
string – teks asli. |
AssemblyDestinationPageText(List<DiffOperation> diffs) |
Membangun kembali teks halaman yang dimodifikasi (setelah perubahan). | diffs – daftar operasi. |
string – teks yang dimodifikasi. |
ComparisonOptionsParameter yang mempengaruhi proses perbandingan:
| Properti | Tipe | Deskripsi |
|---|---|---|
ExtractionArea |
Rectangle |
Area dari mana teks akan diekstraksi. Tidak kompatibel dengan ExcludeTables, ExcludeAreas1/2. |
ExcludeTables |
bool |
Mengecualikan tabel dari perbandingan. Tidak kompatibel dengan ExtractionArea. |
ExcludeAreas1 |
Rectangle[] |
Array area yang akan dikecualikan untuk dokumen pertama. |
ExcludeAreas2 |
Rectangle[] |
Array area yang akan dikecualikan untuk dokumen kedua. |
EditOperationsOrder |
EditOperationsOrder (enum) |
Urutan penerapan operasi sisip/hapus (default adalah DeleteFirst). |
DiffOperationMewakili satu operasi perbedaan. Mengandung:
| Properti | Tipe | Deskripsi |
|---|---|---|
Operation |
Operation (enum) |
Jenis operasi (Equal, Delete, Insert). |
Text |
string |
Teks yang terkait dengan operasi. |
ComparisonStatistics| Kelas | Deskripsi |
|---|---|
TextItemComparisonStatistics |
Statistik untuk teks individu (halaman). Termasuk total karakter, jumlah penyisipan, penghapusan, dan operasi yang sesuai. |
DocumentComparisonStatistics (mewarisi dari TextItemComparisonStatistics) |
Statistik yang diperluas untuk seluruh dokumen, termasuk daftar PagesStatistics (statistik per halaman). |
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.