当前位置: 首页 > 面试题库 >

使用docx4j进行docx比较时出现OutOfMemoryError

芮宇航
2023-03-14
问题内容

在我的应用程序中,我正在比较两个docx文件并创建一个html比较文件,当我尝试使用150行或170行以下的文件时,则没有问题,而我尝试比较的是200行或更多的大文件,那么时间显示

java.lang.OutOfMemoryError: Java heap space error,

有人可以帮忙吗?


问题答案:

由于没有使用Docx4jDriver类,因此内存不足,这使得diff问题更容易解决,方法是先执行段落级别的diff。

像这样使用它:

        Body newerBody = ((Document)newerPackage.getMainDocumentPart().getJaxbElement()).getBody();
        Body olderBody = ((Document)olderPackage.getMainDocumentPart().getJaxbElement()).getBody();

        // 2. Do the differencing
        java.io.StringWriter sw = new java.io.StringWriter();
        Docx4jDriver.diff( XmlUtils.marshaltoW3CDomDocument(newerBody).getDocumentElement(),
                        XmlUtils.marshaltoW3CDomDocument(olderBody).getDocumentElement(),
                           sw);

        // 3. Get the result
        String contentStr = sw.toString();
        System.out.println("Result: \n\n " + contentStr);
        Body newBody = (Body) org.docx4j.XmlUtils
                        .unmarshalString(contentStr);


 类似资料:
  • 我正在尝试将. docx文件转换为. pdf文件。现在我有以下代码: 以下是版本: 但是当我运行它时,我只得到一个空的pdf文件。我还得到以下堆栈跟踪: 我还应该做些什么?

  • 我需要生成一个DOCX从网页(与图像)。DOCX4J是否可以将HTML内容导出为DOCX格式? 还有其他库可以将HTML内容导出到DOCX吗?

  • 我正试图用Docx4J将一个DOCX文件转换为PDF,并收到两个不同文档的两个不同的异常。 1)对于文档1,第一个文档的org.docx4j.utils.singletRaversAlutilVisitorCallback.apply(SingletRaversAlutilVisitorCallback.java:27)中出现一个NullPointerException。 下面包含的代码是否是在P

  • 问题内容: 我正在开发需要检查作业截止日期的应用程序。我想知道到期日期是否在下个星期之内,然后再执行一项操作。 我可以找到的大多数文档都在Objective-C中,但我不知道如何在Swift中完成。谢谢您的帮助!! 问题答案: 我喜欢使用扩展使代码更具可读性。以下是一些NSDate扩展,它们可以帮助清理代码并使其易于理解。我把它放在一个sharedCode.swift文件中: 现在,如果您可以执行

  • 我明白为什么第三个和第四个输出打印真和假。这是因为返回一个对象,包装类缓存值在-128到127范围内的对象。如果向传递了该范围内的任何值,则它应该重用缓存中的对象。否则,它将创建一个新对象。 现在,为什么第二个输出打印出false?我以为返回一个原语,而不是像那样返回一个对象。

  • 我正在尝试使用docx4j API强制使用docx文件的权限。 文件有两个文档保护选项。