关于通过iText通过HTML转成PDF导出的操作遇到一些问题的记录

最近做项目,有一个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:

下面再看一个资料:
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%;来控制。
但是这里还有一定局限性。
看下面一段代码:
ssss
 
xxx: xxx:
xxx签字:
单位(盖章):
序号 xx xx xx xx xx xx
1 一、课桌椅(单人套) xx xx xx xx
由于第一个table是标题备份我在style里直接写样式的时候,不起作用,所以,在这里控制列宽的时候最好是单独一个table

进行控制。不要在一个table里写其他的table,不然不会起作用。
最后还是一个参考资料:
http://wenku.baidu.com/link?url=GZ2vpvRHCyoLvy3OiMkQASvtFrxzFcvpu2Uk-pVsazFsYwx38b9YNNzUvbY5apqs6xV_YQV2E3y52tnjyigPhaCEm858aEr_Mq7lFXA5ADO

如果写的有什么不对的地方欢迎大家指正.

你可能感兴趣的:(web前端,Java和jsp)