【问题标题】:Dynamically Creating PDF in Struts 2在 Struts 2 中动态创建 PDF
【发布时间】:2013-09-05 02:20:59
【问题描述】:

晚上好;

我正在处理 struts2 Web 应用程序时遇到问题。我正在使用数据库动态创建 PDF。我想在网页上展示它,但我不知道我是怎么做的,有人可以帮助我。

谢谢...

【问题讨论】:

  • Here 是使用 iText 和 HttpServletResponse OutputStream 的答案。

标签: struts2


【解决方案1】:

动作代码:

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 提供的流结果类型的更多信息。这个问题的答案很简单,但很难得到它。

【讨论】:

    【解决方案2】:

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

    Struts2 Custom Result Type

    【讨论】:

      【解决方案3】:
      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

      【讨论】:

        猜你喜欢
        • 2012-02-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-04
        • 1970-01-01
        • 2013-05-18
        • 1970-01-01
        • 1970-01-01
        • 2014-09-29
        相关资源
        最近更新 更多