晚安;
我有一个问题,我正在研究struts2 Web应用程序。我正在使用数据库动态创建PDF。我想在网页上显示它,但我不知道我是怎么做的,任何人都可以帮助我。
谢谢...
答案 0 :(得分:5)
行动代码:
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提供的有关流结果类型的更多信息。答案很简单但很难实现。
答案 1 :(得分:1)
您可以使用输入流编写内容,或者最好的方法是创建自定义结果类型,您可以在其中设置适当的标题和其他内容,这里是一些帮助链接
答案 2 :(得分:1)
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