Generowanie PDF przy użyciu iText w Struts-2: strumień wyników typu nie działa
Moim wymaganiem jest wygenerowanie pliku PDF za pomocą iText, używam poniższego kodu do utworzenia przykładowego pliku 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();
Jeśli widzisz w powyższym kodzie, iText nie używa żadnego parametru inputStream, ale zapisuje bezpośrednio do wyjściowego strumienia odpowiedzi. Natomiast struts-2 nakazuje nam użycie parametru InputStream (patrz konfiguracja poniżej)
<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>
Wiem, że moja klasa powinna mieć gettery i settery dla inputStream i mam to również w klasie wymienionej w struts-configuration
private InputStream inputStream;
public InputStream getInputStream() {
return inputStream;
}
public void setInputStream(InputStream inputStream) {
this.inputStream = inputStream;
}
Ale ponieważ iText naprawdę nie potrzebuje strumienia wejściowego, a pisze bezpośrednio do strumienia wyjściowego odpowiedzi, otrzymuję wyjątki, ponieważ nie ustawiam niczego dla parametru inputStream.
Daj mi znać, jak używać kodu iText w struts-2, mając jako wynik resultType
Dzięki