html 转pdf 的操作流程以及遇到的坑

第一步:

  引入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 的规范性!

  1. html 的标签必须关闭,尤其是单标签,比如说<br/> <input/>等!
  2. 在转换pdf 时,js代码是无效的
  3. Css样式中 内外边距 margin padding  是无效的
  4. Html 代码中不要出现“自带对字体有修饰的标签”;比如说<h1>~<h6> <b></b> <form></form>标签
  5. Css在设置宽度的时候,不要超过pdf 设置的最大宽度

 

以上的错误都会使生成的pdf,出现空白页面!

  

   在pdf 中 ;通过css 样式的来显示居中 ,width 来控制宽度!字体需要加粗不要使用标题标签 font-weight 就可以!

   测试过程中主要一部分一部分的测试

 

第三步

   进行单元测试。测试时是需要做一步测一步不然你都不知道自己错误出现在哪了!

需要源代码的,请关注联系我!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值