itext 添加空格_itext7史上最全实战总结

本文是关于使用iText7创建PDF报告的全面实战总结,涵盖了配置、版本依赖、添加图片、空白页、Div、Paragraph、Table、换页、画图、Html转Pdf、监听事件和添加目录等关键操作。通过示例代码详细讲解每个步骤,适合有前端基础的开发者参考。
摘要由CSDN通过智能技术生成

1. itext7史上最全实战总结

1.1. 前言

最近有个需求需要我用Java手动写一份PDF报告,经过考察几种pdf开源代码,最终选取了itext7,此版本为7.1.11,由于发现网上关于该工具的博文比较少,特别是实战博文几乎没有,在我踩完各种坑,最终把PDF成型后,打算把经验分享出来,本文通过摘录解释来说明,内容来自本人GitHub itext-pdf

1.2. 配置文件

项目采用了Spring Cloud config所以配置在git上,仅仅研究itext7不需要用到数据库等功能,请直接运行PdfMain类的main方法,即可生成模拟的PDF报告

1.3. 版本POM

itext7相关pom

7.1.11

com.itextpdf

kernel

${itext.version}

com.itextpdf

io

${itext.version}

com.itextpdf

layout

${itext.version}

com.itextpdf

forms

${itext.version}

com.itextpdf

pdfa

${itext.version}

com.itextpdf

pdftest

${itext.version}

com.itextpdf

font-asian

${itext.version}

org.slf4j

slf4j-log4j12

1.7.18

com.itextpdf

html2pdf

3.0.0

1.4. 干货

itext7语义本身和前端css很像,所以有点前端基础还是比较容易掌握的

1.4.1. 添加图片

读取项目中图片文件

设置边距

设置宽高扩大缩小

Image indexImage = new Image(ImageDataFactory.create(GenoReportBuilder.class.getClassLoader().getResource("image/gene.png")));

indexImage.setMargins(-50, -60, -60, -60);

indexImage.scale(1, 1.05f);

1.4.2. 添加指定空白页

添加第2页为空白页,立即刷新后再继续添加

pdf.addNewPage(2).flush();

1.4.3. Div、Paragraph

Div div = new Div();

div.setWidth(UnitValue.createPercentValue(100));

div.setHeight(UnitValue.createPercentValue(100));

div.setHorizontalAlignment(HorizontalAlignment.CENTER);

Paragraph p1 = new Paragraph();

p1.setHorizontalAlignment(HorizontalAlignment.CENTER);

p1.setMaxWidth(UnitValue.createPercentValue(75));

p1.setMarginTop(180f);

p1.setCharacterSpacing(0.4f);

Style large = new Style();

large.setFontSize(22);

large.setFontColor(GenoColor.getThemeColor());

p1.add(new Text("尊敬的 ").addStyle(large));

...

Paragraph p2 = new Paragraph();

...

div.add(p1);

div.add(p2);

整块的内容用Div包裹,这里整块包裹的好处是什么?一方面排版分明成体系,另一方面若需求是整块的内容必须在同一个版面,你可以对Div设置div.setKeepTogether(true);,尽量保证若整块的内容超出了一页,那这块内容会自动整块出现在下一页,上一页剩下的就留白了

可以看到Div,Paragraph可以设置很多属性,实际上我们常用的组件除了这两种,还有Table,Cell,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值