1

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

我错过了什么吗?

4

2 回答 2

1

也许这个 SO 条目会对您有所帮助:PDFSharp alter Text repositioning。它链接到这里- PDFSharp 的文本提取示例。

于 2013-05-03T14:58:14.057 回答
0

老问题,但这是一个例子。

注意: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

于 2021-01-06T20:06:38.827 回答