文本记录Java使用iText7生成PDF
iText 7是iText强大的PDF工具包的最新版本,用于PDF生成,PDF编程,处理和操作,如数字签名等
官方文档:https://kb.itextpdf.com/home/it7kb/ebooks
简单生成PDF
官方文档:https://kb.itextpdf.com/home/it7kb/ebooks/itext-7-jump-start-tutorial-for-java
根据文档说明,我们引入依赖
<properties><!-- 省略其他部分...--><itext7.version>7.1.7</itext7.version></properties><dependencies><!-- 省略其他部分...--><!-- itextpdf --><dependency><groupId>com.itextpdf</groupId><artifactId>kernel</artifactId><version>${itext7.version}</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>io</artifactId><version>${itext7.version}</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>layout</artifactId><version>${itext7.version}</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>forms</artifactId><version>${itext7.version}</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>pdfa</artifactId><version>${itext7.version}</version></dependency></dependencies>
代码
<properties><!-- 省略其他部分...--><itext7.version>7.1.7</itext7.version></properties><dependencies><!-- 省略其他部分...--><!-- itextpdf --><dependency><groupId>com.itextpdf</groupId><artifactId>kernel</artifactId><version>${itext7.version}</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>io</artifactId><version>${itext7.version}</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>layout</artifactId><version>${itext7.version}</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>forms</artifactId><version>${itext7.version}</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>pdfa</artifactId><version>${itext7.version}</version></dependency></dependencies>
效果

生成的PDF
HTML转PDF
官方文档:https://kb.itextpdf.com/home/it7kb/ebooks/itext-7-converting-html-to-pdf-with-pdfhtml
pdfHTML是iText 7的一个附加组件,需要添加依赖
<properties><!-- 省略其他部分...--><itext7.html2pdf.version>2.1.4</itext7.html2pdf.version></properties><dependencies><!-- 省略其他部分...--><!-- itextpdf html2pdf组件--><dependency><groupId>com.itextpdf</groupId><artifactId>html2pdf</artifactId><version>${itext7.html2pdf.version}</version></dependency></dependencies>
代码
代码同上,仅main测试函数不同!
//测试public static void main(String[] args) {//test();html2pdf();}
效果

html页面
<!DOCTYPE html><html><head><title>简单简历</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate"/><meta http-equiv="pragma" content="no-cache"/><meta http-equiv="expires" content="0"/><!-- 自定义样式 --><style>*{font-family: "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;}body {margin: 0;padding: 0;}a {text-decoration: none;padding: 0;margin: 5px 0;color: black;}a:hover {color: #5c8dff;}b{margin: 0 10px;}/* 主体 */.main {/*margin: 0 auto;*//*width: 770px;*//*box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);*//*border: 1px solid #dad8d8;*//*background: #fbfbfb;*/}/* 1级标题 */h3.list1 {color: #409EFF;border-bottom: 1px solid #409EFF;padding: 5px;margin: 50px 0 0 0;}/* 大模块 */.block,.block1 {/*background: #efefef;*//*border: 1px solid #dad8d8;*/margin: 0 0 20px 0;padding: 0 10px;}.block,.block1 p {text-indent:2em;}.block:hover {background: #eeeeee;}.block1:hover {background: #cecece;}.button-list{text-align: center;margin: 20px auto;padding: 10px;width: 1024px;}</style></head><body><!-- 简历主体 --><div id="body" class="main"><div class="section"><div class="module"><h3 class="list1" style="margin: 0;">基本信息</h3><div class="block"><p>XXX<b>/</b>男<b>/</b>25岁</p><p>本科<b>/</b>XX学校<b>/</b>XX专业<b>/</b>2014-2018</p><p>工龄:X年</p><p>手机:XXXXXXXXXX</p><p>邮箱:XXXXX@qq.com</p><p>GitHub:<a href="https://github.com/huanzi-qch">https://github.com/huanzi-qch</a></p><p>博客园:<a href="https://www.cnblogs.com/huanzi-qch">https://www.cnblogs.com/huanzi-qch</a></p><br/><p>求职岗位:Java开发<b>/</b>目标城市:南宁市<b>/</b>期望薪资:面议</p><p>注:已离职,一个月可到岗</p><img style="position: relative;top: -350px;left: 500px;width: 100px;height: 130px;" src="logo.png"/></div></div><div class="module"><h3 class="list1">技能清单</h3><div class="block"><p>熟悉XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。</p><p>熟悉XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。</p><p>熟悉XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。</p><p>熟悉XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。</p><p>熟悉XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。</p><p>熟悉XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。</p><p>熟悉XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。</p><p>熟悉XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。</p><p>熟悉XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。</p><p>熟悉XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。</p><p>熟悉XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。</p></div></div><div class="module"><h3 class="list1">工作经历</h3><div class="block"><p>XXX技术有限公司<b>/</b>Java开发工程师<b>/</b>2018.01 - 至今</p><p>参与多个项目开发、测试、部署等工作,包括:</p><p>1、XXX。</p><p>2、XXX。</p><p>3、XXX。</p></div></div><div class="module"><h3 class="list1">项目经历</h3><div class="block"><h4 class="list2">项目1</h4><div class="block1"><p>项目名称:XXX(2020-11 —2021-11)</p><p>项目介绍:XXXXXXXXXXXXXXX。</p><p>技术架构:XXX + XXX + XXX。</p><p>职责描述:</p><p>1、XXXX。</p><p>2、XXXX。</p><p>3、XXXX。</p><p>4、XXXX。</p></div><h4 class="list2">项目2</h4><div class="block1"><p>项目名称:XXX(2020-11 —2021-11)</p><p>项目介绍:XXXXXXXXXXXXXXX。</p><p>技术架构:SpringBoot + Vue + Element-UI + ECharts。</p><p>职责描述:</p><p>1、XXXX。</p><p>2、XXXX。</p><p>3、XXXX。</p><p>4、XXXX。</p></div></div></div><div class="module"><h3 class="list1">自我评价</h3><div class="block"><p>1、XXXX;</p><p>2、XXXX;</p><p>3、XXXX;</p></div></div></div></div></body></html>

生成的PDF
后记
不管是前端生成PDF,还是后端生成PDF,能实现需求就是好技术!

