Я использую xdocreport
для создания pdf
документа из *.docx
файлов. Я использую struts2
для реализации. Я следовал за этим https://github.com/opensagres/xdocreport/wiki/DocxReportingStruts2Как сохранить сгенерированный PDF-файл в каталоге веб-приложений [xdocreport]?
У меня есть это работает правильно, он делает генерировать pdf
и заполняет docx
файлы всем от Явы.
Моя проблема: после того, как цикл завершен, он выдает сгенерированный файл непосредственно пользователю для загрузки. Итак, как только xdocreport
генерирует все, браузер пользователя начнет его загружать.
Вместо этого я хочу генерируемый pdf
быть сохранены в веб-приложение [или в том же диске отдельную папку] каталог, а затем оттуда я хотел бы спросить пользователя, если он хочет, чтобы загрузить его или нет, если он нажимает «да», а затем загрузите его. Кроме того, я должен иметь резервную копию сгенерированного документа, поэтому мне нужно как-то сначала сгенерировать и сохранить его в веб-приложении [или в той же папке с отдельными дисками] и после этого предоставить его пользователю.
Как я могу изменить его поведение?
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)
Сохранение чего-либо в каталоге веб-приложений - ужасная идея. Если у вас заканчивается неиспользуемый файл WAR, нет каталога веб-приложений. Если вы должны сохранить на диск, вы должны использовать системное свойство java.io.tmpdir и убедиться, что оно правильно установлено в вашем развертывании. –
@JimGarrison, согласитесь. Я мог бы создать отдельную папку на одном диске, но вопрос остается тем же. Как можно изменить поведение «xdoxreport», чтобы сначала сохранить сгенерированный файл на стороне сервера? – Daler