2009-11-19 3 views
0

Здравствуйте, у меня возникли проблемы с разбором PDF-документа, когда итератор достигает страницы 11, исключение - это throw.java PdfTextExtractor.getTextFromPage (Неизвестный источник)

Любые идеи? Благодаря

Вот мой код:

import java.io.*; 
import java.nio.charset.Charset; 
import java.util.regex.*; 
import com.lowagie.text.pdf.PdfReader; 
import com.lowagie.text.pdf.hyphenation.TernaryTree.Iterator; 
import com.lowagie.text.pdf.parser.PdfTextExtractor; 

public class PdfParser { 
    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     int index = 0; 
     try { 
      PdfReader readerN = new PdfReader("C:\\Documents and Settings\\stefan.stere\\hibernateWorkspace\\PdfParser\\src\\monitor3.pdf"); 
      OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(new File("C:\\Documents and Settings\\stefan.stere\\hibernateWorkspace\\PdfParser\\src\\pdf2txt.rtf")),"Cp1252"); 

      PdfTextExtractor parse = new PdfTextExtractor(readerN); 
      int nrPages = readerN.getNumberOfPages(); 

      for (int i=1; i<nrPages ; i++) { 
       index++; 
       String page = parse.getTextFromPage(i); 
       if(page != null){ 
        page = page.replace(new StringBuffer("null"), new StringBuffer("??")); 
        page = page.replaceAll("Comercial.", "Comerciala"); 
        page = page.replaceAll("ACT ADI..IONAL", "ACT ADITIONAL"); 
        page = page.replaceAll("HOT.R..E", "HOTARARE"); 
        page = page.replaceAll("HOT.R..EA", "HOTARAREA"); 
        page = page.replaceAll("HOT.R..I", "HOTARARI"); 
        page = page.replaceAll("..cheiat.", "incheiata"); 
        page = page.replaceAll("ANUN..", "ANUNT"); 
        out.write(page); 
        System.out.println(page); 
       } 
      } 
      out.close(); 
      readerN.close(); 
     } catch (Exception e) { 
      // TODO: handle exception 
      e.printStackTrace(); 
      System.out.println(index); 
     } 
    } 
} 

и стек исключение:

java.lang.ArrayIndexOutOfBoundsException: Invalid index: 62 
at com.lowagie.text.pdf.CMapAwareDocumentFont.decodeSingleCID(Unknown Source) 
at com.lowagie.text.pdf.CMapAwareDocumentFont.decode(Unknown Source) 
at com.lowagie.text.pdf.parser.PdfContentStreamProcessor.decode(Unknown Source) 
at com.lowagie.text.pdf.parser.PdfContentStreamProcessor.displayPdfString(Unknown Source) 
at com.lowagie.text.pdf.parser.PdfContentStreamProcessor$ShowTextArray.invoke(Unknown Source) 
at com.lowagie.text.pdf.parser.PdfContentStreamProcessor.invokeOperator(Unknown Source) 
at com.lowagie.text.pdf.parser.PdfContentStreamProcessor.processContent(Unknown Source) 
at com.lowagie.text.pdf.parser.PdfTextExtractor.getTextFromPage(Unknown Source) 
at PdfParser.main(PdfParser.java:32) 

ответ

1

нет ответа, но это, кажется, много людей имеют те же проблемы, что есть еще один связанный с этим вопрос о SO. И если вы будете искать с ArrayIndexOutOfBoundsException и getTextFromPage на Google вы видите ту же проблему, но не решение ...

Кстати, ваш цикл остановится перед обработкой последней страницы в качестве первой страницы имеет индекс 1 ...

+0

поблагодарить у ур ответа, хотя это не ответ я хотел :)) я ожидал, что это может быть решено. Cheers :) – Stephan

0

Вы пробовали список рассылки IText?

+0

нет ... я переключился на pdfBox, и он отлично работает :) – Stephan

1

В настоящее время iText 5.0.6 работает отлично с большим количеством версий PDF, я протестировал PDF, сгенерированный с помощью множества различных программ, и у 2.1.7 были проблемы на многих.

Получить последнюю версию из iText download

Смежные вопросы