如何解决在Struts 2中动态创建PDF
|| 晚上好 ; 我在struts2 Web应用程序上工作时遇到问题。我正在使用数据库动态创建PDF。我想在网页上显示它,但我不知道该怎么做,任何人都可以帮助我。 谢谢...解决方法
动作代码:
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提供的流结果类型的更多信息。答案很简单,但很难做到。
,您可以使用输入流来编写内容,或者最好的方法是创建自定义结果类型,在其中可以设置适当的标题,这是一些帮助的链接
Struts2自定义结果类型
,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。您可以将此脚本放入jsp,然后调用此jsp以显示生成的pdf
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。