如何在java struts2中将jsp上显示的表导出为pdf
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在java struts2中将jsp上显示的表导出为pdf相关的知识,希望对你有一定的参考价值。
这是我以表格格式显示的数据。我想在不使用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可以吗?
请帮我一些代码我用谷歌搜索了几天但什么都没得到。
使用jsp上的显示表将更容易将其转换为* pdf以及.csv,.excel和son on,这是示例代码;
<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>
据我所知,不幸的是javascript无法自己创建pdf文件。我还没有使用struts。但我建议你使用Displaytag库这是非常容易使用的:)
这是您特别需要的(使用代码):http://displaytag.sourceforge.net/10/export.html
文档(从头到尾):http://displaytag.sourceforge.net/10/displaytag.pdf
要从Java中的PDF
源生成html
,您可以使用iText's HTMLWorker
模块(现已弃用,新项目是XMLWorker,但这取决于您正在使用的iText版本)。
您可以在Action的String变量中模拟JSP页面上的表,假设CreatePDFAction
;
然后,从JSP中,使用提交按钮调用CreatePDFAction
(如果需要,可以在新页面上打开pdf)。
在Struts.xml中,将CreatePDFAction
结果声明为stream
result type,使用适当的contentType
(application/pdf
),并使用所需的contentDisposition
来指定文件名和行为:下载它(attachment
)或在浏览器中打开它(inline
)。
在CreatePDFAction
操作中,您将收到String,实例化一个新文档和一个新的HTMLWorker,使用包含HTML的字符串提供它,然后从生成的PDF中提取字节并将其放入通过操作通过getter公开的InputStream中。
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();
}
}
我不确定struts,我在JSP中使用了itextpdf
。 http://tutorials.jenkov.com/java-itext/getting-started.html
希望它会有所帮助
以上是关于如何在java struts2中将jsp上显示的表导出为pdf的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Struts 2 中将数据库记录列表(通过 Hibernate 检索)显示到 JSP 页面?
刚開始学习的人非常有用:struts2中将jsp数据传到action的几种方式