「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战」
PDF神器iText英文版翻译与学习
作者: 薛大郎.
英文原版:iText in Action 2nd Edition.pdf
坚持. 分享. 成长. 利他 !
一. 前言
终于下定决心了, 还是因为掘金有活动.
技术人的生活总是内卷的, 尤其是很多优秀的博主. 总是能坚持一周肝多篇猛文, 我所追更的博主之一是小傅哥就是其中最肝的之一. 在看到掘金在搞'更文挑战', 我也终于下定决心开始也肝起来, 也终于可以把我之前有过的一个念头, 翻一下技术书籍iText.
之前项目中用到了iText生成PDF, form表单填充的使用很简单, 但是当需要代码动态生成时, 就需要iText了, 而技术文档有不健全, 只能硬啃英文版.
标题中番寓意翻译, 重复去做之意, 盘寓意盘点整理, 把玩学习之意;
不废话了, 直接开始 ! 希望大家喜欢
二.正文.
第一章 介绍PDF和iText. (本主题主要使用的是iText的5.x版本来举例使用的)
1. PDF有哪些特性, 主要有六点:
- PDF是一种便捷式文档格式;
- 它是一种开放文件格式(ISO-32000-1),最初由Adobe创建;
- 它用于独立于系统软件和硬件的文档;
- PDF文档是web的重要组成部分;
- AdobeReader是使用最广泛的PDF查看器,也非常实用;
- 有很多免费的和专有的、开源的和开源的、桌面的和基于网络的用于创建、查看和操作PDF文档的软件产品;
本书主要关注的是一些自动化的事情, 并结合自己的真实实践学习使用, 后边文章在讲到相关章节的时候, 会使用相关设计模式的代码来说明;
随着PDF在现在社会中使用场景越来越多, 以及PDF不容易(编辑的功能大多需要付费)编辑等特性, iText将越来越流行, 建议使用到下边这些项目中:
- 内容事先不可用,根据用户输入或实时数据库信息, 主要是内容大多不固定, 格式有要求;
- 由于内容量巨大,大多是很多页面和文件, 无法手动生成PDF文件;
- 文档需要在无人参与模式下以批处理方式创建, 比如:发票,合同等;
- 内容需要定制或个性化, 比如: 一个最终用户必须在多页上盖章;
2. 总是有一个 HelloWorld 可以一窥究竟;
import com.itextpdf.text.Document;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfWriter;
public static void main(String[] args) throws DocumentException, IOException {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(RESULT));
document.open();
document.add(new Paragraph("Hello World!"));
document.close();
}
第一步: 我们创建了一个PDF的Document(文档);
第二步 我们获取了一个PdfWriter的实例;
第三步 打开文档实例, 才可以往Document中添加内容;
第四步 我们将内容Hello World! 作为一个段落的内容添加到了文档当中;
第五步 关闭文档;
<dependencyManagement>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.4.3</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
</dependency>
</dependencies>
这就是我们的第一篇更文挑战内容, 就先到这里, 欲知后文, 且听下文;