在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