iText5 生成PDF、添加水印等(记录)

使用iText在Java中生成PDF及添加水印
该文章展示了如何在Java中利用iText库创建PDF文件,包括设置标题、段落、图片、超链接以及添加水印。测试代码详细说明了如何操作PDF内容,如创建不同类型的文本元素、列表和表格,并提供了给PDF添加水印的方法。

工作中偶尔用到Java代码生成PDF文件的场景。iText是一个用于操作PDF文档的开源库,可以在Java和.NET环境中使用。它提供了创建、读取、修改和写入PDF文档的功能,在此测试记录一下。示例中包括PDF生成、水印添加等。

Maven依赖

<dependencies>
    <!--单元测试-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.9</version>
    </dependency>
    <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>5.3.2</version>
    </dependency>
    <!--iText-->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itextpdf</artifactId>
        <version>5.5.13.2</version>
    </dependency>
    <dependency>
        <groupId>com.itextpdf.tool</groupId>
        <artifactId>xmlworker</artifactId>
        <version>5.5.13</version>
    </dependency>
</dependencies>

测试代码

package test;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.GrayColor;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfGState;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import com.itextpdf.text.pdf.PdfWriter;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @author NYK
 * @date 2023/6/13-9:08
 */
@Slf4j
public class ItextTest {

    private static Font titleFont = new Font(Font.FontFamily.TIMES_ROMAN, 25, Font.BOLD);
    private static Font subtitleFont = new Font(Font.FontFamily.TIMES_ROMAN, 18, Font.BOLD, new BaseColor(249, 157, 37));
    private static Font normalFont = new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.NORMAL);
    private static Font boldFont = new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.BOLD, new BaseColor(60, 131, 153));

    // 水印内容
    private static String waterContent = "NIYUEKE";
    // 水印不透明度
    private static float opacity = 0.9f;
    // 水印倾斜角度
    private static float rotation = 40f;
    // 水印字体大小
    private static float fontSize = 50f;

    /**
     * 生成一个包含标题、段落、图片和超链接等等的PDF文件
     * 1. Chunk(块):Chunk是PDF文档中的最小单位,它表示一个单独的字符串。在iText中,一个Chunk对象通常用于表示PDF文档中
     * 的一块不可分割的文本。它具有一定的样式、字体等属性。
     * <p>
     * 2. Phrase(短语):Phrase是由一个或多个Chunks组成的文本段。短语继承了Chunk的属性,但还可以包含多个Chunk,并自动处
     * 理不同Chunk之间的换行、空格等。
     * <p>
     * 3. Paragraph(段落):Paragraph是由多个Phrases组成的文本段。此外,段落还具有与文档的排版和位置相关的属性,例如对齐
     * 方式、缩进、间距等。
     * <p>
     * 4. List(列表):List是由多个ListItems组成的文本列表。列表有有序列表和无序列表两种类型,可以自定义列表符号等样式。
     * <p>
     * 5. ListItem(列表项):ListItem是一个特殊的段落类型,通常用于表示一个列表中的单个元素。ListItem是由一个或多个Phrases
     * 组成的,具有与段落相似的文本排版属性,但可以添加到List对象中。
     * <p>
     * 6. PdfPTable(表格):PdfPTable是一个PDF文档中的表格对象
     *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值