使用iTextSharp在PDF中搜索特定单词

本文关键字:单词 搜索 iTextSharp PDF 使用 | 更新日期: 2023-09-27 18:21:04

我的系统驱动器中有一个PDF文件。我想用C#编写一个程序,使用iTextSharp在PDF中搜索特定的单词。

说我想搜索";StackOverFlow":如果PDF包含Word";StackOverFlow";,它应该返回true,否则应该返回false。

到目前为止,我尝试过的是:

public string ReadPdfFile(string fileName)
{
    StringBuilder text = new StringBuilder();
    if (File.Exists(fileName))
    {
        PdfReader pdfReader = new PdfReader(fileName);
        for (int page = 1; page <= pdfReader.NumberOfPages; page++)
        {
            ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
            string currentText = "2154/MUM/2012 A";// PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);
            currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
            text.Append(currentText);
        }
        pdfReader.Close();
    }
    return text.ToString();
}

使用iTextSharp在PDF中搜索特定单词

以下方法运行良好。它给出了文本所在页面的列表。

public List<int> ReadPdfFile(string fileName, String searthText)
{
    List<int> pages = new List<int>();
    if (File.Exists(fileName))
    {
        PdfReader pdfReader = new PdfReader(fileName);
        for (int page = 1; page <= pdfReader.NumberOfPages; page++)
        {
            ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
            string currentPageText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);
            if (currentPageText.Contains(searthText))
            {
                pages.Add(page);
            }
        }
        pdfReader.Close();
    }
    return pages;
}