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

相关推荐
daidaidaiyu4 小时前
一文学习 工作流开发 BPMN、 Flowable
java
SuniaWang5 小时前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题六:《Vue3 前端开发实战:打造企业级 RAG 问答界面》
java·前端·人工智能·spring boot·后端·spring·架构
sheji34165 小时前
【开题答辩全过程】以 基于springboot的扶贫系统为例,包含答辩的问题和答案
java·spring boot·后端
m0_726965986 小时前
面面面,面面(1)
java·开发语言
xuhaoyu_cpp_java6 小时前
过滤器与监听器学习
java·经验分享·笔记·学习
程序员小假7 小时前
我们来说一下 b+ 树与 b 树的区别
java·后端
Meepo_haha7 小时前
Spring Boot 条件注解:@ConditionalOnProperty 完全解析
java·spring boot·后端
sheji34167 小时前
【开题答辩全过程】以 基于springboot的房屋租赁系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
木井巳8 小时前
【递归算法】子集
java·算法·leetcode·决策树·深度优先