在itext中使用PdfTextExtractor的问题!

首先请原谅我的英语不好! 我想在pdf文档中搜索“Hello”这样的单词。 所以我必须通过PdfTextExtractor阅读pdf中的每一页。 我做得很好。 我可以分别读取每个页面中的所有单词,并将其保存在字符串缓冲区中。 但是当我在For循环中推送此代码时(例如从第1页到第7页进行搜索),前一页的单词将保留在字符串缓冲区中。我跳了解你的问题。 Tanx全部。 这是我的代码:

PdfReader reader2 = new PdfReader(openFileDialog1.FileName); int pagen = reader2.NumberOfPages; reader2.Close(); ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy(); for (int i = 1; i < pagen; i++) { textBox1.Text = ""; PdfReader reader = new PdfReader(openFileDialog1.FileName); String s = PdfTextExtractor.GetTextFromPage(reader, i, its); //MessageBox.Show(s.Length.ToString()); //PdfTextArray h = new PdfTextArray(s); // // s = ""; s = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(s))); textBox1.Text = s; reader.Close(); 

}

SimpleTextExtractionStrategy不允许您重置它,因此您必须在循环内移动“new SimpleTextExtractionStrategy()”而不是重用相同的对象。

控制循环的语句中还有另一个潜在问题:

 for (int i = 1; i < pagen; i++) 

如果pagen = 1,则根本不执行循环。 它应该是:

 for (int i = 1; i <= pagen; i++) 
 public string ReadPdfFile(object Filename,DataTable ReadLibray) { PdfReader reader2 = new PdfReader((string)Filename); string strText = string.Empty; for (int page = 1; page <= reader2.NumberOfPages; page++) { ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy(); PdfReader reader = new PdfReader((string)Filename); String s = PdfTextExtractor.GetTextFromPage(reader, page, its); s = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(s))); strText = strText + s; reader.Close(); } return strText; } 

这段代码非常有用,可以使用itext读取PDf