作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 xdocreport
从 *.docx 生成
文件。我使用pdf
文档struts2
来实现。我关注了这个https://github.com/opensagres/xdocreport/wiki/DocxReportingStruts2
我确实让它工作正常,它确实生成了 pdf
并用所有内容填充了 docx
文件来自 java 。
我的问题是:一旦循环完成,它就会将生成的文件直接扔给用户下载。因此,一旦 xdocreport
生成所有内容,用户的浏览器将开始下载它。
相反,我希望将生成的 pdf
保存在网络应用程序[或同一驱动器的单独文件夹]目录中,然后从那里我想询问用户是否要下载它,如果他单击"is",则下载它。另外,我必须备份生成的 pdf
文档,因此我必须先以某种方式生成并将其保存在网络应用程序中[或同一驱动器中单独的文件夹]文件夹,然后将其提供给用户。
我怎样才能改变它的行为?
编辑1[基于以下答案]:
所以现在它抛出了这个异常,但即使它抛出了它,我可以看到浏览器上显示的转换后的pdf,但我无法打开在文件系统中生成的pdf文档本身。
* ERROR 2016-08-04 09:33:16,079 ExceptionConverter: org.eclipse.jetty.io.EofException (XWPF2PDFViaITextConverter.java [qtp559888791-19])
* ERROR 2016-08-04 09:33:16,096 Error while executing action (ExceptionInterceptor.java [qtp559888791-19])
fr.opensagres.xdocreport.converter.XDocConverterException: org.apache.poi.xwpf.converter.core.XWPFConverterException: ExceptionConverter: org.eclipse.jetty.io.EofException
at fr.opensagres.xdocreport.converter.docx.poi.itext.XWPF2PDFViaITextConverter.convert(XWPF2PDFViaITextConverter.java:72)
at fr.opensagres.xdocreport.document.AbstractXDocReport.convert(AbstractXDocReport.java:713)
at org.apache.struts2.views.xdocreport.AbstractXDocReportResult.doProcessReportWithConverter(AbstractXDocReportResult.java:561)
at org.apache.struts2.views.xdocreport.AbstractXDocReportResult.doExecute(AbstractXDocReportResult.java:284)
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:191)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:369)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:273)
最佳答案
正如您在提供链接的页面上看到的,您可以将参数下载设置为 false,这将禁用下载。
<action name="DisplayProject" class="example.DisplayProject">
<result name="success" type="xdocreport">
<param name="location">/docx/DocxProjectWithVelocityList.docx</param>
<param name="templateEngine">Velocity</param>
<param name="fieldAsList">developers.Name,developers.LastName</param>
<param name="download">false</param>
</result>
并将文件保存在网络应用程序文件夹中,我想你可以
public void populateContext(IXDocReport report, IContext context)
throws Exception {
context.put("project", getProject());
context.put("developers", getDevelopers());
try (FileOutputStream fOut = new FileOutputStream(servletContext.getRealPath("/") + "filename")) {
report.process(context, fOut);
} catch (Exception e) {
// Handle exception
}
}
只是假设,未经测试。
关于java - 如何将生成的pdf保存在Web应用程序目录[xdocreport]中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38735334/
我是一名优秀的程序员,十分优秀!