2009-11-19 83 views
0

您好,我在解析PDF时遇到了问题,当迭代器到达页面11时抛出异常。java PdfTextExtractor.getTextFromPage(Unknown Source)

任何想法?由于

这里是我的代码:

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

没有回答,但似乎很多人有同样的问题,还有另一个相关的问题上左右。如果你有ArrayIndexOutOfBoundsException异常和getTextFromPage在谷歌搜索你看到同样的问题,但没有解决......

顺便说一句,你的循环将处理的最后一页的第一页之前停止使用索引1 ...

+0

感谢ü乌拉圭回合的反应获得的最后一个版本,虽然它不是我想要的:))我预计,这可能要解决的响应。干杯:) – Stephan 2009-11-19 09:39:40

0

你有没有试过IText邮件列表?

+0

不...我已经切换到PDFBox,它工作正常:) – Stephan 2009-11-24 09:48:23

1

由于信息,现在iText 5.0.6完美的更多的PDF版本,我测试了许多不同的程序生成的PDF和2.1.7有许多问题。

iText download

相关问题