itextPdf生成pdf简单示例

文章环境

jdk1.8,springboot2.6.13

POM依赖

XML 复制代码
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>

示例代码

java 复制代码
package com.example.example;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;

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

/**
 * @author bao
 * @date 2024/3/25 16:10
 */
public class SimpleGenPdf {
        public static void main(String[] args) throws DocumentException,
                IOException {
        // 定义中文字体
        BaseFont bfChinese = BaseFont.createFont("STSong-Light",
                "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
        Font fontCN = new Font(bfChinese, 12, Font.NORMAL);

        // 步骤1:创建一个大小为A4的文档
        Document document = new Document(PageSize.A4);
        try {
            // 步骤 2:
            // 我们为document创建一个监听,并把PDF流写到文件中
            //获取资源文件路径
            String resourcePath = "./src/main/resources/";
            PdfWriter.getInstance(document, new FileOutputStream(resourcePath + "/pdf/simplePdf.pdf"));
            // 步骤 3:打开文档
            document.open();

            // 段落
            Paragraph paragraph = new Paragraph("证明\r\r", new Font(bfChinese, 13, Font.NORMAL));
            //设置文字居中
            paragraph.setAlignment(Element.ALIGN_CENTER);
            //设置左缩进
            paragraph.setIndentationLeft(12);
            //设置右缩进
            paragraph.setIndentationRight(12);
            //设置首行缩进
            paragraph.setFirstLineIndent(24);
            //行间距
            paragraph.setLeading(15f);
            //设置段落上空白
            paragraph.setSpacingBefore(5f);
            //设置段落下空白
            paragraph.setSpacingAfter(5f);
            document.add(paragraph);

            //第一个表格
            document.add(new Paragraph("默认情况下的大小---居中 80%", fontCN));
            // 创建一个有3列的表格
            PdfPTable userTable = new PdfPTable(3);
            // 定义一个表格列头
            PdfPCell tableColumnHead = new PdfPCell(new Paragraph("header with colspan 3"));
            // 定义一个表格单元的跨度
            tableColumnHead.setColspan(3);
            // 把单元加到表格中
            userTable.addCell(tableColumnHead);
            //把下面这9项顺次的加入到表格中,当一行充满时候自动折行到下一行
            userTable.addCell("1.1");
            userTable.addCell("2.1");
            userTable.addCell("3.1");
            userTable.addCell("1.2");
            userTable.addCell("2.2");
            userTable.addCell("3.2");
            userTable.addCell("1.3");
            userTable.addCell("2.3");
            userTable.addCell("3.3");
            // 增加到文档中
            document.add(userTable);

            //第二个表格
            document.add(new Paragraph("居中 100%", fontCN));
            PdfPTable centerTable = userTable;
            // 设置表格大小为可用空白区域的100%
            centerTable.setWidthPercentage(100);
            // 增加到文档中2
            document.add(centerTable);

            //第三个表格
            document.add(new Paragraph("居右 50%", fontCN));
            PdfPTable rightTable = userTable;
            // 设置表格大小为可用空白区域的50%
            rightTable.setWidthPercentage(50);
            // 设置水平对齐方式为 居右
            rightTable.setHorizontalAlignment(Element.ALIGN_RIGHT);
            // 增加到文档中3
            document.add(rightTable);

            document.add(new Paragraph("居左 50%", fontCN));
            PdfPTable leftTable = userTable;
            // 设置水平对齐方式为 居左
            leftTable.setHorizontalAlignment(Element.ALIGN_LEFT);
            document.add(leftTable);
        } catch (Exception de) {
            de.printStackTrace();
        }
        // 步骤 5:关闭文档
        document.close();
    }
}

生成结果

git完整项目代码

bnmjstu / itextpdf-simple-example · GitCode

相关推荐
方圆想当图灵17 分钟前
缓存之美:万文详解 Caffeine 实现原理(下)
java·redis·缓存
栗豆包31 分钟前
w175基于springboot的图书管理系统的设计与实现
java·spring boot·后端·spring·tomcat
等一场春雨1 小时前
Java设计模式 十四 行为型模式 (Behavioral Patterns)
java·开发语言·设计模式
酱学编程2 小时前
java中的单元测试的使用以及原理
java·单元测试·log4j
我的运维人生2 小时前
Java并发编程深度解析:从理论到实践
java·开发语言·python·运维开发·技术共享
一只爱吃“兔子”的“胡萝卜”2 小时前
2.Spring-AOP
java·后端·spring
HappyAcmen3 小时前
Java中List集合的面试试题及答案解析
java·面试·list
Ase5gqe3 小时前
Windows 配置 Tomcat环境
java·windows·tomcat
大乔乔布斯3 小时前
JRE、JVM 和 JDK 的区别
java·开发语言·jvm
湫qiu3 小时前
带你写HTTP/2, 实现HTTP/2的编码
java·后端·http