老问题,但这是一个例子。
注意:c# 7.0+ 需要使用 IS 新的局部变量赋值。
注意:此示例使用从包管理器安装的 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 需要使用 Contains 字符串函数。
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