Trong bài viết này, bạn sẽ tìm hiểu cách tạo tệp PDF từ đầu bằng lập trình trong Java.

Tạo tài liệu PDF bằng Java

PDF đã trở thành định dạng tệp được sử dụng phổ biến để tạo các loại tài liệu khác nhau. Nhiều ngành khác nhau đã áp dụng tính năng tự động hóa PDF để tạo tài liệu chẳng hạn như biên lai, hóa đơn, báo cáo kinh doanh, v.v. Theo dõi các tình huống như vậy, bài viết này đề cập đến cách tạo tệp PDF trong Java. Các mẫu mã sẽ trình bày cách tạo tệp PDF từ đầu và chèn văn bản, hình ảnh, bảng và các thành phần khác vào tệp PDF đó bằng Java.

API Java để tạo PDF - Tải xuống miễn phí

Aspose.PDF for Java là API thao tác tệp PDF giúp bạn tạo tệp PDF từ bên trong các ứng dụng Java. Sử dụng API, bạn có thể tạo các tài liệu PDF đơn giản cũng như phức tạp. Có thể tải xuống Aspose.PDF for Java dưới dạng JAR hoặc cài đặt trong các ứng dụng dựa trên 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>

Tạo tệp PDF trong Java

Sau đây là các bước để tạo một tệp PDF đơn giản từ đầu và chèn một đoạn văn bản vào đó.

Mẫu mã sau đây cho biết cách tạo tệp PDF bằng Java.

// Để biết các ví dụ đầy đủ và tệp dữ liệu, vui lòng truy cập https://github.com/aspose-pdf/Aspose.PDF-for-Java
// Khởi tạo đối tượng tài liệu
Document document = new Document();
 
//Thêm trang
Page page = document.getPages().add();
 
// Thêm văn bản vào trang mới
page.getParagraphs().add(new TextFragment("Hello World!"));
 
// Lưu bản PDF đã cập nhật
document.save("HelloWorld_out.pdf");

Tạo tệp PDF với định dạng văn bản trong Java

Bây giờ chúng ta hãy xem cách áp dụng định dạng cho văn bản trong tài liệu PDF. Định dạng văn bản có thể bao gồm phông chữ, cỡ chữ, màu sắc, vị trí, v.v. Sau đây là các bước để thực hiện thao tác này.

  • Sử dụng lớp Document để tạo tài liệu PDF mới hoặc tải tài liệu hiện có.
  • Truy cập Trang mà bạn muốn đặt văn bản.
  • Tạo đối tượng TextFragment để đặt văn bản và các tùy chọn định dạng khác như vị trí, phông chữ, màu sắc, kích thước, v.v.
  • Sử dụng lớp TextBuilder để thêm đối tượng TextFragment vào trang.
  • Sử dụng phương pháp Document.save(String) để lưu tài liệu PDF.

Mẫu mã sau đây cho biết cách tạo tệp PDF và áp dụng định dạng văn bản bằng Java.

// Tải tài liệu PDF
Document document = new Document();

// Thêm trang
Page page = document.getPages().add();

// Tạo đoạn văn bản
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));

// Đặt thuộc tính văn bản
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);

// Tạo màu mới với không gian màu mẫu
Color color = new Color();
color.setPatternColorSpace(new GradientAxialShading(Color.getRed(), Color.getBlue()));		
textFragment1.getTextState().setForegroundColor(color);

// Tạo đối tượng TextBuilder
TextBuilder textBuilder = new TextBuilder(page);

// Nối các đoạn văn bản vào trang PDF
textBuilder.appendText(textFragment);
textBuilder.appendText(textFragment1);

// Lưu tài liệu PDF
document.save("Generated-PDF.pdf");

Java Tạo tệp PDF bằng hình ảnh

Sau đây là các bước để chèn hình ảnh vào tệp PDF bằng Aspose.PDF for Java.

  • Tạo đối tượng Document để tạo hoặc mở tài liệu PDF.
  • Lấy trang mà bạn muốn thêm hình ảnh vào trong đối tượng Trang.
  • Thêm hình ảnh vào bộ sưu tập Page.getResources().
  • Sử dụng toán tử để đặt hình ảnh trên trang:
    • GSSave operator to save the current graphical state.
    • nối ma trận operator to specify where the image is to be placed.
    • Làm operator to draw the image on the page.
    • Cuối cùng, sử dụng toán tử GRestore để lưu trạng thái đồ họa đã cập nhật.
  • Lưu tệp PDF.

Mẫu mã sau đây cho biết cách chèn hình ảnh vào tệp PDF trong Java.

// Để biết các ví dụ đầy đủ và tệp dữ liệu, vui lòng truy cập https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// Mở một tài liệu
Document pdfDocument1 = new Document("input.pdf");

// Đặt tọa độ
int lowerLeftX = 100;
int lowerLeftY = 100;
int upperRightX = 200;
int upperRightY = 200;

// Nhận trang bạn muốn thêm hình ảnh vào
Page page = pdfDocument1.getPages().get_Item(1);

// Tải hình ảnh vào luồng
java.io.FileInputStream imageStream = new java.io.FileInputStream(new java.io.File("input_image1.jpg"));

// Thêm hình ảnh vào bộ sưu tập Hình ảnh của tài nguyên trang
page.getResources().getImages().add(imageStream);

// Sử dụng toán tử GSave: toán tử này lưu trạng thái đồ họa hiện tại
page.getContents().add(new Operator.GSave());

// Tạo các đối tượng Hình chữ nhật và Ma trận
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() });

// Sử dụng toán tử ConcatenateMatrix (ma trận nối): xác định cách đặt hình ảnh
page.getContents().add(new Operator.ConcatenateMatrix(matrix));
XImage ximage = page.getResources().getImages().get_Item(page.getResources().getImages().size());

// Sử dụng toán tử Do: toán tử này vẽ hình ảnh
page.getContents().add(new Operator.Do(ximage.getName()));

// Sử dụng toán tử GRestore: toán tử này khôi phục trạng thái đồ họa
page.getContents().add(new Operator.GRestore());

// Lưu tệp PDF mới
pdfDocument1.save("Updated_document.pdf");

// Đóng luồng hình ảnh
imageStream.close();

Tạo một bảng trong tệp PDF trong Java

Bảng là một cách tốt để tổ chức dữ liệu ở dạng hàng và cột. Aspose.PDF cho phép bạn chèn bảng vào tài liệu PDF khá dễ dàng. Sau đây là các bước để tạo một bảng.

  • Tải tệp nguồn bằng lớp Document.
  • Khởi tạo Bảng và đặt các cột và hàng của nó.
  • Đặt cài đặt của bảng (ví dụ: đường viền).
  • Điền vào bảng bằng cách thêm các hàng vào đó.
  • Thêm bảng vào một trang.
  • Lưu tệp PDF.

Mẫu mã sau đây cho biết cách tạo bảng trong tệp PDF bằng Java.

// Để biết các ví dụ đầy đủ và tệp dữ liệu, vui lòng truy cập https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// Tải tài liệu PDF nguồn
Document doc = new Document(dataDir + "input.pdf");
// Khởi tạo một thể hiện mới của Bảng
Table table = new Table();
// Đặt màu đường viền bảng là LightGray
table.setBorder(new BorderInfo(BorderSide.All, .5f, Color.getLightGray()));
// đặt đường viền cho các ô của bảng
table.setDefaultCellBorder(new BorderInfo(BorderSide.All, .5f, Color.getLightGray()));
// tạo một vòng lặp để thêm 10 hàng
for (int row_count = 1; row_count < 10; row_count++) {
	// thêm hàng vào bảng
	Row row = table.getRows().add();
	// thêm ô bảng
	row.getCells().add("Column (" + row_count + ", 1)");
	row.getCells().add("Column (" + row_count + ", 2)");
	row.getCells().add("Column (" + row_count + ", 3)");
}
// Thêm đối tượng bảng vào trang đầu tiên của tài liệu đầu vào
doc.getPages().get_Item(1).getParagraphs().add(table);
// Lưu tài liệu đã cập nhật có chứa đối tượng bảng
doc.save(dataDir + "document_with_table.pdf");

Tạo biểu mẫu trong tệp PDF trong Java

Định dạng PDF cũng hỗ trợ thêm biểu mẫu để thu thập thông tin đầu vào từ người dùng. Biểu mẫu có thể chứa nhiều loại trường khác nhau, chẳng hạn như hộp văn bản, nút radio, v.v. Các bước sau đây trình bày cách chèn một biểu mẫu đơn giản vào tệp PDF.

Mẫu mã sau đây cho biết cách tạo biểu mẫu trong tệp PDF bằng Java.

// Để biết các ví dụ đầy đủ và tệp dữ liệu, vui lòng truy cập https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// Mở một tài liệu
Document pdfDocument = new Document("input.pdf");

// Tạo một trường
TextBoxField textBoxField1 = new TextBoxField(pdfDocument.getPages().get_Item(1), new Rectangle(100, 200, 300, 300));

// Đặt tên trường
textBoxField1.setPartialName("textbox1");

// Đặt giá trị trường
textBoxField1.setValue("Text Box");

// Tạo đối tượng viền
Border border = new Border(textBoxField1);

// Đặt chiều rộng đường viền
border.setWidth(5);

// Đặt kiểu gạch ngang đường viền
border.setDash(new Dash(1, 1));

// Đặt đường viền trường
textBoxField1.setBorder(border);

// Thêm trường vào tài liệu
pdfDocument.getForm().add(textBoxField1, 1);

// Lưu tệp PDF đã sửa đổi
pdfDocument.save("output.pdf");

Đọc thêm về các trường biểu mẫu bằng cách sử dụng tại đây.

Chèn dấu trang vào tệp PDF trong Java

Sau đây là các bước để thêm dấu trang trong tệp PDF.

  • Mở tài liệu PDF bằng đối tượng Document.
  • Thêm đường viền tài liệu vào bộ sưu tập OutlineItemCollection.
  • Đặt số trang đích.
  • Thêm dấu trang vào bộ sưu tập phác thảo của tài liệu.
  • Lưu tệp PDF.

Mẫu mã sau đây cho biết cách chèn dấu trang trong PDF bằng Java.

// Để biết các ví dụ đầy đủ và tệp dữ liệu, vui lòng truy cập https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// Mở tài liệu PDF nguồn
Document pdfDocument = new Document("input.pdf");

// Tạo một đối tượng đánh dấu
OutlineItemCollection pdfOutline = new OutlineItemCollection(pdfDocument.getOutlines());
pdfOutline.setTitle("Test Outline");
pdfOutline.setItalic(true);
pdfOutline.setBold(true);

// Đặt số trang đích
pdfOutline.setAction(new GoToAction(pdfDocument.getPages().get_Item(1)));

// Thêm một dấu trang trong bộ sưu tập phác thảo của tài liệu.
pdfDocument.getOutlines().add(pdfOutline);

// Lưu tài liệu cập nhật
pdfDocument.save("output.pdf");

Nhận giấy phép miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí để dùng thử API mà không bị giới hạn đánh giá.

Sự kết luận

Trong bài viết này, bạn đã học cách tạo các tệp PDF từ đầu trong Java. Ngoài ra, các mẫu mã Java đã trình bày cách chèn văn bản, hình ảnh, bảng, biểu mẫu và dấu trang vào tệp PDF mới hoặc tệp PDF hiện có. Bạn có thể khám phá thêm về Java PDF API bằng cách sử dụng tài liệu.

Xem thêm