Chỉnh sửa siêu dữ liệu của tệp PDF bằng Java

Siêu dữ liệu của tài liệu chứa thông tin cơ bản về tài liệu dưới dạng thuộc tính như tiêu đề, tác giả, chủ đề, từ khóa, v.v. Nền tảng siêu dữ liệu mở rộng (XMP) là một tiêu chuẩn dựa trên XML để lưu trữ siêu dữ liệu tài liệu dưới dạng khóa/giá trị đôi. Chúng tôi có thể thêm, chỉnh sửa hoặc đọc thông tin tài liệu và siêu dữ liệu XMP của tài liệu PDF theo chương trình. Trong bài viết này, chúng ta sẽ tìm hiểu cách chỉnh sửa các thuộc tính và siêu dữ liệu PDF bằng Java.

Các chủ đề sau đây sẽ được đề cập trong bài viết này:

API Java để chỉnh sửa thuộc tính và siêu dữ liệu PDF

Để chỉnh sửa thông tin siêu dữ liệu và thuộc tính [PDF], chúng tôi sẽ sử dụng Aspose.PDF for Java API. Nó cho phép chúng tôi tạo, sửa đổi, chuyển đổi, hiển thị, bảo mật và in tài liệu được hỗ trợ mà không cần sử dụng Adobe Acrobat. Vui lòng tải xuống JAR của API hoặc thêm cấu hình pom.xml sau vào ứng dụng Java 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>22.3</version>
</dependency>

Chỉnh sửa thuộc tính PDF bằng Java

Chúng tôi có thể chỉnh sửa thông tin tài liệu PDF bằng cách sử dụng lớp PdfFileInfo đại diện cho siêu thông tin của tài liệu PDF. Chúng ta có thể đặt các thuộc tính được xác định trước khác nhau bằng cách thực hiện theo các bước dưới đây:

  1. Đầu tiên, tải tài liệu PDF bằng lớp PdfFileInfo.
  2. Đặt các thuộc tính khác nhau như Tác giả, Người tạo, Từ khóa, Chủ đề, Tiêu đề, v.v.
  3. Cuối cùng, lưu tệp PDF bằng phương thức saveNewInfo() với đường dẫn tệp đầu ra làm đối số.

Mẫu mã sau đây cho biết cách chỉnh sửa thuộc tính meta của tệp PDF bằng Java.

// Ví dụ mã này trình bày cách đặt thông tin cơ bản của tài liệu PDF.
// Tài liệu nguồn mở
PdfFileInfo fileInfo = new PdfFileInfo("D:\\Files\\PDF\\sample.pdf");

// Đặt thông tin PDF
fileInfo.setAuthor("Aspose");
fileInfo.setTitle("Editing Metadata");
fileInfo.setKeywords("Aspose.Pdf, DOM, API");
fileInfo.setSubject("PDF Information");
fileInfo.setCreator("Aspose");

// Lưu tập tin cập nhật
fileInfo.saveNewInfo("D:\\Files\\PDF\\Updated_Info_output.pdf");
Chỉnh sửa thuộc tính meta của tệp PDF trong Java.

Chỉnh sửa thuộc tính meta của tệp PDF trong Java.

Đọc thuộc tính PDF bằng Java

Chúng ta có thể đọc thông tin cơ bản của tài liệu PDF bằng cách thực hiện theo các bước dưới đây:

  1. Đầu tiên, tải tài liệu PDF bằng lớp PdfFileInfo.
  2. Cuối cùng, hiển thị thông tin tài liệu bằng cách đọc các giá trị của thuộc tính meta.

Mẫu mã sau đây cho biết cách lấy thuộc tính meta của tệp PDF bằng Java.

// Ví dụ mã này trình bày cách lấy thông tin cơ bản của tài liệu PDF.
// Mở tài liệu
PdfFileInfo fileInfo = new PdfFileInfo("D:\\Files\\PDF\\Updated_Info_output.pdf");

// Nhận thông tin PDF
System.out.println("Subject :" + fileInfo.getSubject());
System.out.println("Title :" + fileInfo.getTitle());
System.out.println("Keywords :" + fileInfo.getKeywords());
System.out.println("Creator :" + fileInfo.getCreator());
System.out.println("Creation Date :" + fileInfo.getCreationDate());
System.out.println("Modification Date :" + fileInfo.getModDate());

// Tìm xem đây có phải là bản PDF hợp lệ và nó cũng được mã hóa không
System.out.println("Is Valid PDF :" + fileInfo.isPdfFile());
// trường hợp file bị mã hóa bạn cần cung cấp mật khẩu mở file
// làm đối số thứ hai cho hàm tạo PdfFileInfo
System.out.println("Is Encrypted :" + fileInfo.isEncrypted());
Subject :PDF Information
Title :Editing Metadata
Keywords :Aspose.Pdf, DOM, API
Creator :Aspose
Creation Date :D:20170612160123-04'00'
Modification Date :D:20220405214422+05'00'
Is Valid PDF :true
Is Encrypted :false

Nhận siêu dữ liệu XMP của tệp PDF trong Java

Chúng tôi có thể đọc siêu dữ liệu XMP của tài liệu PDF bằng cách thực hiện theo các bước dưới đây:

  1. Đầu tiên, tải tài liệu PDF bằng lớp Tài liệu.
  2. Cuối cùng, đọc siêu dữ liệu bằng phương thức getItem() của lớp Metadata và trích xuất thông tin.

Mẫu mã sau đây cho biết cách lấy siêu dữ liệu XMP của tệp PDF bằng Java.

// Ví dụ về mã này trình bày cách lấy siêu dữ liệu XMP của tài liệu PDF.
// Mở tài liệu
Document pdfDocument = new Document("D:\\Files\\PDF\\SetXMPMetadata.pdf");

// Nhận thuộc tính
System.out.println("xmp:CreateDate: " + pdfDocument.getMetadata().get_Item("xmp:CreateDate"));
System.out.println("xmp:Nickname: " + pdfDocument.getMetadata().get_Item("xmp:Nickname"));
System.out.println("xmp:CustomProperty: " + pdfDocument.getMetadata().get_Item("xmp:CustomProperty"));
xmp:CreateDate : 2022-04-05T10:05:24.4
xmp:Nickname : Nickname
xmp:CustomProperty : Custom Value

Đặt siêu dữ liệu XMP trong tệp PDF trong Java

Chúng tôi có thể đặt siêu dữ liệu XMP trong tệp PDF bằng cách thực hiện theo các bước được đưa ra bên dưới:

  1. Đầu tiên, tải tài liệu PDF bằng lớp Tài liệu.
  2. Tiếp theo, đặt giá trị siêu dữ liệu bằng phương thức setItem() của lớp Metadata.
  3. Cuối cùng, lưu tệp PDF bằng phương thức Document.save() với đường dẫn tệp đầu ra làm đối số.

Mẫu mã sau đây cho biết cách đặt siêu dữ liệu XMP của tệp PDF bằng Java.

// Ví dụ mã này trình bày cách đặt siêu dữ liệu XMP của tài liệu PDF.
// Mở tài liệu
Document pdfDocument = new Document("D:\\Files\\PDF\\sample.pdf");

// Đặt thuộc tính
pdfDocument.getMetadata().set_Item("xmp:CreateDate", new XmpValue(new java.util.Date()));
pdfDocument.getMetadata().set_Item("xmp:Nickname", new XmpValue("Nickname"));
pdfDocument.getMetadata().set_Item("xmp:CustomProperty", new XmpValue("Custom Value"));

// Lưu tài liệu
pdfDocument.save("D:\\Files\\PDF\\SetXMPMetadata.pdf");

Tùy chỉnh không gian tên siêu dữ liệu XMP trong tệp PDF

Chúng tôi có thể đặt URI không gian tên tùy chỉnh thay vì thông số XMP đã xác định trong tệp PDF. Với mục đích này, API cung cấp phương thức registerNamespaceUri trong lớp Siêu dữ liệu. Chúng ta có thể tạo một không gian tên siêu dữ liệu mới có tiền tố bằng cách thực hiện theo các bước dưới đây:

  1. Đầu tiên, tải tài liệu PDF bằng lớp Tài liệu.
  2. Tiếp theo, gọi phương thức registerNamespaceUri() với tiền tố và URI vùng tên làm đối số.
  3. Sau đó, đặt giá trị siêu dữ liệu bằng phương thức setItem().
  4. Cuối cùng, lưu tệp PDF bằng phương thức Document.Save() với đường dẫn tệp đầu ra làm đối số.

Mẫu mã sau đây cho biết cách đặt không gian tên siêu dữ liệu tùy chỉnh trong tệp PDF bằng Java.

// Ví dụ mã này trình bày cách đặt siêu dữ liệu XMP tùy chỉnh của tài liệu PDF.
// Mở tài liệu
Document pdfDocument = new Document("D:\\Files\\PDF\\sample.pdf");

// Đặt thuộc tính tùy chỉnh
pdfDocument.getMetadata().registerNamespaceUri("myown", "http:// myown.xyz.com/xap/1.0/");
pdfDocument.getMetadata().set_Item("myown:ModifyDate", new XmpValue(new java.util.Date()));
pdfDocument.getMetadata().set_Item("myown:CreateDate", new XmpValue(new java.util.Date()));
pdfDocument.getMetadata().set_Item("myown:DeveloperName", new XmpValue("Developer Name"));
pdfDocument.getMetadata().set_Item("myown:MyProperty", new XmpValue("My Custom Value"));

// Lưu tài liệu
pdfDocument.save("D:\\Files\\PDF\\CustomizedXMPMetadata.pdf");

Chúng ta có thể đọc các thuộc tính siêu dữ liệu XMP tùy chỉnh bằng cách làm theo các bước được đề cập trước đó.

NamespaceUri: http:// myown.xyz.com/xap/1.0/
myown:ModifyDate: 2022-04-05T10:18:45.9
myown:CreateDate: 2022-04-05T10:18:45.9
myown:DeveloperName: Developer Name
myown:MyProperty: My Custom Value

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

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

Phần kết luận

Trong bài viết này, chúng ta đã học được cách:

  • thêm/chỉnh sửa thông tin cơ bản của tài liệu PDF bằng Java;
  • đặt/lấy siêu dữ liệu XMP trong tệp PDF bằng Java;
  • đặt URI không gian tên siêu dữ liệu tùy chỉnh bằng tiền tố.

Ngoài ra, bạn có thể tìm hiểu thêm về Aspose.PDF dành cho API Java bằng tài liệu. Trong trường hợp có bất kỳ sự mơ hồ nào, vui lòng liên hệ với chúng tôi trên diễn đàn.

Xem thêm