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

相关推荐
一 乐9 小时前
电影院|基于springboot + vue电影院购票管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·电影院购票管理管理系统
恼书:-(空寄9 小时前
JVM GC 日志分析 + 常见 GC 场景 + 实战参数调优
java·jvm
消失的旧时光-19439 小时前
Spring Boot 实战(五):接口工程化升级(统一返回 + 异常处理 + 错误码体系 + 异常流转机制)
java·spring boot·后端·解耦
杨凯凡11 小时前
【012】图与最短路径:了解即可
java·数据结构
比特森林探险记11 小时前
【无标题】
java·前端
椰猫子11 小时前
Javaweb(Filter、Listener、AJAX、JSON)
java·开发语言
朝新_11 小时前
【Spring AI 】核心知识体系梳理:从入门到实战
java·人工智能·spring
一 乐11 小时前
旅游|基于springboot + vue旅游信息推荐系统(源码+数据库+文档)
java·vue.js·spring boot·论文·旅游·毕设·旅游信息推荐系统
我命由我1234512 小时前
Android 开发中,关于 Gradle 的 distributionUrl 的一些问题
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
橙露12 小时前
SpringBoot 全局异常处理:优雅封装统一返回格式
java·spring boot·后端