在本文中,您将学习如何在 Java 中以编程方式从头开始创建 PDF 文件。

使用 Java 创建 PDF 文档

PDF 已成为创建不同类型文档的常用文件格式。各个行业都采用 PDF 自动化来生成文档,例如收据、发票、业务报告等。密切关注此类场景,本文介绍了如何使用 Java 创建 PDF 文件。代码示例将演示如何从头开始创建 PDF 文件,并使用 Java 在该 PDF 中插入文本、图像、表格和其他元素。

用于创建 PDF 的 Java API - 免费下载

Aspose.PDF for Java 是一个 PDF 文件操作 API,可让您从 Java 应用程序中创建 PDF 文件。使用 API,您可以创建简单和复杂的 PDF 文档。 Aspose.PDF for Java 可以下载为 JAR 或安装在基于 Maven 的应用程序中。

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>20.11</version>
    <classifier>jdk17</classifier>
</dependency>

用 Java 创建 PDF 文件

以下是从头开始生成一个简单的 PDF 文件并在其中插入一段文本的步骤。

以下代码示例展示了如何使用 Java 创建 PDF 文件。

// 如需完整的示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.PDF-for-Java
// 初始化文档对象
Document document = new Document();
 
//添加页面
Page page = document.getPages().add();
 
// 将文本添加到新页面
page.getParagraphs().add(new TextFragment("Hello World!"));
 
// 保存更新的 PDF
document.save("HelloWorld_out.pdf");

在 Java 中创建具有文本格式的 PDF 文件

现在让我们看看如何将格式应用于 PDF 文档中的文本。文本格式可以包括字体、字体大小、颜色、位置等。以下是执行此操作的步骤。

  • 使用 Document 类创建一个新的 PDF 文档或加载一个现有的。
  • 访问要放置文本的 Page
  • 创建一个 TextFragment 的对象来设置文本和其他格式选项,如位置、字体、颜色、大小等。
  • 使用 TextBuilder 类将 TextFragment 对象添加到页面。
  • 使用 Document.save(String) 方法保存 PDF 文档。

以下代码示例展示了如何使用 Java 创建 PDF 文件和应用文本格式。

// 加载 PDF 文档
Document document = new Document();

// 添加页面
Page page = document.getPages().add();

// 创建文本片段
TextFragment textFragment = new TextFragment(
		"Text 1: We have now applied text formatting. This is PDF generated by Aspose.PDF for .NET");
textFragment.setPosition(new Position(100, 700));
TextFragment textFragment1 = new TextFragment(
		"Text 2: We have now applied text formatting. This is PDF generated by Aspose.PDF for .NET");
textFragment1.setPosition(new Position(100, 600));

// 设置文本属性
textFragment.getTextState().setFontSize(12);
textFragment.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
textFragment.getTextState().setBackgroundColor(Color.getLightGray());
textFragment.getTextState().setForegroundColor(Color.getRed());

textFragment1.getTextState().setDrawTextRectangleBorder(true);
textFragment1.getTextState().setUnderline(true);
textFragment1.getTextState().setStrikeOut(true);

// 使用图案色彩空间创建新颜色
Color color = new Color();
color.setPatternColorSpace(new GradientAxialShading(Color.getRed(), Color.getBlue()));		
textFragment1.getTextState().setForegroundColor(color);

// 创建 TextBuilder 对象
TextBuilder textBuilder = new TextBuilder(page);

// 将文本片段附加到 PDF 页面
textBuilder.appendText(textFragment);
textBuilder.appendText(textFragment1);

// 保存 PDF 文档
document.save("Generated-PDF.pdf");

Java 创建带有图像的 PDF 文件

以下是使用 Aspose.PDF for Java 在 PDF 文件中插入图像的步骤。

  • 创建一个 Document 对象以创建或打开 PDF 文档。
  • Page 对象中获取要添加图像的页面。
  • 将图像添加到 Page.getResources() 集合中。
  • 使用运算符将图像放置在页面上:
    • G保存 operator to save the current graphical state.
    • 连接矩阵 operator to specify where the image is to be placed.
    • operator to draw the image on the page.
    • 最后,使用 GRestore 操作符保存更新的图形状态。
  • 保存 PDF 文件。

以下代码示例显示了如何在 Java 中将图像插入 PDF 文件。

// 如需完整的示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// 打开文档
Document pdfDocument1 = new Document("input.pdf");

// 设置坐标
int lowerLeftX = 100;
int lowerLeftY = 100;
int upperRightX = 200;
int upperRightY = 200;

// 获取要添加图片的页面
Page page = pdfDocument1.getPages().get_Item(1);

// 将图像加载到流中
java.io.FileInputStream imageStream = new java.io.FileInputStream(new java.io.File("input_image1.jpg"));

// 将图像添加到页面资源的图像集合中
page.getResources().getImages().add(imageStream);

// 使用 GSave 运算符:此运算符保存当前图形状态
page.getContents().add(new Operator.GSave());

// 创建矩形和矩阵对象
Rectangle rectangle = new Rectangle(lowerLeftX, lowerLeftY, upperRightX, upperRightY);
Matrix matrix = new Matrix(new double[] { rectangle.getURX() - rectangle.getLLX(), 0, 0, rectangle.getURY() - rectangle.getLLY(), rectangle.getLLX(), rectangle.getLLY() });

// 使用 ConcatenateMatrix(连接矩阵)运算符:定义图像必须如何放置
page.getContents().add(new Operator.ConcatenateMatrix(matrix));
XImage ximage = page.getResources().getImages().get_Item(page.getResources().getImages().size());

// 使用 Do 运算符:此运算符绘制图像
page.getContents().add(new Operator.Do(ximage.getName()));

// 使用 GRestore 运算符:此运算符恢复图形状态
page.getContents().add(new Operator.GRestore());

// 保存新的 PDF
pdfDocument1.save("Updated_document.pdf");

// 关闭图像流
imageStream.close();

用 Java 在 PDF 文件中创建表格

该表是一种以行和列的形式组织数据的好方法。 Aspose.PDF 让您可以非常轻松地在 PDF 文档中插入表格。以下是创建表的步骤。

  • 使用 Document 类加载源文件。
  • 初始化一个 Table 并设置它的列和行。
  • 设置表格的设置(例如边框)。
  • 通过向其中添加行来填充表。
  • 将表格添加到页面。
  • 保存 PDF 文件。

以下代码示例展示了如何使用 Java 在 PDF 文件中创建表格。

// 如需完整的示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// 加载源 PDF 文档
Document doc = new Document(dataDir + "input.pdf");
// 初始化表的新实例
Table table = new Table();
// 将表格边框颜色设置为 LightGray
table.setBorder(new BorderInfo(BorderSide.All, .5f, Color.getLightGray()));
// 设置表格单元格的边框
table.setDefaultCellBorder(new BorderInfo(BorderSide.All, .5f, Color.getLightGray()));
// 创建一个循环以添加 10 行
for (int row_count = 1; row_count < 10; row_count++) {
	// 向表中添加行
	Row row = table.getRows().add();
	// 添加表格单元格
	row.getCells().add("Column (" + row_count + ", 1)");
	row.getCells().add("Column (" + row_count + ", 2)");
	row.getCells().add("Column (" + row_count + ", 3)");
}
// 将表格对象添加到输入文档的第一页
doc.getPages().get_Item(1).getParagraphs().add(table);
// 保存包含表格对象的更新文档
doc.save(dataDir + "document_with_table.pdf");

用 Java 在 PDF 文件中创建表单

PDF 格式还支持添加表单以收集用户的输入。表单可能包含各种类型的字段,例如文本框、单选按钮等。以下步骤演示了如何在 PDF 文件中插入简单的表单。

以下代码示例显示了如何在 Java 中的 PDF 文件中创建表单。

// 如需完整的示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// 打开文档
Document pdfDocument = new Document("input.pdf");

// 创建一个字段
TextBoxField textBoxField1 = new TextBoxField(pdfDocument.getPages().get_Item(1), new Rectangle(100, 200, 300, 300));

// 设置字段名称
textBoxField1.setPartialName("textbox1");

// 设置字段值
textBoxField1.setValue("Text Box");

// 创建边框对象
Border border = new Border(textBoxField1);

// 设置边框宽度
border.setWidth(5);

// 设置边框破折号样式
border.setDash(new Dash(1, 1));

// 设置字段边框
textBoxField1.setBorder(border);

// 将字段添加到文档
pdfDocument.getForm().add(textBoxField1, 1);

// 保存修改后的 PDF
pdfDocument.save("output.pdf");

使用 此处 阅读有关表单字段的更多信息。

用Java在PDF文件中插入书签

以下是在 PDF 文件中添加书签的步骤。

  • 使用 Document 对象打开 PDF 文档。
  • 将文档大纲添加到 OutlineItemCollection 集合。
  • 设置目标页码。
  • 在文档的大纲集合中添加书签。
  • 保存 PDF 文件。

以下代码示例展示了如何使用 Java 在 PDF 中插入书签。

// 如需完整的示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// 打开源 PDF 文档
Document pdfDocument = new Document("input.pdf");

// 创建书签对象
OutlineItemCollection pdfOutline = new OutlineItemCollection(pdfDocument.getOutlines());
pdfOutline.setTitle("Test Outline");
pdfOutline.setItalic(true);
pdfOutline.setBold(true);

// 设置目标页码
pdfOutline.setAction(new GoToAction(pdfDocument.getPages().get_Item(1)));

// 在文档的大纲集合中添加书签。
pdfDocument.getOutlines().add(pdfOutline);

// 保存更新文档
pdfDocument.save("output.pdf");

获得免费许可证

您可以获得免费的临时许可证 以便在没有评估限制的情况下试用 API。

结论

在本文中,您学习了如何在 Java 中从头开始创建 PDF 文件。此外,Java 代码示例演示了如何在新的或现有的 PDF 文件中插入文本、图像、表格、表单和书签。您可以使用 documentation 探索有关 Java PDF API 的更多信息。

也可以看看