关于通过iText通过HTML转成PDF导出的操作遇到一些问题的记录
来源:互联网 发布:mac os 未能验证更新 编辑:程序博客网 时间:2024/06/05 09:13
最近做项目,有一个pdf导出的操作,是通过html转成pdf做的导出,遇到的一些问题分享出来,希望大家以后做导出pdf的时候注意:
第一:html导出为pdf是通过XMLWorkerHelper.getInstance().parseXHtml(pdfwriter, document, new StringReader(html));这个方法导出的,但是XMLWorkerHelper并不支持所有的css属性,具体支持的属性的参看:
http://demo.itextsupport.com/xmlworker/itextdoc/CSS-conformance-list.htm
第二:用html作为模版导出的时候,会出现一行分两页的情况(就是在一页底部显示不全一行会继续显示到下一页),出现这种情况,最好的办法还是通过java 代码画出表格进行导出。我试验了freemarker做导出效果还是不理想。
第三:关于控制导出表格列的宽度的设置的说明:
先说参考资料:
http://www.it610.com/article/98479.htm
说的是这样:
【
2. 如何设置table的列宽
不要在td的width或者style属性上白费力气了,要想设置table的列宽,正确的做法是指定table的2个非html标准属性columns和widths:
<table border="0" width="100%" columns="3" widths="50;10;40">
】
下面再看一个资料:
http://unmi.cc/itext-htmlworker-html2pdf-table-cellwidth/
这个说明iText5.0.4还是不支持控制列的宽度的,只能通过修改源码来实现
再看一个资料
http://unmi.cc/itext5-0-6-htmlworker-html-pdf-support-cell-width/
到了iText5.0.6就支持控制列宽了,直接通过width:xx%;来控制。
但是这里还有一定局限性。
看下面一段代码:
<pre name="code" class="html"><style > body{font-family:宋体;} table{border-collapse:collapse;border-spacing:0;border:0;border-style:solid;} tbody td{border-style:solid;border-right-width:.5pt solid #000;border-bottom-width:.5pt solid #000;text-align: center;font-size:7pt;} .leftTd{border-left-width-width:.5pt solid #000;} .topTd{border-top-width-width:.5pt solid #000;} #myTable .widthCss1{width:5%;} #myTable .widthCss2{width:25%;} #myTable .widthCss3{width:15%;} #myTable .widthCss4{width:15%;} #myTable .widthCss5{width:15%;} #myTable .widthCss6{width:25%;}</style>
<table width="100%" > <tr > <td colspan="7" height=72 style='height:54.0pt;width:100%;text-align:center;'>ssss</td> </tr> <tr> <td colspan="7" height=58 style='height:43.5pt;width:692pt'> <table style="width:100%;font-size:14px;font-weight: bold;"> <tr><td colspan="6"> </td></tr> <tr> <td style="text-align:left;width:15%;">xxx:</td> <td style="text-align:left;width:15%;"></td>
<td style="text-align:left;width:15%;">xxx:</td><td style="text-align:left;width:15%;">
</td><td style="text-align:left;width:18%;">xxx签字:</td><td style="text-align:left;width:20%;"></td> </tr> <tr> <td colspan="6" style="text-align:left;height:40px; ">单位(盖章):</td> </tr> </table> </td> </tr></table><table width="100%" id="myTable" ><tbody> <tr> <td style='border-left-width-width:.5pt solid #000;border-top-width-width:.5pt solid #000;height:21.0pt;width:5%;'>序号</td> <td style='border-left-width:none;border-top-width-width:.5pt solid #000;width:10%;' >xx</td> <td style='border-left-width:none;border-top-width-width:.5pt solid #000;width:15%;' >xx</td> <td style='border-left-width:none;border-top-width-width:.5pt solid #000;width:15%;' >xx</td> <td style='border-left-width:none;border-top-width-width:.5pt solid #000;width:15%;' >xx</td> <td style='border-left-width:none;border-top-width-width:.5pt solid #000;width:15%;' >xx</td> <td style='border-left-width:none;border-top-width-width:.5pt solid #000;width:25%;' >xx</td> </tr> <tr> <td height=28 style='border-top-width:none;height:21.0pt;' class="leftTd widthCss1">1</td> <td colspan=2 style='border-left-width:none;border-top-width-width:none;' class="widthCss2">一、课桌椅(单人套)</td> <td style='border-left-width:none;border-top-width-width:none;' class="widthCss3">xx</td> <td style='border-left-width:none;border-top-width-width:none;' class="widthCss4">xx</td> <td style='border-left-width:none;border-top-width-width:none;' class="widthCss5">xx</td> <td style='border-left-width:none;border-top-width-width:none;' class="widthCss6">xx</td> </tr></tbody></table>由于第一个table是标题备份我在style里直接写样式的时候,不起作用,所以,在这里控制列宽的时候最好是单独一个table
进行控制。不要在一个table里写其他的table,不然不会起作用。
最后还是一个参考资料:
http://wenku.baidu.com/link?url=GZ2vpvRHCyoLvy3OiMkQASvtFrxzFcvpu2Uk-pVsazFsYwx38b9YNNzUvbY5apqs6xV_YQV2E3y52tnjyigPhaCEm858aEr_Mq7lFXA5ADO
如果写的有什么不对的地方欢迎大家指正,联系我QQ:499820228
1 0
- 关于通过iText通过HTML转成PDF导出的操作遇到一些问题的记录
- 通过iText将html转换成pdf中文乱码问题
- Java通过IText导出word和pdf
- itext 将html转成pdf
- 关于省市区excel表格通过mongodb转成json的操作
- 利用itext导出HTML到PDF,解决中文不显示和中文不换行的问题
- 通过iText合并pdf
- 安卓通过itext创建包含中文的pdf出错
- 关于使用itext导出PDF的具体实践
- 关于WDCP遇到的一些问题记录!
- Itext导出PDF,linux下字体 不能显示的问题
- java 通过itext 创建pdf 添加,插入 表格,html格式
- 使用iText把html转成pdf
- iText的一些问题
- 通过Itext生成PDF实例-操作超全
- 对itext导出PDF的一些小总结,以及ireport中生成中文PDF
- 通过IIS发布网站遇到的一些问题整理
- 通过源码安装部署keystone环境遇到的一些问题
- hdu1285 确定比赛名次
- PowerBuilder怎么创建数据窗口
- #include <vector> 的用法
- java.lang.instrument 学习(一)
- flexbox布局兼容性写法
- 关于通过iText通过HTML转成PDF导出的操作遇到一些问题的记录
- 【递推】【vijos1060】盒子
- Darwin Streaming Server 安装流程
- mac class文件反编译jdgui
- 怎么在js中取java变量的值
- 使用ProcessBuilder创建process时,BufferedReader.readLine()超时
- EventBus简单使用
- 彻底明白Android中AIDL及其使用
- 230 - Borrowers