使用PDFSharp在PDF中查找单词

时间:2013-05-03 14:48:22

标签: c# pdf pdfsharp

我正在使用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", "");
    }

我错过了什么吗?

2 个答案:

答案 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