0

我在尝试着:

  1. 使用带有“MergeFields”的word文档来填充数据
  2. 使用java转换为PDF文档

我以前有过这个工作,现在突然出现以下错误:

java.lang.NoSuchMethodError:org.apache.poi.xwpf.usermodel.XWPFHyperlinkRun。

当我将 .war 文件放在 Amazon EC2 服务器上时会发生这种情况。(所有其他库工作正常)

以下是我使用的库:

fr.opensagres.xdocreport.converter.odt.odfdom (v 1.0.4)

fr.opensagres.xdocreport.template.freemarker (v 1.0.4)

org.apache.poi.xwpf.converter.core (1.0.5)

org.apache.poi.xwpf.converter.pdf (1.0.5)

org.apache.poi.xwpf.converter.xhtml (1.0.5)

org.apache.poi (3.11)

我的图书馆有什么问题吗?或者这只是一个服务器部署问题?

非常感谢您的帮助。

下面是我的代码:

 public byte[] wordToPdf(RequestHelper reqHelper, Map<String, Object> values, String docPath) throws IOException, XDocReportException, ServiceUnavailableException, E24Exception {
        try {
            ServletContext ctx = reqHelper.getRequest().getServletContext();
            InputStream tpl = new BufferedInputStream(ctx.getResourceAsStream(docPath));
            IXDocReport report = XDocReportRegistry.getRegistry().loadReport(tpl, TemplateEngineKind.Velocity);
            Options options = Options.getTo(ConverterTypeTo.PDF).via(ConverterTypeVia.XWPF);
            ByteArrayOutputStream pdfOut = new ByteArrayOutputStream();
            report.convert(report.createContext(values), options, pdfOut);
            byte[] pdfImage = pdfOut.toByteArray();
            return pdfImage;
        }
        catch (FileNotFoundException ex) {
        }
        return null;
    }
4

1 回答 1

0

好的,我终于找到了一个对我有用的解决方案,因为这篇文章有很多观点而没有答案,我会为有需要的人自己回答!

我将所有与“apache.poi”有关的库的版本更改为 1.0.4 版本

之后我使用 org.apache.poi 版本 3.9 而不是 3.11

所以最后,把它包起来......这就是我最后使用的

org.apache.poi.xwpf.converter.core (1.0.4)

org.apache.poi.xwpf.converter.pdf (1.0.4)

org.apache.poi.xwpf.converter.xhtml (1.0.4)

org.apache.poi (3.9)

/马库斯

于 2017-02-23T09:20:04.783 回答