Проблема с PdfTextExtractor в itext! - PullRequest
2 голосов
/ 14 сентября 2010

сначала простите за мой плохой английский! Я хочу найти в документе PDF для слова, как «Привет». Поэтому я должен прочитать каждую страницу в формате pdf от PdfTextExtractor. Я сделал это хорошо. Я могу прочитать все слова на каждой странице отдельно и сохранить их в строковом буфере. но когда я нажимаю этот код в цикле For (например, с 1 по 7 для поиска по нему), слова более ранней страницы останутся в строковом буфере. Надеюсь, вы понимаете мою проблему. Танкс всем. это мой код:

        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();

}

Ответы [ 3 ]

5 голосов
/ 19 октября 2010

SimpleTextExtractionStrategy, к сожалению, не позволяет вам сбросить его, поэтому вы должны переместить свой «новый SimpleTextExtractionStrategy ()» в цикл вместо повторного использования того же объекта.

2 голосов
/ 09 февраля 2011

В утверждении, управляющем вашим циклом, есть еще одна потенциальная проблема:

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

Если pagen = 1, цикл не выполняется вообще. Следует читать:

for (int i = 1; i <= pagen; i++)
0 голосов
/ 15 февраля 2011
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;
    }

Этот код очень полезен для чтения PDf с использованием itext

...