欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > Java 导出 PDF 文件:从入门到实战

Java 导出 PDF 文件:从入门到实战

2025/3/9 10:09:20 来源:https://blog.csdn.net/C_V_Better/article/details/146041322  浏览:    关键词:Java 导出 PDF 文件:从入门到实战

目录

    • 一、为什么需要导出 PDF 文件?
    • 二、使用 iText 库生成 PDF 文件
      • 1. 添加依赖
      • 2. 生成 PDF 文件
      • 3. 添加表格和图像
    • 三、使用 Apache PDFBox 生成 PDF 文件
      • 1. 添加依赖
      • 2. 生成 PDF 文件
      • 3. 添加表格和图像
    • 四、总结

在 Java 开发中,生成 PDF 文件是一个常见的需求。无论是生成报告、发票还是其他文档,掌握 PDF 文件的生成技巧都可以大大提高工作效率。本文将详细介绍 Java 中如何导出 PDF 文件,包括使用 iText 和 Apache PDFBox 两种流行的库,并通过具体代码示例帮助你快速上手。

一、为什么需要导出 PDF 文件?

PDF(Portable Document Format)是一种广泛使用的文档格式,具有以下优点:

  • 跨平台:可以在任何操作系统上查看和打印。
  • 格式保留:无论在何种设备上查看,文档的格式都能保持一致。
  • 安全性:可以设置密码保护,防止未经授权的访问。

在实际开发中,生成 PDF 文件的需求非常普遍。例如:

  • 报表生成:生成销售报表、财务报表等。
  • 文档转换:将其他格式的文件(如 HTML、TXT)转换为 PDF。
  • 电子发票:生成符合标准的电子发票。

二、使用 iText 库生成 PDF 文件

iText 是一个功能强大的 Java 库,用于生成和操作 PDF 文件。以下是一个使用 iText 生成 PDF 文件的示例。

1. 添加依赖

在 Maven 项目中,添加以下依赖:

<dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.2.5</version>
</dependency>

2. 生成 PDF 文件

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;public class ITextExample {public static void main(String[] args) {// 创建 PDF 文档PdfDocument pdfDoc = new PdfDocument(new PdfWriter("hello.pdf"));Document doc = new Document(pdfDoc);// 添加内容doc.add(new Paragraph("Hello, iText!"));// 关闭文档doc.close();}
}

3. 添加表格和图像

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.element.Image;
import com.itextpdf.kernel.colors.ColorConstants;
import com.itextpdf.kernel.geom.PageSize;public class ITextExample {public static void main(String[] args) {// 创建 PDF 文档PdfDocument pdfDoc = new PdfDocument(new PdfWriter("hello.pdf"));Document doc = new Document(pdfDoc);// 添加标题doc.add(new Paragraph("Hello, iText!").setBold().setFontSize(18));// 添加表格Table table = new Table(3);table.addCell("Name");table.addCell("Age");table.addCell("Country");table.addCell("John");table.addCell("25");table.addCell("USA");table.addCell("Anna");table.addCell("30");table.addCell("Germany");doc.add(table);// 添加图像Image image = new Image(ImageDataFactory.create("logo.png"));image.scaleToFit(100, 100);doc.add(image);// 关闭文档doc.close();}
}

三、使用 Apache PDFBox 生成 PDF 文件

Apache PDFBox 是另一个流行的 Java 库,用于生成和操作 PDF 文件。以下是一个使用 Apache PDFBox 生成 PDF 文件的示例。

1. 添加依赖

在 Maven 项目中,添加以下依赖:

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

2. 生成 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(PageSize.A4);document.addPage(page);try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) {contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);contentStream.beginText();contentStream.newLineAtOffset(100, 700);contentStream.showText("Hello, PDFBox!");contentStream.endText();}document.save("hello.pdf");} catch (Exception e) {e.printStackTrace();}}
}

3. 添加表格和图像

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 org.apache.pdfbox.pdmodel.PDImageXObject;public class PDFBoxExample {public static void main(String[] args) {try (PDDocument document = new PDDocument()) {PDPage page = new PDPage(PageSize.A4);document.addPage(page);try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) {// 添加标题contentStream.setFont(PDType1Font.HELVETICA_BOLD, 18);contentStream.beginText();contentStream.newLineAtOffset(100, 700);contentStream.showText("Hello, PDFBox!");contentStream.endText();// 添加表格contentStream.setFont(PDType1Font.HELVETICA, 12);contentStream.beginText();contentStream.newLineAtOffset(100, 650);contentStream.showText("Name\tAge\tCountry");contentStream.newLineAtOffset(0, -20);contentStream.showText("John\t25\tUSA");contentStream.newLineAtOffset(0, -20);contentStream.showText("Anna\t30\tGermany");contentStream.endText();// 添加图像PDImageXObject image = PDImageXObject.createFromFile("logo.png", document);contentStream.drawImage(image, 100, 500, 100, 100);} catch (Exception e) {e.printStackTrace();}document.save("hello.pdf");} catch (Exception e) {e.printStackTrace();}}
}

四、总结

通过本文的介绍,我们详细学习了 Java 中如何导出 PDF 文件,包括使用 iText 和 Apache PDFBox 两种流行的库。iText 提供了更丰富的功能和更灵活的 API,适用于复杂的 PDF 生成需求。Apache PDFBox 则是一个轻量级的库,适用于简单的 PDF 生成和操作。希望本文的内容能够帮助你在 Java 开发中更好地实现 PDF 文件的导出功能。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词