Преобразование DOCX в PDF в Alfresco - ограничение размера - PullRequest
0 голосов
/ 10 января 2020

Я написал собственный планировщик 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.

Есть идеи, в чем может быть проблема?

Заранее спасибо.

1 Ответ

0 голосов
/ 06 марта 2020

Попробуйте увеличить память стека. Например: -Xss4m.

...