2009-11-19 78 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

相關問題