Генерация PDF с использованием iText в Struts-2: поток типа результата не работает
Мое требование заключается в создании PDF-файла с помощью iText, я использую приведенный ниже код для создания образца PDF
Document document = new Document();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfWriter.getInstance(document, baos);
document.open();
document.add(new Paragraph("success PDF FROM STRUTS"));
document.close();
ServletOutputStream outputStream = response.getOutputStream() ;
baos.writeTo(outputStream);
response.setHeader("Content-Disposition", "attachment; filename=\"stuReport.pdf\"");
response.setContentType("application/pdf");
outputStream.flush();
outputStream.close();
Если вы видите в приведенном выше коде, iText не использует какой-либо параметр inputStream, скорее он пишет непосредственно в outputtream ответа. Принимая во внимание, что struts-2 обязывает нас использовать параметр InputStream (см. Конфигурацию ниже)
<action name="exportReport" class="com.export.ExportReportAction">
<result name="pdf" type="stream">
<param name="inputName">inputStream</param>
<param name="contentType">application/pdf</param>
<param name="contentDisposition">attachment;filename="sample.pdf"</param>
<param name="bufferSize">1024</param>
</result>
</action>
Я знаю, что мой класс должен иметь геттеры и сеттеры для inputStream, и у меня это тоже есть в классе, упомянутом в Struts-Configuration.
private InputStream inputStream;
public InputStream getInputStream() {
return inputStream;
}
public void setInputStream(InputStream inputStream) {
this.inputStream = inputStream;
}
Но поскольку iText действительно не нуждается во входном потоке, а пишет непосредственно в выходной поток ответа, я получаю исключения, поскольку для параметра inputStream ничего не задается.
Пожалуйста, дайте мне знать, как использовать код iText в Struts-2, имеющий resultType в качестве потока
Спасибо