我正在使用PDFSharp。我需要帮助。我需要检查文档中是否包含单词“abc”。例如:
11abcee = true
444abcggw = true
778ab = false
我编写了这段代码,但它没有按预期工作:
PdfDocument document = PdfReader.Open("c:\\abc.pdf");
PdfDictionary dictionary = new PdfDictionary(document);
string a = dictionary.Elements.GetString("MTZ");
if (a.Equals("MTZ"))
{
MessageBox.Show("OK", "");
}
else
{
MessageBox.Show("NO", "");
}
我错过了什么吗?
答案 0 :(得分:1)
也许这个SO条目可以帮助你:PDFSharp alter Text repositioning。 它链接到here - 使用PDFSharp的文本提取示例。
答案 1 :(得分:0)
老问题,但这里有一个例子。
注意:使用IS new局部变量赋值需要c#7.0+。
注意:此示例使用从包管理器安装的 PDFSharp。 “安装包 PdfSharp -版本 1.50.5147”
注意:对于我的要求,我只需要搜索我的 PDF 的第一页,如果 需要。
using (PdfDocument inputDocument = PdfReader.Open(filePath, PdfDocumentOpenMode.Import))
{
if (searchPDFPage(ContentReader.ReadContent(inputDocument.Pages[0]), searchText))
{
// match found.
}
}
此代码查找以井号开头的 cString,OP 需要使用包含字符串函数。
private bool searchPDFPage(CObject cObject, string searchText)
{
if (cObject is COperator cOperator)
{
if (cOperator.OpCode.Name == OpCodeName.Tj.ToString() ||
cOperator.OpCode.Name == OpCodeName.TJ.ToString())
{
foreach (var cOperand in cOperator.Operands)
{
if (searchPDFPage(cOperand, searchText))
{
return true;
}
}
}
}
else if (cObject is CSequence cSequence)
{
foreach (var element in cSequence)
{
if (searchPDFPage(element, searchText))
{
return true;
}
}
}
else if (cObject is CString cString)
{
if (cString.Value.StartsWith("#"))
{
if (cString.Value.Substring(2) == searchText)
{
return true;
}
}
}
return false;
}
信用:这个例子是根据这个答案修改的: C# Extract text from PDF using PdfSharp