ITextRenderer将多个页面导在一个pdf中

ITextRenderer将多个页面导在一个pdf中


需求

      需要将多个html页面导出合并到同一个pdf文件中。


解决

在网上百度查询资料,找到代码

renderer.setDocumentFromString(htmlStrList.get(i));
renderer.layout();
renderer.writeNextDocument(i);

使用

//加载中文字体
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver fontResolver = renderer.getFontResolver();
//simsun.ttc: 如果页面中包含中文,必须导入此字体文件,否则中文字体不显示
fontResolver.addFont(reportPath + FONT_PATH, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
renderer.setDocumentFromString(htmlStrList.get(0));
renderer.layout();
OutputStream os = new FileOutputStream(savePath + filePath);
renderer.createPDF(os,false);
for (int i = 1; i < htmlStrList.size(); i++) {
	renderer.setDocumentFromString(htmlStrList.get(i));
    renderer.layout();
    renderer.writeNextDocument(i);
}
renderer.finishPDF();

说明

  1. htmlStrList是导出的网页页面内容字符串列表,一个网页内容是其中的一项。  页面内容使用Htmlutil导出  
  2. renderer.createPDF(os,false);false代表finish-false,默认是true,如果不输入,后面renderer.writeNextDocument(i);会报错:“document没打开”。
  3. renderer.createPDF(os,false);必须在renderer.writeNextDocument(i);前面,不然会空指针错误。我一开始就是放前面,导致报错。
          点进入查看源码,发现writeNextDocument()方法中有一个变量_writer,这个变量是在createPDF()中实例化的。

参考:
https://www.codota.com/code/java/classes/org.xhtmlrenderer.pdf.ITextRenderer

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值