我有两个pdf文件,我想比较这两个pdf文件并在messagebox中打印差异。
到目前为止,我有这个(但它没有像我期望的那样工作):
private void button1_Click(object sender, EventArgs e)
{
string str1 = this.textBox1.Text;
string str2 = this.textBox2.Text;
string comparison = str1.Replace(str2,"");
MessageBox.Show(comparison);
}
private void ParsePDF(string filePath)
{
string text = string.Empty;
PdfReader reader = new iTextSharp.text.pdf.PdfReader(filePath);
byte[] streamBytes = reader.GetPageContent(1);
PRTokeniser tokenizer = new PRTokeniser(streamBytes);
while (tokenizer.NextToken())
{
if (tokenizer.TokenType == PRTokeniser.TokType.STRING)
{
text += tokenizer.StringValue;
}
}
this.textBox1.Text = text.ToString();
this.textBox2.Text = text.ToString();
}
}
就在下面我调用那个方法:ParsePDF(“C://Users//lf222aw//Desktop//file1.pdf”);
我的程序是这样的: 假设我有一个带有文本“I love stackoverflow”的文本框和另一个文本框 “我stackoverflow”和我的程序打印出这样的结果:“我喜欢stackoverflow”和我想要打印的是“爱”作为两个文件之间的差异
任何想法? 的问候,
答案 0 :(得分:2)
答案 1 :(得分:1)
如果您将文件拆分为单词,则可以使用以下内容:
Dim str1 = New String() {"I", "love", "stackoverflow"}
Dim str2 = New String() {"I", "stackoverflow"}
Dim Diff = str1.Where(Function(x) Not str2.Contains(x)).ToArray()
答案 2 :(得分:0)
您错误地使用了String.Replace
。它应该在字符串1中找到所有出现的字符串2,并用给定的文本替换它。在您的示例中,您尝试在I stackoverflow
中找到所有I love stackoverflow
,但没有匹配,这就是您的程序仍在打印I love stackoverflow
的原因。查看关于字符串比较的SO帖子。 How to find difference between two strings?
答案 3 :(得分:0)
如果我正确地阅读您的代码,您将1页的内容写入两个文本框。
同样使用你的替换语句它将永远不会起作用,因为“I stackoverflow”中不存在“I stackoverflow”。
如果您有“a b c”和“a c”。
你会看到“a b c”中没有“a c”
答案 4 :(得分:0)
在源文本和目标文本/文件中,区别在于单词爱,并且必须在输出文件中突出显示该单词。 .NET API的GroupDocs.Comparison提供了此功能。如果启用它,它将检测样式更改:
ComparisonSettings settings = new ComparisonSettings();
settings.StyleChangeDetection = true;
并且可以检测到以下样式更改:
settings.InsertedItemsStyle.FontColor = System.Drawing.Color.Brown;
settings.InsertedItemsStyle.BeginSeparatorString = "<inserted>";
settings.InsertedItemsStyle.EndSeparatorString = "</inserted>";
settings.DeletedItemsStyle.FontColor = System.Drawing.Color.Aquamarine;
settings.DeletedItemsStyle.BeginSeparatorString = "<deleted>";
settings.DeletedItemsStyle.EndSeparatorString = "</deleted>";
settings.StyleChangedItemsStyle.FontColor = System.Drawing.Color.Aqua;
settings.StyleChangedItemsStyle.BeginSeparatorString = "<style>";
settings.StyleChangedItemsStyle.EndSeparatorString = "</style>";
下面是处理文档比较的代码:
ICompareResult result = comparer.Compare(source, target, settings);