在本文中,您将学习如何在 Java 中以编程方式从头开始创建 PDF 文件。
PDF 已成为创建不同类型文档的常用文件格式。各个行业都采用 PDF 自动化来生成文档,例如收据、发票、业务报告等。密切关注此类场景,本文介绍了如何使用 Java 创建 PDF 文件。代码示例将演示如何从头开始创建 PDF 文件,并使用 Java 在该 PDF 中插入文本、图像、表格和其他元素。
- 用于创建 PDF 文件的 Java API
- 使用 Java 创建 PDF 文件
- 在 PDF 文件中应用文本格式
- 在 PDF 文件中插入图像
- 在 PDF 文件中创建表格
- 在 PDF 文件中添加表单
- 在 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 文件并在其中插入一段文本的步骤。
- 创建 Document 类的实例。
- 使用 Document.getPages().add() 方法添加一个新页面,并在 Page 对象中获取它的引用。
- 使用 Page.getParagraphs().add(new TextFragment(“Hello World!”)) 方法向页面添加文本。
- 使用 Document.save(String) 方法保存 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() 集合中。
- 使用运算符将图像放置在页面上:
- 保存 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 文档中插入表格。以下是创建表的步骤。
以下代码示例展示了如何使用 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 文件中插入简单的表单。
- 加载 PDF 文档或使用 Document 类创建一个新文档。
- 创建要添加的表单域,例如 TextBoxField。
- 设置字段的属性。
- 使用 pdfDocument.getForm().add(Field, Int) 方法将字段添加到 PDF 的 Form。
- 保存 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 的更多信息。