在本文中,您將學習如何使用 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 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 文件中插入簡單表單。
- 使用 Document 類加載 PDF 文檔或創建一個新文檔。
- 創建要添加的表單域,例如 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 文件中插入文本、圖像、表格、表單和書籤。您可以使用 文檔 探索有關 Java PDF API 的更多信息。