2013-07-29 201 views
1

我得到以下異常:PDF閱讀錯誤

java.lang.ArithmeticException:/by zero 
    at com.lowagie.text.pdf.CMapAwareDocumentFont.computeAverageWidth(Unknown Source) 
    at com.lowagie.text.pdf.CMapAwareDocumentFont.<init>(Unknown Source) 
    at com.lowagie.text.pdf.parser.PdfContentStreamProcessor$SetTextFont.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 com.mycompany.reader.PDFReader.read(PDFReader.java:258) 
    at com.mycompany.reader.AbstractReader.run(AbstractReader.java:205) 
    at java.lang.Thread.run(Unknown Source) 

是否有人可以幫助我在此?我在Windows7上使用iText-2.1.5.jar和JDK7u25。我想附上PDF,但我不知道如何附加文件。不僅如此,這是客戶端PDF,所以我很抱歉,我不能在這裏分享。

下面是我的閱讀代碼:

public StringBuffer read() throws Exception { 
    StringBuffer result = new StringBuffer(); 
    PdfTextExtractor parser = new PdfTextExtractor(pdfReader); 

    int pageNumber = 0; 
    for(;index<totalPages;index++) { 
     try { 
      pageNumber = Integer.parseInt((String)pageNumberList.get(index)); 
      result.append(parser.getTextFromPage(pageNumber)); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      error("read", "Problem reading page number: " + pageNumber + " Reason: " + e.getMessage()); 
     } 
    } 

    return result; 
} 

注:未在方法聲明的所有變量聲明爲它被初始化之前閱讀()被調用的實例字段。

+1

您可以發佈您在文件中讀取的Java代碼嗎? – Loki

+2

這是一個很久以前已經修復的已知錯誤。 iText 2.1.5的日期從2009年3月開始;今天我們是2013年7月。升級和你的問題將消失。請閱讀http://lowagie.com/itext2 –

+0

感謝您的快速回復。我通過發佈閱讀代碼更新了上述問題。這可以用我目前使用的iText版本修復嗎? – ParagJ

回答

0

您正在使用的類是在iText 2.1.4版中引入的,在iText 2.1.5版中添加了發生問題的方法(computeAverageWidth())。問題是,在該版本也是一個錯誤已經出臺 - 該方法的最後一行是:

private int computeAverageWidth(){ 
... 
return total/count; 
} 

一個版本後來在2.1.6這個缺陷被修復用下面的代碼:

private int computeAverageWidth(){ 
... 
return count != 0 ? total/count : 0; 
} 

因此,如果您自己升級到2.1.6/2.1.7或自行修復該類,則不會再遇到該問題...

+0

感謝您指向特定版本。 :) – ParagJ