我已经编写了一个自定义的Alfresco调度程序,可以将DOCX文件转换为PDF。 PS:Alfresco 5.2.3企业版我注意到Alfresco的OOTB配置仅允许将那些DOCX文件转换为大小为768 KB的PDF。 768 KB以上的DOCX文件不会转换为PDF,并且日志中会引发异常。
为了克服这个问题,我尝试在alfresco-global中设置以下属性以将限制增加到5 MB。
content.transformer.JodConverter.extensions.docx.pdf.maxSourceSizeKBytes=5120
但是当我通过上载1.5 MB DOCX文件进行测试时,日志中将引发以下异常。
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