Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Itextsharp搜索PDF中的特定单词_C#_Pdf_Itextsharp - Fatal编程技术网

C# 使用Itextsharp搜索PDF中的特定单词

C# 使用Itextsharp搜索PDF中的特定单词,c#,pdf,itextsharp,C#,Pdf,Itextsharp,这是我在StackOverflow的第一篇文章 我的系统驱动器中有一个PDF文件。。。我想用C#编写一个程序,使用Itextsharp.dll引用来搜索该PDF中的特定单词。。。假设我想搜索“StackOverFlow”。。。 如果PDF包含单词“StackOverFlow”,则应返回true 否则它应该返回false 我看了很多文章,但到现在还没有找到答案 到目前为止,我所尝试的是: public string ReadPdfFile(string fileName) {

这是我在StackOverflow的第一篇文章

我的系统驱动器中有一个PDF文件。。。我想用C#编写一个程序,使用Itextsharp.dll引用来搜索该PDF中的特定单词。。。假设我想搜索“StackOverFlow”。。。 如果PDF包含单词“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();
        }
publicstringreadpdffile(字符串文件名)
{
StringBuilder text=新的StringBuilder();
if(File.Exists(fileName))
{
PdfReader PdfReader=新PdfReader(文件名);

对于(int page=1;page而言,以下方法效果良好。它给出了找到文本的页面列表

     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;
            }
public List ReadPdfFile(字符串文件名,字符串searthText)
{
列表页=新列表();
if(File.Exists(fileName))
{
PdfReader PdfReader=新PdfReader(文件名);

对于(int page=1;page,您有
PdfTextExtractor.GetTextFromPage(pdfReader,page,strategy)。
并且您有您搜索的字符串。您是否检查了您的搜索字符串是否在
GetTextFromPage
方法的结果中?如果不是,您是否检查了该方法的返回结果(毕竟是一个字符串)?我想你的文本参数有一个lisp;@Lalitya我需要在每次迭代中创建一个新的SimpleTextActionStrategy实例吗?@Lalitya我知道这是一个旧答案…但是…你也能找到文本位置(x和y)吗在页面上?@ToKa是的,你需要,我试过了,如果你重复使用
simpletextractionstrategy
,它会复制你循环通过的所有页面。