在 Java 中生成 PDF 文件的过程通常涉及到使用 PDF 模板,然后填充数据到模板中,最终生成完整的 PDF 文件。以下是几种常见的实现方式,每种方式都会包含详细的步骤流程和相关代码示例。
注意:示例中的库版本可能会有更新,请根据需要调整版本号。
iText 是一个流行的 Java PDF 库,用于创建和编辑 PDF 文件。
步骤流程:
Maven 依赖:
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13.2</version>
</dependency>
Gradle 依赖:
implementation 'com.itextpdf:itextpdf:5.5.13.2'
示例代码:
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileOutputStream;
public class PdfGenerationWithiText {
public static void main(String[] args) {
try {
// Step 1: Create a new Document
Document document = new Document();
// Step 2: Create a PdfWriter instance to write the document to a file
PdfWriter.getInstance(document, new FileOutputStream("output.pdf"));
// Step 3: Open the document
document.open();
// Step 4: Add content to the document
document.add(new com.itextpdf.text.Paragraph("Hello, iText!"));
// Step 5: Close the document
document.close();
System.out.println("PDF created successfully!");
} catch (DocumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Apache PDFBox 是另一个流行的 Java PDF 库,用于创建和操作 PDF 文件。
步骤流程:
Maven 依赖:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.28</version>
</dependency>
Gradle 依赖:
implementation 'org.apache.pdfbox:pdfbox:2.0.28'
示例代码:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import java.io.IOException;
public class PdfGenerationWithPDFBox {
public static void main(String[] args) {
try {
// Step 1: Create a new document
PDDocument document = new PDDocument();
// Step 2: Add a page
PDPage page = new PDPage();
document.addPage(page);
// Step 3: Create a content stream for the page
PDPageContentStream contentStream = new PDPageContentStream(document, page);
// Step 4: Add content to the page
contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.newLineAtOffset(100, 700);
contentStream.showText("Hello, PDFBox!");
contentStream.endText();
// Step 5: Close the content stream
contentStream.close();
// Step 6: Save the document
document.save("output.pdf");
// Step 7: Close the document
document.close();
System.out.println("PDF created successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
这两种方式都可以根据需要创建更复杂的 PDF 模板,然后根据具体数据进行填充,最终生成完整的 PDF 文件。选择其中一种方式取决于您的需求和偏好。