Action Code:
public class PDFAction extends ActionSupport { private InputStream inputStream; public String getPDF(){ ByteArrayOutputStream buffer = new ByteArrayOutputStream(); PdfWriter.getInstance(document, buffer); document.open(); Paragraph p = new Paragraph(); p.add("INSTITUTO POLITÉCNICO NACIONAL, ESCUELA SUPERIOR DE CÓMPUTO, DIEGO A. RAMOS"); document.add(p); document.close(); inputStream = new ByteArrayInputStream(buffer.toByteArray()); return SUCCESS; } public InputStream getInputStream() { return inputStream; } public void setInputStream(InputStream inputStream) { this.inputStream = inputStream; } }
Struts.xml:
<action name="getPDF" class="action.PDFAction" method="getPDF"> <result name="success" type="stream"> <param name="inputName">inputStream</param> <param name="contentType">application/pdf</param> <param name="contentDisposition">filename="mypdf.pdf"</param> <param name="bufferSize">2048</param> </result> </action>
Try it, it works like a charm, works great for me. If in doubt, read more about the type of stream result that Struts provides 2. The answer to this question is so simple, but it was hard to get to it.
source share