3

这是我以表格格式显示的数据。我想在不使用 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可以吗?

请帮我一些代码,我已经用谷歌搜索了几天但一无所获。

4

5 回答 5

1

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

您可以在 Action 的 String 变量中模拟您在 JSP 页面上拥有的表格,比如说CreatePDFAction

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

在 Struts.xml 中,将 result 声明CreatePDFActionstreamresult type,使用适当的contentType( application/pdf),以及contentDisposition指定文件名所需的内容,以及行为:下载它 ( attachment) 或在浏览器中打开它 ( inline)。

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

于 2012-12-05T18:04:36.680 回答
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> 
于 2012-12-19T12:36:29.820 回答
1

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

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

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

于 2012-12-05T07:17:32.987 回答
1
        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();
                        }
                }     
于 2012-12-06T14:11:50.693 回答
0

我不确定struts,我itextpdf在JSP中使用过。 http://tutorials.jenkov.com/java-itext/getting-started.html

希望它会有所帮助

于 2012-12-05T07:09:24.717 回答