ITextRenderer将多个页面导在同一pdf分页处理


前言

遇到需求把多个fremaker模板导出到同一个pdf中,中间设置分页;

参考

ITextRenderer将多个页面导在一个pdf中_Kyle_Ping的博客-CSDN博客


一、处理页面内容

List<String> htmlStrList = new ArrayList<>();
			// 获取模板文件
			Template template = cfg.getTemplate(ScalePrintTempleEnum.getNameByValue(scaleid), "UTF-8");
			for (Map<String, Object> data : dataList) {
				StringWriter writer = new StringWriter();
				// 将数据输出到html中
				template.process(data, writer);
				writer.flush();
				String html = writer.toString();
				htmlStrList.add(html);
			}

二、处理分页和合并

	// 把html代码传入渲染器中
			renderer.setDocumentFromString(htmlStrList.get(0));

			// 设置模板中的图片路径 (这里的images在resources目录下) 模板中img标签src路径需要相对路径加图片名 如<img
			// src="images/xh.jpg"/>
			String url = PDFTemplateUtil.class.getClassLoader().getResource("images").toURI().toString();
			renderer.getSharedContext().setBaseURL(url);
			renderer.layout();

			renderer.createPDF(out, false);

			for (int i = 1; i < htmlStrList.size(); i++) {
				renderer.setDocumentFromString(htmlStrList.get(i));
				renderer.layout();
				renderer.writeNextDocument(i);
			}

			renderer.finishPDF();
			out.flush();
			return (ByteArrayOutputStream) out;

总结

我这里是同一个模板导出得,可以多个不同模板只需要多次把模板获取放在循环中处理。这个作为笔记记录问题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值