Java生成PDF文件

技术指南与实战代码示例

在企业级应用开发中,将数据导出为PDF格式是一项常见需求。本文将介绍使用Java生成PDF文件的主流方案、核心库以及实际代码示例。

无论你是需要生成报表、合同还是发票,掌握这些技术都能帮你高效完成任务。

常用Java PDF库

iText

功能强大且成熟的PDF生成库,支持复杂的布局、表格、字体嵌入和加密等功能。

注意:iText 7及以上版本对商业用途有许可证限制。

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13.3</version>
</dependency>

Apache PDFBox

Apache开源项目,免费用于商业用途,适合创建、操作和打印PDF文档。

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.27</version>
</dependency>

OpenPDF

iText 2.1.7的社区维护分支,MIT许可证,可自由用于商业项目。

<dependency>
    <groupId>com.github.librepdf</groupId>
    <artifactId>openpdf</artifactId>
    <version>1.3.30</version>
</dependency>

使用iText生成PDF示例

以下是一个简单的Java程序,使用iText生成包含文本的PDF文件:

import com.itextpdf.text.Document;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileOutputStream;

public class PdfGenerator {
    public static void main(String[] args) {
        try {
            // 创建文档对象
            Document document = new Document();
            
            // 创建PdfWriter实例
            PdfWriter.getInstance(document, new FileOutputStream("sample.pdf"));
            
            // 打开文档
            document.open();
            
            // 添加内容
            document.add(new Paragraph("Hello, 这是由Java生成的PDF文件!"));
            document.add(new Paragraph("当前时间: " + new java.util.Date()));
            
            // 关闭文档
            document.close();
            
            System.out.println("PDF文件已生成: sample.pdf");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用Apache PDFBox生成PDF

使用PDFBox创建简单PDF的示例:

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

public class PdfBoxExample {
    public static void main(String[] args) {
        try (PDDocument document = new PDDocument()) {
            PDPage page = new PDPage();
            document.addPage(page);

            try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) {
                contentStream.beginText();
                contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
                contentStream.newLineAtOffset(100, 700);
                contentStream.showText("使用Apache PDFBox生成的PDF");
                contentStream.endText();
            }

            document.save("pdfbox_sample.pdf");
            System.out.println("PDF已保存: pdfbox_sample.pdf");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

选择建议

三国志11武将介绍 - 经典策略游戏名将图鉴 电脑Word文档2007怎么下载 - 完整指南与安装教程 so文件怎么打开看?详细方法与工具指南 如何把表格转换成Word文档 - 实用办公技巧指南 如何取消Word文档批注模式 - 详细图文教程 三国志11木兽专题 - 兵种介绍与战术运用指南 Word怎么添加标题?详细步骤图文教程 spacedesk USB连接教程 - 手机/平板变电脑副屏详细图文指南 三国志13周瑜专题 - 能力解析与玩法攻略 三国志·田豫传 原文 - 陈寿《三国志》田豫传记全文 三国向朗专题 - 蜀汉重臣生平与历史贡献 Vivado中生成及使用EDF文件的完整指南 PDF对比两个文件 - 在线免费文档差异比较工具 Word审阅修订怎么用 - 完整图文教程指南 三国路招 - 三国策略战棋手游专题页 Word怎么添加视频?详细图文教程教你轻松插入视频 - 办公技巧 Word文档版式怎么设置?详细教程与实用技巧 Word怎么建立表格?详细图文教程教你轻松上手 电脑怎么打开DXF文件?5种实用方法详解 如何对比两份Word文档 | Word文件差异比较方法全解析 Word表格一排字不在一行?原因与解决方法全解析 正史三国志 - 陈寿原著历史专题 DWG文件如何打开?5种实用方法详解 Word文档编辑教程 - 零基础入门到精通 三国志·刘晔传 | 曹魏战略家生平与谋略全记录 Word文档打字时后面字往后移?原因与解决方法详解 Word撤销键不见了?快速解决方法大全 spacedek苹果怎么连接?iPhone/iPad/Mac使用spacedesk详细教程 三国志11蒙恬专题页 - 武将介绍与战术分析 三国志专题 - 历史背景、人物与事件全解析 手机Word表格不够用怎么增加行 - 实用教程指南 三国人物志:张梁 - 黄巾起义领袖之一 | 历史人物专题 Word无法打中文?一文解决所有常见问题 | 中文输入故障指南 Word怎么给文字加表格?详细图文教程 - 文档排版技巧 Word表格字体间距怎么调 - 详细图文教程 so是什么文件格式?详解Linux共享对象文件(.so) Word文字一行不满自动换行?原因与解决方法详解 三国志战略版田丰武将全攻略 - 属性、战法与阵容搭配指南 Word取消底色方法大全 - 快速去除文字或页面背景色 Word文档如何调整字间距 - 详细图文教程 三国穆顺 - 汉末忠臣生平事迹专题 Word文档如何加密?详细步骤教你保护文件安全 Word审阅模式在哪里?详细图文教程指南 Word文档如何自动保存?详细设置教程防止文件丢失 三国严颜专题 - 生平事迹与历史评价 Beyond Compare - 强大的文件与文件夹对比同步工具 Word没自动保存怎么恢复?未保存文档找回方法大全 Word渐变文本填充怎么设置?详细图文教程 Word文档如何行列互换?详细图文教程教你轻松实现表格转置 三国名将朱桓专题 - 生平事迹与历史评价 PDF文件拆分成多个文件 - 免费在线拆分工具 如何将两个Word文档对比 - 详细操作指南 Word文档撤回键无法使用?多种方法快速修复 - 问题解决指南 Word如何显示修改痕迹和批注 - 完整操作指南 三国志9属性一览 - 武将能力详解与游戏机制全解析 Word一键生成PPT - 高效办公新体验 三国志9隐藏剧本全攻略 - 开启方法与玩法详解 Word文档统一调整图片大小的完整指南 | 高效办公技巧 Word文档怎么黑白打印?详细操作步骤指南 电脑DOC文件用什么软件打开?全面指南推荐 如何缩小PDF文件大小 - 简单有效的PDF压缩方法 PPT转Word文档:简单高效的转换方法指南 三国志13安卓版 - 经典策略手游下载与介绍 | 三国迷必玩 Word比较两个文档异同 - 详细图文教程 三国志8怎么战斗 - 详细战斗系统攻略与技巧 Word文档保留修改痕迹功能使用指南 Word文档制作表格完全指南 - 从入门到精通 三国志郝昭传 - 曹魏名将的传奇一生 红包三国 - 策略战棋手游 领红包玩三国 三国伊籍专题 | 蜀汉忠臣伊籍生平事迹全解析 Word文档一修改就会变红?原因与解决方法全解析 Word文档打不出字?常见原因与解决方法大全 手机如何编辑Word文档 - 移动办公实用指南 Word行距无法调整?原因分析与解决方法大全 Word文档批注完全指南:高效协作与审阅技巧 Word文字前后顺序调换工具 - 在线文字倒序反转 三国志中的蒙恬:历史与形象图鉴 - 探索名将风采 Word如何使用修订模式 - 完整图文教程指南 三国志11火球战法全解析 - 技巧、武将与实战策略 SW许可证文件在哪?SolidWorks授权文件(sldworks.lic)位置详解 Word给文字添加阴影边框:详细步骤与技巧指南 手机怎么听PDF文件?5种方法轻松实现PDF转语音朗读 Word表格与文字间距太大问题解决方法 - Word排版技巧 Word换行快捷键(Shift+Enter)使用指南 - 强制换行技巧 三国潘氏专题 - 探秘东吴潘氏家族的历史风云 怎么打开OFD格式文件?多种方法轻松查看OFD文档 Word文档怎么变黑白?多种方法教你轻松实现 | 实用办公技巧 两个Word文件怎么对比不同?5种实用方法详解 Word错别字检查完全指南 - 轻松校对文档中的拼写与语法错误 三国志11凌统特技详解 - 武将攻略专题 Word文字一行不满自动换行原理与设置方法 Word红色波浪线表示什么?原因与解决方法详解 三国志11南蛮征伐专题 - 战略解析与游戏攻略 Word里表格怎么加一列 - 详细图文教程 PDF转Word - 免费在线转换为可编辑文档 三国志11江陵专题 - 地理与战略全解析 三国志11市场 - 经典策略战棋游戏资源与攻略分享 Word文档怎么顶头写字 - 详细操作指南 Word文档如何加密?详细步骤教你保护文件安全 - 文档安全指南 Word文档首行不在顶端?一文解决排版错位问题