Java生成PDF文档两个超实用的库( iText和Apache PDFBox)
前言
在 Java 里实现 PDF 文档生成那可真是个挺有意思的事儿,今儿个就来好好唠唠这个。咱有不少好用的库可以选择,下面就给你详细讲讲其中两个超实用的库,一个是 iText,另一个是 Apache PDFBox。
用 iText 库生成 PDF
思路
先把 iText 库给引入进来,这就好比给咱的 Java 项目装上了一个生成 PDF 的“神器”。
创建一个
Document对象,这个对象就像是一张白纸,咱要在上面绘制 PDF 的内容。把这张“白纸”打开,同时设置好字体啥的,就像准备好画笔和颜料。
往
Document里添加各种内容,比如段落、表格这些,就像在白纸上画画。最后把“白纸”合上,PDF 就生成啦。
代码示例
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
public class ITextPdfGenerator {
public static void main(String[] args) {
// 创建 Document 对象,就像准备好一张白纸
Document document = new Document();
try {
// 把这张“白纸”和一个文件输出流关联起来,指定生成的 PDF 文件路径
PdfWriter.getInstance(document, new FileOutputStream("itext_example.pdf"));
// 打开这张“白纸”,准备画画
document.open();
// 在“白纸”上添加一个段落内容
document.add(new Paragraph("嘿,这是用 iText 生成的 PDF 文档哦,是不是很神奇!"));
} catch (DocumentException | FileNotFoundException e) {
e.printStackTrace();
} finally {
// 合上“白纸”,完成 PDF 生成
if (document.isOpen()) {
document.close();
}
}
}
}代码解释及使用说明
首先咱创建了一个
Document对象,它就代表了整个 PDF 文档,就像一张白纸。用
PdfWriter.getInstance方法把Document和一个文件输出流关联起来,这里指定生成的 PDF 文件叫itext_example.pdf。调用
document.open()把“白纸”打开,这样就能往里面添加内容啦。用
document.add(new Paragraph("..."))往文档里添加一个段落,就像在白纸上写了一句话。最后在
finally块里调用document.close()把“白纸”合上,确保资源都正确释放。
Maven 依赖
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13.3</version>
</dependency>用 Apache PDFBox 库生成 PDF
思路
先把 Apache PDFBox 库引入进来,这也是一个生成 PDF 的厉害工具。
创建一个
PDDocument对象,这个对象就像是一个 PDF 的容器。创建一个
PDPage表示页面,然后把它添加到PDDocument里,就像给容器里放了一张纸。获取
PDPageContentStream来绘制内容,就像拿起笔在纸上画画。最后关闭
PDPageContentStream和PDDocument,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;
import java.io.IOException;
public class PdfBoxPdfGenerator {
public static void main(String[] args) {
// 创建 PDDocument 对象,就像准备一个 PDF 容器
PDDocument document = new PDDocument();
try {
// 创建一个页面,就像准备一张纸
PDPage page = new PDPage();
// 把这张纸放到 PDF 容器里
document.addPage(page);
// 获取页面内容流,就像拿起笔准备画画
PDPageContentStream contentStream = new PDPageContentStream(document, page);
// 设置字体和字号,就像选择画笔的粗细和样式
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
// 开始新的一行,准备写字
contentStream.beginText();
// 设置文本位置,就像确定在纸上的写字位置
contentStream.newLineAtOffset(100, 700);
// 写入文本,在纸上写下内容
contentStream.showText("嘿,这是用 Apache PDFBox 生成的 PDF 文档,很酷吧!");
// 结束文本操作,写完了
contentStream.endText();
// 把笔放下,关闭内容流
contentStream.close();
// 保存这个 PDF 文档
document.save("pdfbox_example.pdf");
} catch (IOException e) {
e.printStackTrace();
} finally {
// 把 PDF 容器关上,完成操作
try {
if (document != null) {
document.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}代码解释及使用说明
创建
PDDocument对象,它代表整个 PDF 文档,就像一个容器。创建
PDPage表示一个页面,用document.addPage(page)把页面添加到文档里,就像把纸放到容器里。用
PDPageContentStream来向页面里绘制内容,通过setFont方法设置字体和字号,beginText开始文本操作,newLineAtOffset设置文本位置,showText写入文本,endText结束文本操作。调用
contentStream.close()关闭内容流,就像把笔放下。最后调用
document.save("pdfbox_example.pdf")保存文档,在finally块里关闭PDDocument,把容器关上。
Maven 依赖
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.24</version>
</dependency>嘿,朋友,这下你知道怎么用 Java 生成 PDF 文档了吧!这两个库都挺好用的,你可以根据自己的需求选择哦。赶紧动手试试吧!
总结
到此这篇关于Java生成PDF文档的文章就介绍到这了,更多相关Java生成PDF文档内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
mybatis resultMap之collection聚集两种实现方式
本文主要介绍了mybatis resultMap之collection聚集两种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2024-09-09
详解@ConfigurationProperties实现原理与实战
这篇文章主要介绍了详解@ConfigurationProperties实现原理与实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-10-10
IDEA设置maven修改settings.xml配置文件无法加载仓库的解决方案
这篇文章主要介绍了IDEA设置maven修改settings.xml配置文件无法加载仓库的解决方案,帮助大家更好的利用IDEA进行JAVA的开发学习,感兴趣的朋友可以了解下2021-01-01
SpringCloud微服务之Hystrix组件实现服务熔断的方法
微服务架构特点就是多服务,多数据源,支撑系统应用。这样导致微服务之间存在依赖关系。这篇文章主要介绍了SpringCloud微服务之Hystrix组件实现服务熔断的方法,需要的朋友可以参考下2019-08-08
Spring Cloud学习教程之Zuul统一异常处理与回退
Spring Cloud Zuul对异常的处理整体来说还是比较方便的,流程也比较清晰,下面这篇文章主要给大家介绍了关于Spring Cloud学习教程之Zuul统一异常处理与回退的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。2018-04-04


最新评论