【问题标题】:How to export table displayed on jsp to pdf in java strust2如何在java struts2中将jsp上显示的表格导出为pdf
【发布时间】:2012-11-22 22:54:57
【问题描述】:

这是我以表格格式显示的数据。我想在不使用 struts2 的显示标签库的情况下以 PDF 格式显示。

<table border="1" align="center" style="border-color: #CCCCCC; border-width: 1px; border-style: None; width: 1320px; border-collapse: collapse;" id="tablepaging">
    <tbody>
        <tr>
            <td>Leave ID</td>
            <td>FROM DATE</td>
            <td>TO DATE</td>
            <td>DAYS REQUESTED</td>
            <td>APPROVER</td>
            <td>NOTES</td>
            <td>REMARK</td>
            <td>IS PLANNED</td>
            <td>REASON</td>
        </tr>
        <tr>
            <td>270</td>
            <td>12/27/12</td>
            <td>12/29/12</td>
            <td>2</td>
            <td>Sagar</td>
            <td>s</td>
            <td>s</td>
            <td>true</td>
            <td>s</td>
            <td>
                <a href="/HRIS_Updated/cancelRequest.action;jsessionid=A2313340A50DD2DAB054714BF65AB08B?leaveId=270" id="submitinvoice;jsessionid=A2313340A50DD2DAB054714BF65AB08B_">Cancel</a>
            </td>
            <td>
                <a href="/HRIS_Updated/requestHistory.action;jsessionid=A2313340A50DD2DAB054714BF65AB08B?leaveId=270" id="submitinvoice;jsessionid=A2313340A50DD2DAB054714BF65AB08B_">History</a>
            </td>
        </tr>
    </tbody>
</table>

是否可以使用 javascript 或 jquery?

请帮我提供一些代码,我已经在 Google 上搜索了几天但一无所获。

【问题讨论】:

    标签: java javascript struts2 pdf-generation itext


    【解决方案1】:

    在 jsp 上使用显示表将其转换为 *pdf 以及 .csv、.excel 和儿子非常容易,这是示例代码;

    <display:table id="data" name="${questions}" requestURI="" pagesize="10" export="true" >
        <display:column property="label" title="Question" sortable="true"/>
        <display:column title="Graph Analysis"> <img src="${imagePath}${reportData.clientName}/${data.label}.png"/></display:column>
        <display:setProperty name="export.pdf" value="true" />
    </display:table> 
    

    【讨论】:

      【解决方案2】:

      据我所知,不幸的是,javascript 无法自行创建 pdf 文件。而且我还没有使用struts。但我推荐你使用非常容易使用的 Displaytag 库:)

      这是您特别需要的(使用代码):http://displaytag.sourceforge.net/10/export.html

      文档(从头到尾):http://displaytag.sourceforge.net/10/displaytag.pdf

      【讨论】:

        【解决方案3】:

        要在 Java 中从 HTML 源生成 PDF,您可以使用 iText's HTMLWorker 模块(现已弃用,新项目是 XMLWorker,但这取决于您使用的 iText 版本)。

        您可以在操作的字符串变量中模拟 JSP 页面上的表格,比如CreatePDFAction

        然后,从 JSP 中,使用提交按钮调用 CreatePDFAction(如果需要,可以在新页面上打开 pdf)。

        在 Struts.xml 中,将 CreatePDFAction 结果声明为 stream result type,并使用适当的 contentType (application/pdf) 和所需的 contentDisposition 指定文件名和行为:下载它 (@987654333 @) 或在浏览器中打开 (inline)。

        CreatePDFAction 操作中,您接收字符串,实例化一个新文档和一个新 HTMLWorker,将包含您的 HTML 的字符串提供给它,然后从生成的 PDF 中提取字节并将其放入通过行动的吸气剂。

        【讨论】:

        • 但是我们如何将 jsp 中的表格模拟为字符串。并感谢您提供的解决方案,将通过 Google 搜索以了解更多信息
        • 几乎每次我使用它时,用户都会在 WYSIWYG 编辑器(如 CKEditor 或 TinyMCE)中输入 HTML,然后使用 javascript 读取。在您的情况下,您可以使用 Java 函数重新创建您在 JSP 中编写的表,因为您知道该表的外观。或者您可以从 Java 生成一次表格,并将其用于 PDF 和 JSP,而不是在 JSP 中硬编码;您甚至可以使用 javascript 读取表格并将其重新创建为字符串参数以发送到操作,但这将是矫枉过正......等等根据您的需要找到您的方式:)
        • 非常感谢我使用 jquery 检索表结构和使用的 itext html 解析器和繁荣我生成了 pdf 非常感谢好友
        • @Andrea Ligios 不错的解决方案 Buddy 在网上搜索了很多,试图打印特定表格然后生成 pdf,但您的解决方案简单有效,继续指导像我们这样的初学者
        【解决方案4】:
                Finaly i got the solution here is the code
        
        
                  <script language="javascript" type="text/javascript">
                         function Retrivetable()
                        {
                        var table = document.getElementById("historyTable");
        
                        if (table) {
        
                          // If outerHTML property available, use it
                          if (typeof table.outerHTML == 'string') {
                            $('#settable').val(table.outerHTML)
                          // Otherwise, emualte it
                          } else {
                            var div = document.createElement('div');
                            div.appendChild(table.cloneNode(true));
                            $('#settable').val(div.innerHTML);
                          }
                        }
                        } 
                        </script>
        
            <s:submit
                    onclick="Retrivetable()"
                    value="Export to Pdf"  action="ExportToPdf" method="ExportPDF" align="bottom"/>
        
               In the action class  
        public String ExportPDF()
            {   
                    tablestruct = "<html><head></head><body>"+tablestruct+"</body></html>";
                            //System.out.println("After concat "+tablestruct);
                            try{
                                String filePath = ServletActionContext.getServletContext().getRealPath("/testpdf.pdf");
                                System.out.println(filePath);
                                Document document=new Document(PageSize.LETTER);
                                PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(filePath));
                                   document.open();
                                   HTMLWorker htmlWorker = new HTMLWorker(document);
                                   htmlWorker.parse(new StringReader(tablestruct));
                                    document.close();
                                    System.out.println("Done");
                                    File file = new File(filePath);
                                    inputStream = new DataInputStream( new FileInputStream(file));
                              }
                              catch (Exception e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                }
                        }     
        

        【讨论】:

          【解决方案5】:

          我不确定struts,我在JSP 中使用了itextpdfhttp://tutorials.jenkov.com/java-itext/getting-started.html

          希望对你有帮助

          【讨论】:

          • 安德鲁感谢您将 pdf 保存在本地驱动器上的回复。实际上我希望生成的 pdf 应该自动下载或者应该显示在浏览器上
          猜你喜欢
          • 1970-01-01
          • 2016-01-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-26
          相关资源
          最近更新 更多