欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java生成PDF文档两个超实用的库(iText和ApachePDFBox),

来源: javaer 分享于  点击 2354 次 点评:36

Java生成PDF文档两个超实用的库(iText和ApachePDFBox),


目录
  • 前言
  • 用 iText 库生成 PDF
    • 思路
    • 代码解释及使用说明
    • Maven 依赖
  • 用 Apache PDFBox 库生成 PDF
    • 思路
    • 代码解释及使用说明
    • Maven 依赖
  • 总结

    前言

    在 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文档内容请搜索3672js教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持3672js教程!

    您可能感兴趣的文章:
    • 详解Java生成PDF文档方法
    • Java 生成PDF文档的示例代码
    • 如何使用Java生成PDF文档详解
    • 手把手教你使用Java实现在线生成pdf文档
    • Java快速生成PDF文档的实例代码
    相关栏目:

    用户点评