java - 无法处理大型 PDF 文件

标签 java itext heap-memory ioexception

我有大小为 160MB 的 jave 文件。

当我尝试在 PdfReader(Itext 库)中加载它时,它会引发以下错误:

java.io.IOException: Not enough storage is available to process this command

我使用的是 Java 1.5 版(32 位)。

代码:

PdfReader pdfReader = null;
    try{
            pdfReader = new PdfReader("D://bigfile.pdf");

            //also try using  pdfReader = new PdfReader(new RandomAccessFileOrArray("D://bigfile.pdf"),null);
    }catch(Exception e){
            System.out.println("Error");
            e.printStackTrace();
    }

我设置了以下堆大小参数:

-Xms1000m -Xmx1500m -XX:MaxPermSize=512m

在 PdfReader 中加载文件之前,我得到了以下堆统计信息:

##### Heap utilization statistics [MB] #####
Used Memory:70
Free Memory:921
Total Memory:992
Max Memory:1016**

最佳答案

我正在回答我自己的问题,所以它可以对其他人有所帮助。

我已经使用下面的代码解决了问题(using Document.plainRandomAccess=true;):

PdfReader pdfReader = null;
    try{
            Document.plainRandomAccess=true;
            pdfReader = new PdfReader(new RandomAccessFileOrArray("D://bigfile.pdf"),null);
    }catch(Exception e){
            System.out.println("Error");
            e.printStackTrace();
    }

关于java - 无法处理大型 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29005446/

相关文章:

java - Java Collection.frequency 的 C++ 等价物?

java - 多次调用自定义 ListView 适配器 getView 方法,并且顺序不一致

c# - 如何使用iText7获取PDF的书签页码

java - 使用 ITEXT 在 PDF 中显示页码

java - 使用 JVisualVM 从 Java 中的远程应用程序获取堆转储

server - 分析 Java 8 Release 144 中的堆使用情况 - 功能已删除?那么如何分析堆呢?

java - 在java中将本地时区转换为GMT

html - 使用 itextsharp 将文本放在图像 html 到 pdf 旁边

java - 查找 Java 应用程序的内存需求

java - JPA @repository @Query 可以处理空实体吗?