Sum*_*h S 2 java ubuntu docx4j
我正在我的软件中使用 docx4j 将 docx 文件转换为 html。我正在基于 Windows 的系统中进行开发,我的产品是 AWS 中的 Ubuntu Linux 14.04。在 Windows 中一切正常,但是当涉及到 Ubuntu 时,它向我抛出一个异常,如下所示。
\n\n\n\n\n2015-11-19 07:33:36 错误 AbstractExporter:108 - 导出\n 包 java.lang.NullPointerException 时出现异常,位于\n org.docx4j.openpackaging.parts.WordprocessingML.ObfuscatedFontPart.deleteEmbeddedFontTempFiles(ObfuscatedFontPart.java:263)\n在\n org.docx4j.openpackaging.parts.WordprocessingML.FontTablePart.deleteEmbeddedFontTempFiles(FontTablePart.java:161)\n 在\n org.docx4j.convert.out.common.AbstractExporter.export(AbstractExporter.java:91)\n在 org.docx4j.Docx4J.toHTML(Docx4J.java:511) 在\n com.testbudha.document.impl.WordDocumentExtractor.toHtml(WordDocumentExtractor.java:31)\n 在\n com.testbudha.document.impl.DocXExtractor .getText(DocXExtractor.java:31)\n 位于\n com.testbudha.document.impl.DocumentServiceImpl.getFileText(DocumentServiceImpl.java:18)\n 位于\n com.testbudha.server.controller.StudentHomeController.getResumeText(StudentHomeController .java:120)
\n
我知道这是一个与字体相关的问题,我尝试安装
\n\n\n\n\nttf-mscorefonts-安装程序
\n
但它并没有改变任何东西我也尝试使用这个脚本安装vista字体。然后我也遇到了同样的异常
\n\n\n\nprotected String toHtml(WordprocessingMLPackage wordMLPackage, String path, HttpServletRequest request)\n throws Docx4JException {\n try {\n\n HTMLSettings htmlSettings = Docx4J.createHTMLSettings();\n htmlSettings.setImageDirPath(path + "/_files");\n htmlSettings.setImageTargetUri(request.getContextPath() + "/getfile/");\n htmlSettings.setWmlPackage(wordMLPackage);\n\n OutputStream os = new ByteArrayOutputStream();\n Docx4jProperties.setProperty("docx4j.Convert.Out.HTML.OutputMethodXML", true);\n Docx4J.toHTML(htmlSettings, os, Docx4J.FLAG_EXPORT_PREFER_XSL);\n String outputHtml = ((ByteArrayOutputStream) os).toString().replaceAll("\xc3\x82", "\\n").replaceAll(" \xc3\xa2\xe2\x82\xac\xe2\x80\x9c ", "-")\n .replaceAll("(?s)\xc3\xa2\xe2\x82\xac.\\\\s*", "").replaceAll("\\\\[(.*?)\\\\]","").replaceAll("#\\\\?", "")\n .replaceAll("\\\\s*(?i)HYPERLINK\\\\s\\\\S\\\\s*(\\"([^\\"]*\\")|\'[^\']*\'|([^\'\\">\\\\s]+))+\\"", "($1)")\n .replaceAll("(\\\\([^)]*\\\\))\\\\s?(\\\\w+)", "$2$1");\n return outputHtml;\n } finally {\n if (wordMLPackage.getMainDocumentPart().getFontTablePart() != null) {\n wordMLPackage.getMainDocumentPart().getFontTablePart().deleteEmbeddedFontTempFiles();\n }\n }\nRun Code Online (Sandbox Code Playgroud)\n\n它抛出异常
\n\nDocx4J.toHTML(htmlSettings, os, Docx4J.FLAG_EXPORT_PREFER_XSL);\nRun Code Online (Sandbox Code Playgroud)\n
tmpFontDir 似乎为 null,可能是因为 System.getProperty("user.home") 返回 null
因此,在添加到类路径的 Docx4j.properties 文件中设置属性“docx4j.openpackaging.parts.WordprocessingML.ObfuscatedFontPart.tmpFontDir”。
| 归档时间: |
|
| 查看次数: |
1471 次 |
| 最近记录: |