Я написал собственный планировщик Alfresco для преобразования файлов DOCX в PDF. PS: Alfresco 5.2.3 Enterprise Edition Я заметил, что OOTB-конфигурация Alfresco позволяет преобразовывать в PDF только те файлы DOCX, размер которых составляет 768 КБ. Файлы DOCX размером более 768 КБ не преобразуются в PDF, и в журналах создается исключение.
Чтобы преодолеть это, я попытался установить следующее свойство в alfresco-global, чтобы увеличить ограничение до 5 МБ.
content.transformer.JodConverter.extensions.docx.pdf.maxSourceSizeKBytes=5120
Но когда я тестирую, загружая файл DOCX размером 1,5 МБ, в журналах появляются следующие исключения:
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
И теперь, когда я загружаю файл DOCX размером 1,5 МБ в эту папку, файл не может быть загружен. Я получаю сообщение об ошибке: 504.
Есть идеи, в чем может быть проблема?
Заранее спасибо.