问题描述
||
晚上好 ;
我在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