在本文中,您將學習如何使用 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 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 文件中插入文本、圖像、表格、表單和書籤。您可以使用 文檔 探索有關 Java PDF API 的更多信息。

也可以看看