0

ファイルからドキュメントxdocreportを生成するために使用しています。実装に使用します。私はこれに従ったhttps://github.com/opensagres/xdocreport/wiki/DocxReportingStruts2pdf*.docxstruts2

私はそれを正しく動作させています.Javaからのすべてのものを生成してファイルにpdf記入します.docx

私の問題は、サイクルが完了すると、生成されたファイルがダウンロードのためにユーザーに直接スローされることです。xdocreportがすべてを生成すると、ユーザーのブラウザはダウンロードを開始します。

代わりに、生成pdfされたものをWebアプリ[または同じドライブの別のフォルダー]ディレクトリに保存し、そこからユーザーにダウンロードするかどうかを尋ね、[はい]をクリックした場合はダウンロードしますそれ。また、生成されたドキュメントのバックアップを作成する必要があるpdfため、最初に生成して Web アプリ [または同じドライブの別のフォルダー]フォルダーに保存し、その後ユーザーに渡す必要があります。

どうすればその動作を変更できますか?

EDIT1 [以下の回答に基づく]:

したがって、この例外がスローされますが、スローされても、変換された 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)
4

1 に答える 1

1

リンク先のページでわかるように、param download を 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>

ファイルをWebアプリフォルダーに保存するには、できると思います

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
}

}

単なる仮定であり、テストされていません。

于 2016-08-03T12:48:15.330 に答える