第一步:
引入itextpdf.jar / xmlworker.jar
编写pdfUtils 类
方法一:generatorPdfFile()生成pdf方法,创建document对象,设置出生成pdf 的大小为a4纸大小,设置内容与页面的上下左右的内边距;创建pdfWrite对象,传参document,和生成出的pdf的存放地址;pdfWrite对象隐藏生成出来时的工具条 ;创建XMLWorkerFontProvider 对象,并且设置创建pdf 时要用到的字体。
获取XMLWorkerHelper 实例,调用parseXHtml()传入数据和模板,document pdfWriter对象 生成pdf.
方法二:添加水印方法,创建waterMarkConfig 对象,获取配置信息,主要包括水印的字体,透明度,倾斜度,水印的颜色,当然水印的添加是在文档生成之后调用的。添加完成的水印pdf输出到指定的位置
方法三 给生成好的pdf添加页码 ,创建pdfStamper 实例 通过getNumberOfPages()来读取pdf 的总页数。通过pdfStamper 实例的getOverContent() 方法得到pdf的最顶层,添加页码!
在获取html的字符串后,需要将input 中的value值展现出来,以及用户没有输入值的地方用下划线来代替;处理方式: 首先用Jsoup.parse() 来解析html文件内容中的字符串,解析成document对象,然后选择input标签 获取此元素对象,过滤此元素对象,进行处理value值,提取value 使用<a></a> 来进行展示。同时处理input 的value值为空的情况。
处理完成后,通过doc.html() 返回html字符串,但是返回的html 还是存在问题的,其中,单标签没有关闭,比如<input><br><meta> 需要进行进一步的处理,需要让标签完整。
第二部
·
Html 在生成pdf 时,需要注意html 的规范性!
- html 的标签必须关闭,尤其是单标签,比如说<br/> <input/>等!
- 在转换pdf 时,js代码是无效的
- Css样式中 内外边距 margin padding 是无效的
- Html 代码中不要出现“自带对字体有修饰的标签”;比如说<h1>~<h6> <b></b> <form></form>标签
- Css在设置宽度的时候,不要超过pdf 设置的最大宽度
以上的错误都会使生成的pdf,出现空白页面!
在pdf 中 ;通过css 样式的来显示居中 ,width 来控制宽度!字体需要加粗不要使用标题标签 font-weight 就可以!
测试过程中主要一部分一部分的测试
第三步
进行单元测试。测试时是需要做一步测一步不然你都不知道自己错误出现在哪了!
需要源代码的,请关注联系我!