在c#中比较两个pdf文件的最佳方法是什么?

时间:2010-12-07 13:49:16

标签: c# .net-3.5

我想检查C#中两个PDF文件的文本内容。

5 个答案:

答案 0 :(得分:4)

如果它们相同,您可以进行二进制比较。如果要进行上下文比较,您可能需要一个PDF库。 Here是一些图书馆。

答案 1 :(得分:1)

不容易,但我想第一步是获得一个可以从PDF中提取文本的体面PDF库。我使用的是ITextSharp,可从http://itextpdf.com/(开源)获得。然后尝试差异库,例如DIffer: a reusable C# diffing utility and class library。祝你好运!

答案 2 :(得分:0)

免责声明:我为Atalasoft工作。

Atalasoft的DotImage SDK可用于从C#中的PDF中提取文本。如果PDF已经可以搜索,您可以轻松找到文本:

public String GetText(Stream s, int pageNum, int charIndex, int count)
{
   using (PdfTextDocument doc = new PdfTextDocument(s))
   {
       PdfTextPage textPage = doc.GetPage(pageNum);                    
       return textPage.GetText(charIndex, count);
   }
}

否则,您可以使用OCR工具检测图像上的文本。

答案 3 :(得分:0)

已经有一段时间了,但这个功能对我有用(但不能保证......我不记得我是否在嵌入式图像或任何东西的PDF上试过它)。文件中嵌入了GUID或某种ID,您只需删除它并比较其他所有内容即可。这是代码:

    static bool ComparePDFs(string file1, string file2)
    {
        if (!File.Exists(file2))
            return false;

        int i;
        string f1 = File.ReadAllText(file1);
        string f2 = File.ReadAllText(file2);

        if (f1.Length != f2.Length)
            return false;

        // Remove PDF ID from file1
        i = f1.LastIndexOf("/ID [<");
        if (i < 0)
            Console.WriteLine("Error: File is not a valid PDF file: " + file1);
        else
            f1 = f1.Substring(0, i) + f1.Substring(i + 75);

        // Remove PDF ID from file2
        i = f2.LastIndexOf("/ID [<");
        if (i < 0)
            Console.WriteLine("Error: File is not a valid PDF file: " + file2);
        else
            f2 = f2.Substring(0, i) + f2.Substring(i + 75);

        return f1 == f2;
    }

答案 4 :(得分:0)

使用GroupDocs.Comparison for .NET API比较两个PDF文件。

HasManyThough

它检测到style changes,并允许您更改源或目标文档/文件中插入或删除的内容的颜色。