微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Struts 2中动态创建PDF

如何解决在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 举报,一经查实,本站将立刻删除。