iText7 Java环境配置

方式1:Maven引入(推荐)

iText的核心库可以从Maven中央仓库中找到。使用Maven配置包依赖是很容易的。

全部引入

在项目的pom.xml配置文件中添加properties标签配置。如果已有properties标签,只需添加标签内部的内容。

<properties>
   <itext.version>RELEASE</itext.version>
</properties>

pom.xml中添加下面列出的dependencies标签配置。如果已有dependencies标签,只需添加标签内部的内容。

<dependencies>
	<!-- 引入完整iText 7模块 -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itext7-core</artifactId>
        <version>${itext.version}</version>
        <type>pom</type>
    </dependency>
</dependencies>

properties标签中的itext.version指定了库的版本。RELEASE表示使用最新版的iText库。如果需要使用特定版本的库,可以在这里显式地指定。

部分引入

通常情况下,完整引入可以满足绝大部分的需要。不过,有的时候,我们只希望引入需要使用的库。这一节将介绍部分引入pom.xml的配置方式。

与完整引入一样,iText版本在properties标签中定义。将下面的配置添加到pom.xml中。如果已存在properties标签,只需添加内部的内容。

<properties>
   <itext.version>RELEASE</itext.version>
</properties>

pom.xml中的依赖包配置和完整引入有不同。iText-core库由多个模块构成,我们必须引入的模块是kernel、io和layout,其余的模块可以根据实际需要引入。下面列出的是完整引入所有模块的配置,我们可以实际需要删掉不需要引入的库的配置项。

 <properties>
   <itext.version>RELEASE</itext.version>
</properties>
<dependencies>
	<!-- 必需 -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>kernel</artifactId>
        <version>${itext.version}</version>
    </dependency>
	<!-- 必需 -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>io</artifactId>
        <version>${itext.version}</version>
    </dependency>
	<!-- 必需 -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>layout</artifactId>
        <version>${itext.version}</version>
    </dependency>
	<!-- 表单相关 -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>forms</artifactId>
        <version>${itext.version}</version>
    </dependency>
	<!-- PDF/A相关 -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>pdfa</artifactId>
        <version>${itext.version}</version>
    </dependency>
	<!-- 数字签名相关 -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>sign</artifactId>
        <version>${itext.version}</version>
    </dependency>
	<!-- 条形码相关 -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>barcodes</artifactId>
        <version>${itext.version}</version>
    </dependency>
	<!-- 亚洲字体相关 -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>font-asian</artifactId>
        <version>${itext.version}</version>
    </dependency>
	<!-- 断字分词(hyphenation)相关 -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>hyph</artifactId>
        <version>${itext.version}</version>
    </dependency>
</dependencies>

properties标签中的itext.version指定了库的版本。RELEASE表示使用最新版的iText库。如果需要使用特定版本的库,可以在这里显式地指定。

方式2:链接Jar包进入Classpath

这种方法比较原始,不过适用于任何Java项目。

首先我们需要下载iText库的Jar包,推荐在官方GitHub的发布版本页面(英语)上下载。英语不好的小伙伴们可以使用这个链接直接下载7.1.9版本的Jar包压缩包。下载后,解压压缩包,可以看到一系列Jar包,如下图所示。

iText Jar list
iText Jar包列表

如果我们想引入全部的Jar包,只需要将这些文件放置到classpath目录下即可。

如果我们只想引入部分功能的Jar包,我们需要将kernel、io、layout三个Jar包以及我们想引入功能对应的Jar包放在classpath下。每个Jar包负责的功能如下所示。

  • barcodes:条形码相关
  • font-asian:亚洲字体(如中文字体)相关
  • forms:表单相关
  • hyph:断字分词(hyphenation)相关
  • io:必需,文件输入输出相关
  • kernel:必需,核心功能
  • layout:必需,排版相关
  • pdfa:PDF/A相关
  • sign:数组签名相关
  • svg:svg绘制相关

对于IDE管理的项目,我们可以通过配置项目依赖库的方式,摆脱Jar包显式地放在classpath目录的限制。例如,在IDEA的Project Structure配置中,我们可以在Library中添加iText库Jar存放的路径。

IDEA导入iText库的Jar包
IDEA导入iText库的Jar包

方式3:Gradle引入iText G

如果项目采用Gradle进行管理(例如安卓项目),我们需要引入iText G库来满足需要。iText G库只使用Google规定的白名单Java包,像awt、nio库被其他方法所替代。Gradle引入iText G非常简单。在配置文件中添加如下配置。

dependencies {
    compile 'com.itextpdf:itextg:5.5.10'
}

从版本号上我们会发现,iText G只支持到了核心库版本5,版本7未作支持。

测试:创建第一个iText PDF文件

在项目中建立一个新的类文件,这里起名叫做FirstTest。程序实例如下。

package com.lch.itext;

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;

import java.io.FileNotFoundException;

public class FirstTest {
    public static void main(String[] args) throws FileNotFoundException {
        // 初始化PDF writer
        PdfWriter writer = new PdfWriter("./FirstTest.pdf");

        // 初始化PDF document
        PdfDocument pdf = new PdfDocument(writer);
        Document document = new Document(pdf);

        // 向document中添加一个段落,段落中有一句话
        document.add(new Paragraph("This is the first test!"));

        // 关闭document
        document.close();
    }
}

执行主方法,我们可以在项目的根目录下得到一个新建的FirstTest.pdf文件。如果打开文件看到了如下图所示的效果,那么恭喜你完成了iText基础环境的搭建。

iText测试效果图

参见

  1. Installing iText 7 for Java(英语)
  2. Releases · itext/itext7(英语)
  3. Installing iText G for Android(英语)
  4. C01E01_HelloWorld.java

发表评论