java - PDF阅读错误

标签 java itext

我遇到以下异常:

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;
}

注意:所有未在方法中声明的变量都被声明为实例字段,并在调用 read() 之前初始化。

最佳答案

您使用的类是在 iText 版本 2.1.4 中引入的,出现问题的方法 (computeAverageWidth()) 是在 iText 版本 2.1.5 中添加的。问题是,在该版本中还引入了一个错误 - 该方法的最后一行是:

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

2.1.6 之后的一个版本使用以下代码修复了该错误:

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

因此,如果您升级到 2.1.6/2.1.7 或自己修复该类,您将不会再遇到该问题...

关于java - PDF阅读错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17924635/

相关文章:

java - 使用iText java将字体设置为pdf中的段落

java - 如何正确合并文档?

java - 有没有办法在 eclipse 插件中包含常规的 Maven 依赖项

java - 尾递归 - Java

java - 难以理解 Java 的构造函数、setter 和 getter

c# - 我怎样才能得到这个 iTextSharp 图像到 "float right"?

asp.net - 使用 itext (itextsharp) 替换一个 PDF 模板页面上的多个不同图像

java - 如何使用java将多个多页tiff文件合并为单个pdf?

java - 在我的具体案例中 ORM 模型和 DAO

java - 使用泛型时遇到类型安全警告