露天环境中DOCX到PDF的转换-大小限制

露天环境中DOCX到PDF的转换-大小限制,pdf,alfresco,transformation,docx,Pdf,Alfresco,Transformation,Docx,我已经编写了一个自定义的Alfresco调度程序来将DOCX文件转换为PDF。PS:Alfresco 5.2.3企业版 我注意到Alfresco的OOTB配置只允许那些DOCX文件转换为大小为768KB的PDF文件。768KB以上的DOCX文件不会转换为PDF,并且会在日志中引发异常 Caused by: java.lang.StackOverflowError at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(

我已经编写了一个自定义的Alfresco调度程序来将DOCX文件转换为PDF。PS:Alfresco 5.2.3企业版 我注意到Alfresco的OOTB配置只允许那些DOCX文件转换为大小为768KB的PDF文件。768KB以上的DOCX文件不会转换为PDF,并且会在日志中引发异常

 Caused by: java.lang.StackOverflowError
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:77)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:153)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:100)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:153)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:100)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:153)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:100)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:153)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:100)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:153)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:100)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:153)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:100)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:153)
为了克服这个问题,我尝试在alfresco global中设置以下属性,将限制增加到5MB

 content.transformer.JodConverter.extensions.docx.pdf.maxSourceSizeKBytes=5120
但是当我上传一个1.5MBdocx文件进行测试时,日志中会抛出以下异常

 Caused by: java.lang.StackOverflowError
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:77)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:153)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:100)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:153)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:100)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:153)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:100)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:153)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:100)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:153)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:100)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:153)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:100)
    at org.apache.pdfbox.util.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:153)
用于将文档转换为pdf的代码:

   String mimeType = contentService.getReader(doc, ContentModel.PROP_CONTENT).getMimetype().trim();
   ContentReader docReader = contentService.getReader(doc, ContentModel.PROP_CONTENT);

        String pdfName = nodeService.getProperty(doc, ContentModel.PROP_NAME).toString();

        String fileExtension = Files.getFileExtension(pdfName);

        pdfName = pdfName.replace(fileExtension, "pdf");

        String targetMimetype = "application/pdf";

        ContentWriter writer = contentService.getWriter(doc, ContentModel.PROP_CONTENT, true);
        writer.setMimetype(targetMimetype); // new mimetype
        writer.setEncoding(docReader.getEncoding()); // original encoding
        nodeService.setProperty(doc,ContentModel.PROP_NAME,pdfName);

        // Try and transform the content using the supplied delegate
        ContentTransformer pdfTransformer = contentService.getTransformer(mimeType, MimetypeMap.MIMETYPE_PDF);

        pdfTransformer.transform(docReader, writer);
此外,我还尝试在文件夹上配置OOTB规则,以将传入文件转换为PDF。因此,下面的属性已在alfresco global中配置

content.transformer.JodConverter.extensions.docx.pdf.maxSourceSizeKBytes=5120
现在,当我将一个1.5 MB的DOCX文件上传到那个文件夹时,该文件无法上传。我收到失败:504信息

你知道会有什么问题吗


提前感谢。

尝试增加堆栈内存。例如:
-Xss4m

环露天支架?这是为企业版付费的一部分!我非常怀疑仅仅改变尺寸限制会导致这种错误。人们总是习惯性地改变这个最大值。关于Java代码的问题:为什么要尝试将PDF写回原始节点?创建一个新的nodeRef并对其进行写入不是更好吗?实际上,Jeff,我们的要求是将原始文件转换为PDF,并用PDF替换原始文件。这就是我们之所以这么做的原因。你把这篇文章作为一个答案,还是仅仅是一个评论?这似乎不是一个答案。