我想检查C#中两个PDF文件的文本内容。
答案 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,并允许您更改源或目标文档/文件中插入或删除的内容的颜色。