[更文挑战]iText番盘-PDF神器

411 阅读3分钟

「这是我参与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>

这就是我们的第一篇更文挑战内容, 就先到这里, 欲知后文, 且听下文;