在Struts 2中动态创建PDF

时间:2011-04-13 12:13:02

标签: struts2

晚安;

我有一个问题,我正在研究struts2 Web应用程序。我正在使用数据库动态创建PDF。我想在网页上显示它,但我不知道我是怎么做的,任何人都可以帮助我。

谢谢...

3 个答案:

答案 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)

您可以使用输入流编写内容,或者最好的方法是创建自定义结果类型,您可以在其中设置适当的标题和其他内容,这里是一些帮助链接

Struts2 Custom Result Type

答案 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

相关问题