私の要件は、iTextを使用してPDFファイルを生成することです。以下のコードを使用して、サンプル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パラメーターを使用しておらず、応答のoutputstreamに直接書き込んでいます。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を必要とせず、応答のoutputstreamに直接書き込んでいるため、inputStreamパラメーターに何も設定していないため、例外が発生します。
resultTypeをストリームとして持つstruts-2でiTextコードを使用する方法を教えてください
ありがとう