【发布时间】:2013-09-05 02:20:59
【问题描述】:
晚上好;
我正在处理 struts2 Web 应用程序时遇到问题。我正在使用数据库动态创建 PDF。我想在网页上展示它,但我不知道我是怎么做的,有人可以帮助我。
谢谢...
【问题讨论】:
-
Here 是使用 iText 和
HttpServletResponse OutputStream的答案。
标签: struts2
晚上好;
我正在处理 struts2 Web 应用程序时遇到问题。我正在使用数据库动态创建 PDF。我想在网页上展示它,但我不知道我是怎么做的,有人可以帮助我。
谢谢...
【问题讨论】:
HttpServletResponse OutputStream 的答案。
标签: struts2
动作代码:
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>
试试吧,它就像一个魅力,非常适合我。如果您有疑问,请阅读有关 Struts 2 提供的流结果类型的更多信息。这个问题的答案很简单,但很难得到它。
【讨论】:
您可以使用输入流编写内容,或者最好的方法是创建自定义结果类型,您可以在其中设置适当的标题和其他内容,这里是一些帮助的链接
【讨论】:
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
PdfWriter.getInstance(document, buffer);
document.open();
////Do your stuff here
document.close();
DataOutput dataOutput = new DataOutputStream(response.getOutputStream());
byte[] bytes = buffer.toByteArray();
response.setContentLength(bytes.length);
for(int i = 0; i < bytes.length; i++)
{
dataOutput.writeByte(bytes[i]);
}
我正在使用 iText 创建 pdf。你可以把这个scriptlet放在一个jsp中,调用这个jsp来显示生成的pdf
【讨论】: