PDFBox - Hướng dẫn nhanh
Định dạng Tài liệu Di động (PDF) là một định dạng tệp giúp trình bày dữ liệu theo cách độc lập với phần mềm Ứng dụng, phần cứng và hệ điều hành.
Mỗi tệp PDF chứa mô tả của một tài liệu phẳng có bố cục cố định, bao gồm văn bản, phông chữ, đồ họa và thông tin khác cần thiết để hiển thị nó.
Có một số thư viện có sẵn để tạo và thao tác tài liệu PDF thông qua các chương trình, chẳng hạn như -
Adobe PDF Library - Thư viện này cung cấp API bằng các ngôn ngữ như C ++, .NET và Java và sử dụng nó, chúng ta có thể chỉnh sửa, xem bản in và trích xuất văn bản từ các tài liệu PDF.
Formatting Objects Processor- Bộ định dạng in mã nguồn mở được điều khiển bởi Đối tượng Định dạng XSL và một bộ định dạng độc lập đầu ra. Mục tiêu đầu ra chính là PDF.
iText - Thư viện này cung cấp API bằng các ngôn ngữ như Java, C # và các ngôn ngữ .NET khác và sử dụng thư viện này, chúng ta có thể tạo và thao tác các tài liệu PDF, RTF và HTML.
JasperReports - Đây là một công cụ báo cáo Java tạo báo cáo trong tài liệu PDF bao gồm Microsoft Excel, RTF, ODT, các giá trị được phân tách bằng dấu phẩy và các tệp XML.
PDFBox là gì
Apache PDFBox là một thư viện Java mã nguồn mở hỗ trợ phát triển và chuyển đổi các tài liệu PDF. Sử dụng thư viện này, bạn có thể phát triển các chương trình Java để tạo, chuyển đổi và thao tác các tài liệu PDF.
Ngoài ra, PDFBox cũng bao gồm một tiện ích dòng lệnh để thực hiện các hoạt động khác nhau trên PDF bằng cách sử dụng tệp Jar có sẵn.
Các tính năng của PDFBox
Sau đây là các tính năng đáng chú ý của PDFBox -
Extract Text - Sử dụng PDFBox, bạn có thể trích xuất văn bản Unicode từ các tệp PDF.
Split & Merge - Sử dụng PDFBox, bạn có thể chia một tệp PDF thành nhiều tệp và hợp nhất chúng lại thành một tệp duy nhất.
Fill Forms - Sử dụng PDFBox, bạn có thể điền dữ liệu biểu mẫu vào một tài liệu.
Print - Sử dụng PDFBox, bạn có thể in tệp PDF bằng API in Java tiêu chuẩn.
Save as Image - Sử dụng PDFBox, bạn có thể lưu PDF dưới dạng tệp hình ảnh, chẳng hạn như PNG hoặc JPEG.
Create PDFs - Sử dụng PDFBox, bạn có thể tạo một tệp PDF mới bằng cách tạo các chương trình Java và bạn cũng có thể bao gồm hình ảnh và phông chữ.
Signing- Sử dụng PDFBox, bạn có thể thêm chữ ký điện tử vào tệp PDF.
Các ứng dụng của PDFBox
Sau đây là các ứng dụng của PDFBox -
Apache Nutch- Apache Nutch là một phần mềm tìm kiếm trên web mã nguồn mở. Nó được xây dựng trên Apache Lucene, thêm các thông tin cụ thể về web, chẳng hạn như trình thu thập thông tin, cơ sở dữ liệu biểu đồ liên kết, trình phân tích cú pháp cho HTML và các định dạng tài liệu khác, v.v.
Apache Tika - Apache Tika là một bộ công cụ để phát hiện và trích xuất siêu dữ liệu và nội dung văn bản có cấu trúc từ các tài liệu khác nhau bằng cách sử dụng các thư viện phân tích cú pháp hiện có.
Các thành phần của PDFBox
Sau đây là bốn thành phần chính của PDFBox:
PDFBox- Đây là phần chính của PDFBox. Điều này chứa các lớp và giao diện liên quan đến việc khai thác và thao tác nội dung.
FontBox - Phần này chứa các lớp và giao diện liên quan đến phông chữ, và sử dụng các lớp này, chúng ta có thể sửa đổi phông chữ của văn bản của tài liệu PDF.
XmpBox - Phần này chứa các lớp và giao diện xử lý siêu dữ liệu XMP.
Preflight - Thành phần này được sử dụng để xác minh các tệp PDF theo tiêu chuẩn PDF / A-1b.
Cài đặt PDFBox
Sau đây là các bước để tải xuống Apache PDFBox -
Step 1 - Mở trang chủ của Apache PDFBox bằng cách nhấp vào liên kết sau - https://pdfbox.apache.org/
Step 2 - Liên kết trên sẽ dẫn bạn đến trang chủ như trong ảnh chụp màn hình sau -
Step 3 - Bây giờ, hãy nhấp vào Downloadsliên kết được đánh dấu trong ảnh chụp màn hình ở trên. Khi nhấp vào, bạn sẽ được dẫn đến trang tải xuống của PDFBox như được hiển thị trong ảnh chụp màn hình sau.
Step 4- Trong trang Tải xuống, bạn sẽ có các liên kết cho PDFBox. Nhấp vào liên kết tương ứng để biết bản phát hành mới nhất. Ví dụ: chúng tôi đang chọnPDFBox 2.0.1 và khi nhấp vào đây, bạn sẽ được chuyển hướng đến các tệp jar cần thiết như được hiển thị trong ảnh chụp màn hình sau.
Step 5 - Tải xuống các tệp jar pdfbox-2.0.1.jar, fontbox-2.0.1.jar, preflight-2.0.1.jar, xmpbox-2.0.1.jar và pdfbox-tools-2.0.1.jar.
Cài đặt Eclipse
Sau khi tải xuống các tệp jar cần thiết, bạn phải nhúng các tệp JAR này vào môi trường Eclipse của mình. Bạn có thể thực hiện việc này bằng cách đặt đường dẫn Xây dựng đến các tệp JAR này và bằng cách sử dụngpom.xml.
Đặt đường dẫn xây dựng
Sau đây là các bước để cài đặt PDFBox trong Eclipse -
Step 1- Đảm bảo rằng bạn đã cài đặt Eclipse trong hệ thống của mình. Nếu không, hãy tải xuống và cài đặt Eclipse trong hệ thống của bạn.
Step 2 - Mở Eclipse, nhấp vào Tệp, Mới và Mở một dự án mới như thể hiện trong ảnh chụp màn hình sau.
Step 3 - Khi chọn dự án, bạn sẽ nhận được New ProjectThuật sĩ. Trong trình hướng dẫn này, hãy chọn dự án Java và tiếp tục bằng cách nhấp vàoNext như được hiển thị trong ảnh chụp màn hình sau.
Step 4 - Khi tiếp tục về phía trước, bạn sẽ được chuyển hướng đến New Java Project wizard. Tạo một dự án mới và nhấp vàoNext như thể hiện trong ảnh chụp màn hình sau.
Step 5- Sau khi tạo một dự án mới, nhấp chuột phải vào nó; lựa chọnBuild Path và nhấp vào Configure Build Path… như thể hiện trong ảnh chụp màn hình sau.
Step 6 - Khi nhấp vào Build Path tùy chọn bạn sẽ được chuyển hướng đến Java Build Path wizard. ChọnAdd External JARs như thể hiện trong ảnh chụp màn hình sau.
Step 7 - Chọn các tệp jar fontbox-2.0.1.jar, pdfbox-2.0.1.jar, pdfbox-tools-2.0.1.jar, preflight-2.0.1.jar, xmpbox-2.0.1.jar như thể hiện trong ảnh chụp màn hình sau.
Step 8 - Khi nhấp vào Open trong ảnh chụp màn hình ở trên, các tệp đó sẽ được thêm vào thư viện của bạn như được hiển thị trong ảnh chụp màn hình sau.
Step 9 - Khi nhấp vào OK, bạn sẽ thêm thành công các tệp JAR cần thiết vào dự án hiện tại và bạn có thể xác minh các thư viện đã thêm này bằng cách mở rộng Thư viện được tham chiếu như được hiển thị trong ảnh chụp màn hình sau.
Sử dụng pom.xml
Chuyển đổi dự án thành dự án maven và thêm các nội dung sau vào pom.xml.
<project xmlns="https://maven.apache.org/POM/4.0.0"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my_project</groupId>
<artifactId>my_project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>jempbox</artifactId>
<version>1.8.11</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>xmpbox</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>preflight</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox-tools</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
</project>
Bây giờ chúng ta hãy hiểu cách tạo tài liệu PDF bằng thư viện PDFBox.
Tạo tài liệu PDF trống
Bạn có thể tạo một Tài liệu PDF trống bằng cách khởi tạo PDDocumentlớp học. Bạn có thể lưu tài liệu ở vị trí mong muốn của mình bằng cách sử dụngSave() phương pháp.
Sau đây là các bước để tạo một tài liệu PDF trống.
Bước 1: Tạo tài liệu trống
Các PDDocument lớp thuộc về gói org.apache.pdfbox.pdmodel, là bản trình bày Trong bộ nhớ của PDFDocument. Do đó, bằng cách khởi tạo lớp này, bạn có thể tạo một Tài liệu PDF trống như được hiển thị trong khối mã sau.
PDDocument document = new PDDocument();
Bước 2: Lưu tài liệu
Sau khi tạo tài liệu, bạn cần lưu tài liệu này theo đường dẫn mong muốn, bạn có thể làm như vậy bằng cách sử dụng Save() phương pháp của PDDocumentlớp học. Phương thức này chấp nhận một giá trị chuỗi, đại diện cho đường dẫn mà bạn muốn lưu trữ tài liệu, dưới dạng một tham số. Sau đây là nguyên mẫu của phương thức save () củaPDDocument lớp học.
document.save("Path");
Bước 3: Đóng tài liệu
Khi nhiệm vụ của bạn hoàn thành, cuối cùng, bạn cần đóng PDDocument đối tượng sử dụng close ()phương pháp. Sau đây là nguyên mẫu của phương thức close () củaPDDocument lớp học.
document.close();
Thí dụ
Ví dụ này minh họa việc tạo Tài liệu PDF. Ở đây, chúng tôi sẽ tạo một chương trình Java để tạo một tài liệu PDF có tênmy_doc.pdf và lưu nó trong đường dẫn C:/PdfBox_Examples/. Lưu mã này trong một tệp có tênDocument_Creation.java.
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
public class Document_Creation {
public static void main (String args[]) throws IOException {
//Creating PDF document object
PDDocument document = new PDDocument();
//Saving the document
document.save("C:/PdfBox_Examples/my_doc.pdf");
System.out.println("PDF created");
//Closing the document
document.close();
}
}
Biên dịch và thực thi tệp Java đã lưu từ dấu nhắc lệnh bằng các lệnh sau.
javac Document_Creation.java
java Document_Creation
Khi thực hiện, chương trình trên sẽ tạo một tài liệu PDF hiển thị thông báo sau.
PDF created
Nếu bạn xác minh đường dẫn được chỉ định, bạn có thể tìm thấy tài liệu PDF đã tạo như hình bên dưới.
Vì đây là một tài liệu trống, nếu bạn cố gắng mở tài liệu này, điều này sẽ cung cấp cho bạn một lời nhắc hiển thị thông báo lỗi như được hiển thị trong ảnh chụp màn hình sau.
Trong chương trước, chúng ta đã biết cách tạo tài liệu PDF. Sau khi tạo tài liệu PDF, bạn cần thêm các trang vào tài liệu đó. Bây giờ chúng ta hãy hiểu cách thêm trang trong tài liệu PDF.
Thêm trang vào tài liệu PDF
Bạn có thể tạo một trang trống bằng cách khởi tạo PDPage và thêm nó vào tài liệu PDF bằng cách sử dụng addPage() phương pháp của PDDocument lớp học.
Sau đây là các bước để tạo một tài liệu trống và thêm các trang vào đó.
Bước 1: Tạo tài liệu trống
Tạo một tài liệu PDF trống bằng cách khởi tạo PDDocument lớp như hình bên dưới.
PDDocument document = new PDDocument();
Bước 2: Tạo trang trống
Các PDPage lớp đại diện cho một trang trong PDF do đó, bạn có thể tạo một trang trống bằng cách khởi tạo lớp này như được hiển thị trong khối mã sau.
PDPage my_page = new PDPage();
Bước 3: Thêm trang vào tài liệu
Bạn có thể thêm một trang vào tài liệu PDF bằng cách sử dụng addPage() phương pháp của PDDocumentlớp học. Đối với phương thức này, bạn cần chuyển đối tượng PDPage làm tham số.
Do đó, hãy thêm trang trống đã tạo ở bước trước vào đối tượng PDDocument như được hiển thị trong khối mã sau.
document.addPage(my_page);
Bằng cách này, bạn có thể thêm bao nhiêu trang tùy ý vào tài liệu PDF.
Bước 4: Lưu tài liệu
Sau khi thêm tất cả các trang, hãy lưu tài liệu PDF bằng cách sử dụng save() phương pháp của PDDocument lớp như được hiển thị trong khối mã sau.
document.save("Path");
Bước 5: Đóng tài liệu
Cuối cùng đóng tài liệu bằng cách sử dụng close() phương pháp của PDDocument lớp như hình bên dưới.
document.close();
Thí dụ
Ví dụ này trình bày cách tạo Tài liệu PDF và thêm các trang vào đó. Ở đây chúng tôi sẽ tạo một Tài liệu PDF có tênmy_doc.pdf và thêm 10 trang trống vào nó, và lưu nó trong đường dẫn C:/PdfBox_Examples/. Lưu mã này trong một tệp có tênAdding_pages.java.
package document;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
public class Adding_Pages {
public static void main(String args[]) throws IOException {
//Creating PDF document object
PDDocument document = new PDDocument();
for (int i=0; i<10; i++) {
//Creating a blank page
PDPage blankPage = new PDPage();
//Adding the blank page to the document
document.addPage( blankPage );
}
//Saving the document
document.save("C:/PdfBox_Examples/my_doc.pdf");
System.out.println("PDF created");
//Closing the document
document.close();
}
}
Biên dịch và thực thi tệp Java đã lưu từ dấu nhắc lệnh bằng các lệnh sau:
javac Adding_pages.java
java Adding_pages
Khi thực hiện, chương trình trên sẽ tạo một tài liệu PDF với các trang trống hiển thị thông báo sau:
PDF created
Nếu bạn xác minh đường dẫn được chỉ định, bạn có thể tìm thấy tài liệu PDF đã tạo như trong ảnh chụp màn hình sau.
Trong các ví dụ trước, bạn đã thấy cách tạo một tài liệu mới và thêm các trang vào đó. Chương này hướng dẫn bạn cách tải tài liệu PDF đã tồn tại trong hệ thống của bạn và thực hiện một số thao tác trên tài liệu đó.
Tải tài liệu PDF hiện có
Các load() phương pháp của PDDocumentlớp được sử dụng để tải một tài liệu PDF hiện có. Làm theo các bước dưới đây để tải tài liệu PDF hiện có.
Bước 1: Tải tài liệu PDF hiện có
Tải tài liệu PDF hiện có bằng phương pháp tĩnh load() sau đó PDDocumentlớp học. Phương thức này chấp nhận một đối tượng tệp như một tham số, vì đây là một phương thức tĩnh nên bạn có thể gọi nó bằng cách sử dụng tên lớp như hình dưới đây.
File file = new File("path of the document")
PDDocument.load(file);
Bước 2: Thực hiện các thao tác bắt buộc
Thực hiện các thao tác cần thiết như thêm trang thêm văn bản, thêm hình ảnh vào tài liệu đã tải.
Bước 3: Lưu tài liệu
Sau khi thêm tất cả các trang, hãy lưu tài liệu PDF bằng cách sử dụng save() phương pháp của PDDocument lớp như được hiển thị trong khối mã sau.
document.save("Path");
Bước 4: Đóng tài liệu
Cuối cùng đóng tài liệu bằng cách sử dụng close() phương pháp của PDDocument lớp như hình bên dưới.
document.close();
Thí dụ
Giả sử chúng ta có một tài liệu PDF chứa một trang, trong đường dẫn, C:/PdfBox_Examples/ như thể hiện trong ảnh chụp màn hình sau.
Ví dụ này trình bày cách tải một Tài liệu PDF hiện có. Tại đây, chúng tôi sẽ tải tài liệu PDFsample.pdf hiển thị ở trên, hãy thêm một trang vào nó và lưu nó vào cùng một đường dẫn với cùng tên.
Step 1 - Lưu mã này trong một tệp có tên LoadingExistingDocument.java.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
public class LoadingExistingDocument {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
System.out.println("PDF loaded");
//Adding a blank page to the document
document.addPage(new PDPage());
//Saving the document
document.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
document.close();
}
}
Biên dịch và thực thi tệp Java đã lưu từ dấu nhắc lệnh bằng các lệnh sau
javac LoadingExistingDocument.java
java LoadingExistingDocument
Khi thực thi, chương trình trên sẽ tải tài liệu PDF được chỉ định và thêm một trang trống vào đó hiển thị thông báo sau.
PDF loaded
Nếu bạn xác minh đường dẫn được chỉ định, bạn có thể tìm thấy một trang bổ sung được thêm vào tài liệu PDF được chỉ định như hình dưới đây.
Bây giờ chúng ta hãy tìm hiểu cách xóa các trang khỏi tài liệu PDF.
Xóa các trang khỏi tài liệu hiện có
Bạn có thể xóa một trang khỏi tài liệu PDF hiện có bằng cách sử dụng removePage() phương pháp của PDDocument lớp học.
Bước 1: Tải tài liệu PDF hiện có
Tải tài liệu PDF hiện có bằng phương pháp tĩnh load() sau đó PDDocumentlớp học. Phương thức này chấp nhận một đối tượng tệp như một tham số, vì đây là một phương thức tĩnh nên bạn có thể gọi nó bằng cách sử dụng tên lớp như hình dưới đây.
File file = new File("path of the document")
PDDocument.load(file);
Bước 2: Liệt kê số lượng trang
Bạn có thể liệt kê số lượng trang tồn tại trong tài liệu PDF bằng cách sử dụng getNumberOfPages() như hình dưới đây.
int noOfPages= document.getNumberOfPages();
System.out.print(noOfPages);
Bước 3: Xóa Trang
Bạn có thể xóa một trang khỏi tài liệu PDF bằng cách sử dụng removePage() phương pháp của PDDocumentlớp học. Đối với phương pháp này, bạn cần chuyển chỉ mục của trang sẽ bị xóa.
Trong khi chỉ định chỉ mục cho các trang trong tài liệu PDF, hãy nhớ rằng việc lập chỉ mục của các trang này bắt đầu từ 0, tức là nếu bạn muốn xóa trang thứ nhất thì giá trị chỉ mục cần bằng 0.
document.removePage(2);
Bước 4: Lưu tài liệu
Sau khi xóa trang, hãy lưu tài liệu PDF bằng cách sử dụng save() phương pháp của PDDocument lớp như được hiển thị trong khối mã sau.
document.save("Path");
Bước 5: Đóng tài liệu
Cuối cùng, đóng tài liệu bằng cách sử dụng close() phương pháp của PDDocument lớp như hình bên dưới.
document.close();
Thí dụ
Giả sử, chúng tôi có một tài liệu PDF có tên sample.pdf và nó chứa ba trang trống như hình dưới đây.
Ví dụ này trình bày cách xóa các trang khỏi tài liệu PDF hiện có. Tại đây, chúng tôi sẽ tải tài liệu PDF được chỉ định ở trên có tênsample.pdf, xóa một trang khỏi nó và lưu nó trong đường dẫn C:/PdfBox_Examples/. Lưu mã này trong một tệp có tênRemoving_pages.java.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
public class RemovingPages {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Listing the number of existing pages
int noOfPages= document.getNumberOfPages();
System.out.print(noOfPages);
//Removing the pages
document.removePage(2);
System.out.println("page removed");
//Saving the document
document.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
document.close();
}
}
Biên dịch và thực thi tệp Java đã lưu từ dấu nhắc lệnh bằng các lệnh sau.
javac RemovingPages.java
java RemovingPages
Khi thực hiện, chương trình trên sẽ tạo một tài liệu PDF với các trang trống hiển thị thông báo sau.
3
page removed
Nếu bạn xác minh đường dẫn được chỉ định, bạn có thể thấy rằng trang bắt buộc đã bị xóa và chỉ còn lại hai trang trong tài liệu như được hiển thị bên dưới.
Giống như các tệp khác, tài liệu PDF cũng có các thuộc tính tài liệu. Các thuộc tính này là các cặp khóa-giá trị. Mỗi thuộc tính cung cấp thông tin cụ thể về tài liệu.
Sau đây là các thuộc tính của tài liệu PDF -
Không. | Kê khai tài sản |
---|---|
1 | File Thuộc tính này giữ tên của tệp. |
2 | Title Sử dụng thuộc tính này, bạn có thể đặt tiêu đề cho tài liệu. |
3 | Author Sử dụng thuộc tính này, bạn có thể đặt tên tác giả cho tài liệu. |
4 | Subject Sử dụng thuộc tính này, bạn có thể chỉ định chủ đề của tài liệu PDF. |
5 | Keywords Sử dụng thuộc tính này, bạn có thể liệt kê các từ khóa mà chúng tôi có thể tìm kiếm tài liệu. |
6 | Created Sử dụng thuộc tính này, bạn có thể đặt ngày được tạo cho tài liệu. |
7 | Modified Sử dụng thuộc tính này, bạn có thể đặt ngày sửa đổi cho tài liệu. |
số 8 | Application Sử dụng thuộc tính này, bạn có thể đặt Ứng dụng của tài liệu. |
Sau đây là ảnh chụp màn hình bảng thuộc tính tài liệu của tài liệu PDF.
Đặt thuộc tính tài liệu
PDFBox cung cấp cho bạn một lớp có tên PDDocumentInformation. Lớp này có một tập hợp các phương thức setter và getter.
Các phương thức setter của lớp này được sử dụng để đặt các giá trị cho các thuộc tính khác nhau của một tài liệu và các phương thức getter được sử dụng để truy xuất các giá trị này.
Sau đây là các phương thức setter của PDDocumentInformation lớp học.
Không. | Phương pháp & Mô tả |
---|---|
1 | setAuthor(String author) Phương pháp này được sử dụng để đặt giá trị cho thuộc tính của tài liệu PDF có tên Author. |
2 | setTitle(String title) Phương pháp này được sử dụng để đặt giá trị cho thuộc tính của tài liệu PDF có tên Title. |
3 | setCreator(String creator) Phương pháp này được sử dụng để đặt giá trị cho thuộc tính của tài liệu PDF có tên Creator. |
4 | setSubject(String subject) Phương pháp này được sử dụng để đặt giá trị cho thuộc tính của tài liệu PDF có tên Subject. |
5 | setCreationDate(Calendar date) Phương pháp này được sử dụng để đặt giá trị cho thuộc tính của tài liệu PDF có tên CreationDate. |
6 | setModificationDate(Calendar date) Phương pháp này được sử dụng để đặt giá trị cho thuộc tính của tài liệu PDF có tên ModificationDate. |
7 | setKeywords(String keywords list) Phương pháp này được sử dụng để đặt giá trị cho thuộc tính của tài liệu PDF có tên Keywords. |
Thí dụ
PDFBox cung cấp một lớp được gọi là PDDocumentInformationvà lớp này cung cấp nhiều phương thức khác nhau. Các phương thức này có thể đặt các thuộc tính khác nhau cho tài liệu và truy xuất chúng.
Ví dụ này trình bày cách thêm các thuộc tính như Author, Title, Date, and Subjectsang tài liệu PDF. Ở đây, chúng tôi sẽ tạo một tài liệu PDF có têndoc_attributes.pdf, thêm các thuộc tính khác nhau vào nó và lưu nó trong đường dẫn C:/PdfBox_Examples/. Lưu mã này trong một tệp có tênAddingAttributes.java.
import java.io.IOException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
import org.apache.pdfbox.pdmodel.PDPage;
public class AddingDocumentAttributes {
public static void main(String args[]) throws IOException {
//Creating PDF document object
PDDocument document = new PDDocument();
//Creating a blank page
PDPage blankPage = new PDPage();
//Adding the blank page to the document
document.addPage( blankPage );
//Creating the PDDocumentInformation object
PDDocumentInformation pdd = document.getDocumentInformation();
//Setting the author of the document
pdd.setAuthor("Tutorialspoint");
// Setting the title of the document
pdd.setTitle("Sample document");
//Setting the creator of the document
pdd.setCreator("PDF Examples");
//Setting the subject of the document
pdd.setSubject("Example document");
//Setting the created date of the document
Calendar date = new GregorianCalendar();
date.set(2015, 11, 5);
pdd.setCreationDate(date);
//Setting the modified date of the document
date.set(2016, 6, 5);
pdd.setModificationDate(date);
//Setting keywords for the document
pdd.setKeywords("sample, first example, my pdf");
//Saving the document
document.save("C:/PdfBox_Examples/doc_attributes.pdf");
System.out.println("Properties added successfully ");
//Closing the document
document.close();
}
}
Biên dịch và thực thi tệp Java đã lưu từ dấu nhắc lệnh bằng các lệnh sau.
javac AddingAttributes.java
java AddingAttributes
Khi thực thi, chương trình trên thêm tất cả các thuộc tính được chỉ định vào tài liệu hiển thị thông báo sau.
Properties added successfully
Bây giờ, nếu bạn truy cập vào đường dẫn đã cho, bạn có thể tìm thấy tệp PDF được tạo trong đó. Nhấp chuột phải vào tài liệu và chọn tùy chọn thuộc tính tài liệu như hình dưới đây.
Thao tác này sẽ cung cấp cho bạn cửa sổ thuộc tính tài liệu và tại đây bạn có thể quan sát tất cả các thuộc tính của tài liệu đã được đặt thành các giá trị được chỉ định.
Truy xuất thuộc tính tài liệu
Bạn có thể truy xuất các thuộc tính của tài liệu bằng cách sử dụng getter phương pháp được cung cấp bởi PDDocumentInformation lớp học.
Sau đây là các phương thức getter của PDDocumentInformation lớp học.
Không. | Phương pháp & Mô tả |
---|---|
1 | getAuthor() Phương pháp này được sử dụng để truy xuất giá trị cho thuộc tính của tài liệu PDF có tên Author. |
2 | getTitle() Phương pháp này được sử dụng để truy xuất giá trị cho thuộc tính của tài liệu PDF có tên Title. |
3 | getCreator() Phương pháp này được sử dụng để truy xuất giá trị cho thuộc tính của tài liệu PDF có tên Creator. |
4 | getSubject() Phương pháp này được sử dụng để truy xuất giá trị cho thuộc tính của tài liệu PDF có tên Subject. |
5 | getCreationDate() Phương pháp này được sử dụng để truy xuất giá trị cho thuộc tính của tài liệu PDF có tên CreationDate. |
6 | getModificationDate() Phương pháp này được sử dụng để truy xuất giá trị cho thuộc tính của tài liệu PDF có tên ModificationDate. |
7 | getKeywords() Phương pháp này được sử dụng để truy xuất giá trị cho thuộc tính của tài liệu PDF có tên Keywords. |
Thí dụ
Ví dụ này trình bày cách truy xuất các thuộc tính của tài liệu PDF hiện có. Ở đây, chúng tôi sẽ tạo một chương trình Java và tải tài liệu PDF có têndoc_attributes.pdf, được lưu trong đường dẫn C:/PdfBox_Examples/và truy xuất các thuộc tính của nó. Lưu mã này trong một tệp có tênRetrivingDocumentAttributes.java.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
public class RetrivingDocumentAttributes {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/doc_attributes.pdf")
PDDocument document = PDDocument.load(file);
//Getting the PDDocumentInformation object
PDDocumentInformation pdd = document.getDocumentInformation();
//Retrieving the info of a PDF document
System.out.println("Author of the document is :"+ pdd.getAuthor());
System.out.println("Title of the document is :"+ pdd.getTitle());
System.out.println("Subject of the document is :"+ pdd.getSubject());
System.out.println("Creator of the document is :"+ pdd.getCreator());
System.out.println("Creation date of the document is :"+ pdd.getCreationDate());
System.out.println("Modification date of the document is :"+
pdd.getModificationDate());
System.out.println("Keywords of the document are :"+ pdd.getKeywords());
//Closing the document
document.close();
}
}
Biên dịch và thực thi tệp Java đã lưu từ dấu nhắc lệnh bằng các lệnh sau.
javac RetrivingDocumentAttributes.java
java RetrivingDocumentAttributes
Khi thực hiện, chương trình trên lấy tất cả các thuộc tính của tài liệu và hiển thị chúng như hình dưới đây.
Author of the document is :Tutorialspoint
Title of the document is :Sample document
Subject of the document is :Example document
Creator of the document is :PDF Examples
Creation date of the document is :11/5/2015
Modification date of the document is :6/5/2016
Keywords of the document are :sample, first example, my pdf
Trong chương trước, chúng ta đã thảo luận về cách thêm trang vào tài liệu PDF. Trong chương này, chúng ta sẽ thảo luận về cách thêm văn bản vào tài liệu PDF hiện có.
Thêm văn bản vào tài liệu PDF hiện có
Bạn có thể thêm nội dung vào tài liệu bằng thư viện PDFBox, thư viện này cung cấp cho bạn một lớp có tên PDPageContentStream chứa các phương thức cần thiết để chèn văn bản, hình ảnh và các loại nội dung khác vào một trang của PDFDocument.
Sau đây là các bước để tạo một tài liệu trống và thêm nội dung vào một trang trong đó.
Bước 1: Tải tài liệu hiện có
Bạn có thể tải một tài liệu hiện có bằng cách sử dụng load()phương thức của lớp PDDocument. Do đó, khởi tạo lớp này và tải tài liệu cần thiết như hình dưới đây.
File file = new File("Path of the document");
PDDocument doc = document.load(file);
Bước 2: Lấy trang cần thiết
Bạn có thể lấy trang được yêu cầu trong tài liệu bằng cách sử dụng getPage()phương pháp. Lấy đối tượng của trang được yêu cầu bằng cách chuyển chỉ mục của nó đến phương thức này như hình dưới đây.
PDPage page = doc.getPage(1);
Bước 3: Chuẩn bị Luồng nội dung
Bạn có thể chèn nhiều loại phần tử dữ liệu khác nhau bằng cách sử dụng đối tượng của lớp PDPageContentStream. Do đó, bạn cần phải chuyển đối tượng document và đối tượng trang đến phương thức khởi tạo của lớp này, khởi tạo lớp này bằng cách chuyển hai đối tượng này đã được tạo trong các bước trước đó như hình dưới đây.
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
Bước 4: Bắt đầu văn bản
Trong khi chèn văn bản vào tài liệu PDF, bạn có thể chỉ định điểm bắt đầu và điểm kết thúc của văn bản bằng phương thức beginText () và endText () của lớp PDPageContentStream như hình dưới đây.
contentStream.beginText();
………………………..
code to add text content
………………………..
contentStream.endText();
Do đó, hãy bắt đầu văn bản bằng cách sử dụng beginText() như hình dưới đây.
contentStream.beginText();
Bước 5: Đặt vị trí của văn bản
Sử dụng newLineAtOffset() , bạn có thể đặt vị trí trên dòng nội dung trong trang.
//Setting the position for the line
contentStream.newLineAtOffset(25, 700);
Bước 6: Đặt phông chữ
Bạn có thể đặt phông chữ của văn bản thành kiểu cần thiết bằng cách sử dụng setFont() phương pháp của PDPageContentStreamlớp như hình bên dưới. Đối với phương pháp này, bạn cần chuyển loại và kích thước của phông chữ.
contentStream.setFont( font_type, font_size );
Bước 7: Chèn văn bản
Bạn có thể chèn văn bản vào trang bằng cách sử dụng ShowText() phương pháp của PDPageContentStreamlớp như hình bên dưới. Phương thức này chấp nhận văn bản được yêu cầu ở dạng chuỗi.
contentStream.showText(text);
Bước 8: Kết thúc văn bản
Sau khi chèn văn bản, bạn cần kết thúc văn bản bằng endText() phương pháp của PDPageContentStream lớp như hình bên dưới.
contentStream.endText();
Bước 9: Đóng PDPageContentStream
Đóng PDPageContentStream đối tượng sử dụng close() như hình dưới đây.
contentstream.close();
Bước 10: Lưu tài liệu
Sau khi thêm nội dung cần thiết, hãy lưu tài liệu PDF bằng cách sử dụng save() phương pháp của PDDocument lớp như được hiển thị trong khối mã sau.
doc.save("Path");
Bước 11: Đóng tài liệu
Cuối cùng, đóng tài liệu bằng cách sử dụng close() phương pháp của PDDocument lớp như hình bên dưới.
doc.close();
Thí dụ
Ví dụ này trình bày cách thêm nội dung vào một trang trong tài liệu. Ở đây, chúng tôi sẽ tạo một chương trình Java để tải tài liệu PDF có tênmy_doc.pdf, được lưu trong đường dẫn C:/PdfBox_Examples/và thêm một số văn bản vào nó. Lưu mã này trong một tệp có tênAddingContent.java.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
public class AddingContent {
public static void main (String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/my_doc.pdf");
PDDocument document = PDDocument.load(file);
//Retrieving the pages of the document
PDPage page = document.getPage(1);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
//Begin the Content stream
contentStream.beginText();
//Setting the font to the Content stream
contentStream.setFont(PDType1Font.TIMES_ROMAN, 12);
//Setting the position for the line
contentStream.newLineAtOffset(25, 500);
String text = "This is the sample document and we are adding content to it.";
//Adding text in the form of string
contentStream.showText(text);
//Ending the content stream
contentStream.endText();
System.out.println("Content added");
//Closing the content stream
contentStream.close();
//Saving the document
document.save(new File("C:/PdfBox_Examples/new.pdf"));
//Closing the document
document.close();
}
}
Biên dịch và thực thi tệp Java đã lưu từ dấu nhắc lệnh bằng các lệnh sau.
javac AddingContent.java
java AddingContent
Khi thực hiện, chương trình trên thêm văn bản đã cho vào tài liệu và hiển thị thông báo sau.
Content added
Nếu bạn xác minh Tài liệu PDF new.pdf trong đường dẫn được chỉ định, bạn có thể quan sát thấy rằng nội dung đã cho được thêm vào tài liệu như hình dưới đây.
Trong ví dụ được cung cấp ở chương trước, chúng ta đã thảo luận về cách thêm văn bản vào một trang trong tệp PDF nhưng thông qua chương trình này, bạn chỉ có thể thêm văn bản vừa với một dòng. Nếu bạn cố gắng thêm nhiều nội dung hơn, tất cả văn bản vượt quá khoảng cách dòng sẽ không được hiển thị.
Ví dụ: nếu bạn thực hiện chương trình trên trong chương trước bằng cách chuyển chuỗi sau thì chỉ một phần của nó sẽ được hiển thị.
String text = "This is an example of adding text to a page in the pdf document. we can
add as many lines as we want like this using the showText() method of the
ContentStream class";
Thay thế cái string textcủa ví dụ trong chương trước với chuỗi được đề cập ở trên và thực thi nó. Sau khi thực hiện, bạn sẽ nhận được kết quả sau.
Nếu bạn quan sát kỹ đầu ra, bạn có thể nhận thấy rằng chỉ một phần của chuỗi được hiển thị.
Để thêm nhiều dòng vào một tệp PDF, bạn cần đặt đầu dòng bằng cách sử dụng setLeading() và chuyển sang dòng mới bằng cách sử dụng newline() phương pháp sau khi kết thúc mỗi dòng.
Các bước
Sau đây là các bước để tạo một tài liệu trống và thêm nội dung vào một trang trong đó.
Bước 1: Tải tài liệu hiện có
Bạn có thể tải một tài liệu hiện có bằng cách sử dụng load()phương thức của lớp PDDocument. Do đó, khởi tạo lớp này và tải tài liệu cần thiết như hình dưới đây.
File file = new File("Path of the document");
PDDocument doc = PDDocument.load(file);
Bước 2: Lấy trang cần thiết
Bạn có thể lấy trang được yêu cầu trong tài liệu bằng cách sử dụng getPage()phương pháp. Lấy đối tượng của trang được yêu cầu bằng cách chuyển chỉ mục của nó đến phương thức này như hình dưới đây.
PDPage page = doc.getPage(1);
Bước 3: Chuẩn bị luồng nội dung
Bạn có thể chèn nhiều loại phần tử dữ liệu khác nhau bằng cách sử dụng đối tượng của lớp có tên PDPageContentStream. Do đó, bạn cần phải chuyển đối tượng document và đối tượng trang đến phương thức khởi tạo của lớp này, khởi tạo lớp này bằng cách chuyển hai đối tượng này đã được tạo trong các bước trước đó như hình dưới đây.
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
Bước 4: Bắt đầu văn bản
Trong khi chèn văn bản vào tài liệu PDF, bạn có thể chỉ định điểm bắt đầu và điểm kết thúc của văn bản bằng cách sử dụng beginText() và endText() phương pháp của PDPageContentStream lớp như hình bên dưới.
contentStream.beginText();
………………………..
code to add text content
………………………..
contentStream.endText();
Do đó, hãy bắt đầu văn bản bằng cách sử dụng beginText() như hình dưới đây.
contentStream.beginText();
Bước 5: Đặt vị trí của văn bản
Sử dụng newLineAtOffset() , bạn có thể đặt vị trí trên dòng nội dung trong trang.
//Setting the position for the line
contentStream.newLineAtOffset(25, 700);
Bước 6: Đặt phông chữ
Bạn có thể đặt phông chữ của văn bản thành kiểu cần thiết bằng cách sử dụng setFont() phương pháp của PDPageContentStream lớp như được hiển thị bên dưới với phương thức này, bạn cần phải chuyển loại và kích thước của phông chữ.
contentStream.setFont( font_type, font_size );
Bước 7: Đặt Văn bản dẫn đầu
Bạn có thể đặt đầu văn bản bằng cách sử dụng setLeading() như hình dưới đây.
contentStream.setLeading(14.5f);
Bước 8: Chèn nhiều chuỗi bằng newline ()
Bạn có thể chèn nhiều chuỗi bằng cách sử dụng ShowText() phương pháp của PDPageContentStream lớp, bằng cách chia từng lớp bằng cách sử dụng newline() như hình dưới đây.
contentStream. ShowText(text1);
contentStream.newLine();
contentStream. ShowText(text2);
Bước 9: Kết thúc văn bản
Sau khi chèn văn bản, bạn cần kết thúc văn bản bằng endText() phương pháp của PDPageContentStream lớp như hình bên dưới.
contentStream.endText();
Bước 10: Đóng PDPageContentStream
Đóng PDPageContentStream đối tượng sử dụng close() như hình dưới đây.
contentstream.close();
Bước 11: Lưu tài liệu
Sau khi thêm nội dung cần thiết, hãy lưu tài liệu PDF bằng cách sử dụng save() phương pháp của PDDocument lớp như được hiển thị trong khối mã sau.
doc.save("Path");
Bước 12: Đóng tài liệu
Cuối cùng, đóng tài liệu bằng cách sử dụng close() phương pháp của PDDocument lớp như hình bên dưới.
doc.close();
Thí dụ
Ví dụ này trình bày cách thêm nhiều dòng trong PDF bằng PDFBox. Lưu chương trình này trong một tệp có tênAddMultipleLines.java.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
public class AddMultipleLines {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/my_pdf.pdf");
PDDocument doc = document.load(file);
//Creating a PDF Document
PDPage page = doc.getPage(1);
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
//Begin the Content stream
contentStream.beginText();
//Setting the font to the Content stream
contentStream.setFont( PDType1Font.TIMES_ROMAN, 16 );
//Setting the leading
contentStream.setLeading(14.5f);
//Setting the position for the line
contentStream.newLineAtOffset(25, 725);
String text1 = "This is an example of adding text to a page in the pdf document.
we can add as many lines";
String text2 = "as we want like this using the ShowText() method of the
ContentStream class";
//Adding text in the form of string
contentStream. ShowText(text1);
contentStream.newLine();
contentStream. ShowText(text2);
//Ending the content stream
contentStream.endText();
System.out.println("Content added");
//Closing the content stream
contentStream.close();
//Saving the document
doc.save(new File("C:/PdfBox_Examples/new.pdf"));
//Closing the document
doc.close();
}
}
Biên dịch và thực thi tệp Java đã lưu từ dấu nhắc lệnh bằng các lệnh sau.
javac AddMultipleLines.java
java AddMultipleLines
Khi thực hiện, chương trình trên thêm văn bản đã cho vào tài liệu và hiển thị thông báo sau.
Content added
Nếu bạn xác minh Tài liệu PDF new.pdf trong đường dẫn được chỉ định, bạn có thể thấy rằng nội dung đã cho được thêm vào tài liệu trong nhiều dòng như hình dưới đây.
Trong chương trước, chúng ta đã biết cách thêm văn bản vào tài liệu PDF hiện có. Trong chương này, chúng ta sẽ thảo luận về cách đọc văn bản từ một tài liệu PDF hiện có.
Trích xuất văn bản từ một tài liệu PDF hiện có
Trích xuất văn bản là một trong những tính năng chính của thư viện hộp PDF. Bạn có thể trích xuất văn bản bằng cách sử dụnggetText() phương pháp của PDFTextStripperlớp học. Lớp này trích xuất tất cả văn bản từ tài liệu PDF đã cho.
Sau đây là các bước để trích xuất văn bản từ một tài liệu PDF hiện có.
Bước 1: Tải tài liệu PDF hiện có
Tải tài liệu PDF hiện có bằng phương pháp tĩnh load() sau đó PDDocumentlớp học. Phương thức này chấp nhận một đối tượng tệp như một tham số, vì đây là một phương thức tĩnh nên bạn có thể gọi nó bằng cách sử dụng tên lớp như hình dưới đây.
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
Bước 2: Khởi tạo lớp PDFTextStripper
Các PDFTextStripper lớp cung cấp các phương thức để lấy văn bản từ một tài liệu PDF, do đó, hãy khởi tạo lớp này như hình dưới đây.
PDFTextStripper pdfStripper = new PDFTextStripper();
Bước 3: Lấy văn bản
Bạn có thể đọc / lấy nội dung của một trang từ tài liệu PDF bằng cách sử dụng getText() phương pháp của PDFTextStripperlớp học. Đối với phương thức này, bạn cần truyền đối tượng tài liệu làm tham số. Phương thức này lấy văn bản trong một tài liệu nhất định và trả về dưới dạng một đối tượng Chuỗi.
String text = pdfStripper.getText(document);
Bước 4: Đóng tài liệu
Cuối cùng, đóng tài liệu bằng cách sử dụng close() phương thức của lớp PDDocument như hình dưới đây.
document.close();
Thí dụ
Giả sử, chúng ta có một tài liệu PDF với một số văn bản trong đó như hình dưới đây.
Ví dụ này trình bày cách đọc văn bản từ tài liệu PDF được đề cập ở trên. Ở đây, chúng tôi sẽ tạo một chương trình Java và tải một tài liệu PDF có tênnew.pdf, được lưu trong đường dẫn C:/PdfBox_Examples/. Lưu mã này trong một tệp có tênReadingText.java.
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
public class ReadingText {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/new.pdf");
PDDocument document = PDDocument.load(file);
//Instantiate PDFTextStripper class
PDFTextStripper pdfStripper = new PDFTextStripper();
//Retrieving text from PDF document
String text = pdfStripper.getText(document);
System.out.println(text);
//Closing the document
document.close();
}
}
Biên dịch và thực thi tệp Java đã lưu từ dấu nhắc lệnh bằng các lệnh sau.
javac ReadingText.java
java ReadingText
Khi thực hiện, chương trình trên lấy văn bản từ tài liệu PDF đã cho và hiển thị nó như hình dưới đây.
This is an example of adding text to a page in the pdf document. we can add as many lines
as we want like this using the ShowText() method of the ContentStream class.
Trong chương trước, chúng ta đã biết cách trích xuất văn bản từ tài liệu PDF hiện có. Trong chương này, chúng ta sẽ thảo luận về cách chèn hình ảnh vào tài liệu PDF.
Chèn hình ảnh vào tài liệu PDF
Bạn có thể chèn hình ảnh vào tài liệu PDF bằng cách sử dụng createFromFile() và drawImage() phương thức của các lớp PDImageXObject và PDPageContentStream tương ứng.
Sau đây là các bước để trích xuất văn bản từ một tài liệu PDF hiện có.
Bước 1: Tải tài liệu PDF hiện có
Tải tài liệu PDF hiện có bằng phương pháp tĩnh load() sau đó PDDocumentlớp học. Phương thức này chấp nhận một đối tượng tệp như một tham số, vì đây là một phương thức tĩnh nên bạn có thể gọi nó bằng cách sử dụng tên lớp như hình dưới đây.
File file = new File("path of the document")
PDDocument doc = PDDocument.load(file);
Bước 2: Truy xuất trang
Chọn một trang trong tài liệu PDF và truy xuất đối tượng trang của nó bằng cách sử dụng getPage() như hình dưới đây.
PDPage page = doc.getPage(0);
Bước 3: Tạo đối tượng PDImageXObject
Lớp PDImageXObjecttrong thư viện PDFBox đại diện cho một hình ảnh. Nó cung cấp tất cả các phương thức cần thiết để thực hiện các thao tác liên quan đến hình ảnh, chẳng hạn như chèn hình ảnh, đặt chiều cao, đặt chiều rộng của hình ảnh, v.v.
Chúng ta có thể tạo một đối tượng của lớp này bằng phương thức createFromFile(). Đối với phương pháp này, chúng ta cần chuyển đường dẫn của hình ảnh mà chúng ta muốn thêm dưới dạng một chuỗi và đối tượng tài liệu mà hình ảnh cần được thêm vào.
PDImageXObject pdImage = PDImageXObject.createFromFile("C:/logo.png", doc);
Bước 4: Chuẩn bị Luồng nội dung
Bạn có thể chèn nhiều loại phần tử dữ liệu khác nhau bằng cách sử dụng đối tượng của lớp có tên PDPageContentStream. Do đó, bạn cần phải chuyển đối tượng document và đối tượng trang đến phương thức khởi tạo của lớp này, khởi tạo lớp này bằng cách chuyển hai đối tượng này đã được tạo trong các bước trước đó như hình dưới đây.
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
Bước 5: Vẽ hình ảnh trong tài liệu PDF
Bạn có thể chèn một hình ảnh vào tài liệu PDF bằng cách sử dụng drawImage()phương pháp. Đối với phương pháp này, bạn cần thêm đối tượng hình ảnh đã tạo ở bước trên và kích thước yêu cầu của hình ảnh (chiều rộng và chiều cao) như hình dưới đây.
contentstream.drawImage(pdImage, 70, 250);
Bước 6: Đóng PDPageContentStream
Đóng PDPageContentStream đối tượng sử dụng close() như hình dưới đây.
contentstream.close();
Bước 7: Lưu tài liệu
Sau khi thêm nội dung cần thiết, hãy lưu tài liệu PDF bằng cách sử dụng save() phương pháp của PDDocument lớp như được hiển thị trong khối mã sau.
doc.save("Path");
Bước 8: Đóng tài liệu
Cuối cùng, đóng tài liệu bằng cách sử dụng close() phương pháp của PDDocument lớp như hình bên dưới.
doc.close();
Thí dụ
Giả sử chúng ta có một tài liệu PDF có tên sample.pdf, trong đường dẫn C:/PdfBox_Examples/ với các trang trống như hình dưới đây.
Ví dụ này trình bày cách thêm hình ảnh vào trang trống của tài liệu PDF được đề cập ở trên. Tại đây, chúng tôi sẽ tải tài liệu PDF có tênsample.pdfvà thêm hình ảnh vào đó. Lưu mã này trong một tệp có tênInsertingImage.java.
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
public class InsertingImage {
public static void main(String args[]) throws Exception {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument doc = PDDocument.load(file);
//Retrieving the page
PDPage page = doc.getPage(0);
//Creating PDImageXObject object
PDImageXObject pdImage = PDImageXObject.createFromFile("C:/PdfBox_Examples/logo.png",doc);
//creating the PDPageContentStream object
PDPageContentStream contents = new PDPageContentStream(doc, page);
//Drawing the image in the PDF document
contents.drawImage(pdImage, 70, 250);
System.out.println("Image inserted");
//Closing the PDPageContentStream object
contents.close();
//Saving the document
doc.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
doc.close();
}
}
Biên dịch và thực thi tệp Java đã lưu từ dấu nhắc lệnh bằng các lệnh sau.
javac InsertingImage.java
java InsertingImage
Khi thực hiện, chương trình trên sẽ chèn một hình ảnh vào trang cụ thể của tài liệu PDF đã cho, hiển thị thông báo sau.
Image inserted
Nếu bạn xác minh tài liệu sample.pdf, bạn có thể quan sát thấy một hình ảnh được chèn vào đó như hình dưới đây.
Trong chương trước, chúng ta đã biết cách chèn hình ảnh vào tài liệu PDF. Trong chương này, chúng ta sẽ thảo luận về cách mã hóa tài liệu PDF.
Mã hóa tài liệu PDF
Bạn có thể mã hóa tài liệu PDF bằng các phương pháp được cung cấp bởi StandardProtectionPolicy và AccessPermission classes.
Các AccessPermissionđược sử dụng để bảo vệ Tài liệu PDF bằng cách gán quyền truy cập cho nó. Sử dụng lớp này, bạn có thể hạn chế người dùng thực hiện các thao tác sau.
- In tài liệu
- Sửa đổi nội dung của tài liệu
- Sao chép hoặc trích xuất nội dung của tài liệu
- Thêm hoặc sửa đổi chú thích
- Điền vào các trường biểu mẫu tương tác
- Trích xuất văn bản và đồ họa để người khiếm thị tiếp cận được
- Tập hợp tài liệu
- In chất lượng kém
Các StandardProtectionPolicy lớp được sử dụng để thêm bảo vệ dựa trên mật khẩu vào tài liệu.
Sau đây là các bước để mã hóa một tài liệu PDF hiện có.
Bước 1: Tải tài liệu PDF hiện có
Tải tài liệu PDF hiện có bằng phương pháp tĩnh load() sau đó PDDocumentlớp học. Phương thức này chấp nhận một đối tượng tệp như một tham số, vì đây là một phương thức tĩnh nên bạn có thể gọi nó bằng cách sử dụng tên lớp như hình dưới đây.
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
Bước 2: Tạo đối tượng quyền truy cập
Khởi tạo AccessPermission lớp như hình bên dưới.
AccessPermission accessPermission = new AccessPermission();
Bước 3: Tạo đối tượng StandardProtectionPolicy
Khởi tạo StandardProtectionPolicy lớp bằng cách chuyển mật khẩu chủ sở hữu, mật khẩu người dùng và AccessPermission đối tượng như hình dưới đây.
StandardProtectionPolicy spp = new StandardProtectionPolicy("1234","1234",accessPermission);
Bước 4: Đặt độ dài của khóa mã hóa
Đặt độ dài khóa mã hóa bằng cách sử dụng setEncryptionKeyLength() như hình dưới đây.
spp.setEncryptionKeyLength(128);
Bước 5: Đặt quyền
Đặt quyền bằng cách sử dụng setPermissions()phương thức của lớp StandardProtectionPolicy. Phương thức này chấp nhận mộtAccessPermission đối tượng như một tham số.
spp.setPermissions(accessPermission);
Bước 6: Bảo vệ tài liệu
Bạn có thể bảo vệ tài liệu của mình bằng cách sử dụng protect() phương pháp của PDDocumentlớp như hình bên dưới. Vượt quaStandardProtectionPolicy đối tượng như một tham số cho phương thức này.
document.protect(spp);
Bước 7: Lưu tài liệu
Sau khi thêm nội dung cần thiết, hãy lưu tài liệu PDF bằng cách sử dụng save() phương pháp của PDDocument lớp như được hiển thị trong khối mã sau.
document.save("Path");
Bước 8: Đóng tài liệu
Cuối cùng, đóng tài liệu bằng close() phương pháp của PDDocument lớp như hình bên dưới.
document.close();
Thí dụ
Giả sử, chúng tôi có một tài liệu PDF có tên sample.pdf, trong đường dẫn C:/PdfBox_Examples/ với các trang trống như hình dưới đây.
Ví dụ này trình bày cách mã hóa tài liệu PDF được đề cập ở trên. Tại đây, chúng tôi sẽ tải tài liệu PDF có tênsample.pdfvà mã hóa nó. Lưu mã này trong một tệp có tênEncriptingPDF.java.
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
public class EncriptingPDF {
public static void main(String args[]) throws Exception {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Creating access permission object
AccessPermission ap = new AccessPermission();
//Creating StandardProtectionPolicy object
StandardProtectionPolicy spp = new StandardProtectionPolicy("1234", "1234", ap);
//Setting the length of the encryption key
spp.setEncryptionKeyLength(128);
//Setting the access permissions
spp.setPermissions(ap);
//Protecting the document
document.protect(spp);
System.out.println("Document encrypted");
//Saving the document
document.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
document.close();
}
}
Biên dịch và thực thi tệp Java đã lưu từ dấu nhắc lệnh bằng các lệnh sau.
javac EncriptingPDF.java
java EncriptingPDF
Khi thực thi, chương trình trên sẽ mã hóa tài liệu PDF đã cho và hiển thị thông báo sau.
Document encrypted
Nếu bạn cố gắng mở tài liệu sample.pdf, bạn không thể, vì nó đã được mã hóa. Thay vào đó, nó sẽ nhắc nhập mật khẩu để mở tài liệu như hình dưới đây.
Trong chương trước, chúng ta đã học cách chèn hình ảnh vào tài liệu PDF. Trong chương này, chúng ta sẽ thảo luận về cách thêm JavaScript vào tài liệu PDF.
Thêm JavaScript vào tài liệu PDF
Bạn có thể thêm các hành động JavaScript vào tài liệu PDF bằng cách sử dụng PDActionJavaScriptlớp học. Điều này đại diện cho một hành động JavaScript.
Sau đây là các bước để thêm các hành động JavaScript vào tài liệu PDF hiện có.
Bước 1: Tải tài liệu PDF hiện có
Tải tài liệu PDF hiện có bằng phương pháp tĩnh load() sau đó PDDocumentlớp học. Phương thức này chấp nhận một đối tượng tệp như một tham số, vì đây là một phương thức tĩnh nên bạn có thể gọi nó bằng cách sử dụng tên lớp như hình dưới đây.
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
Bước 2: Tạo đối tượng PDActionJavaScript
Khởi tạo PDActionJavaScriptđối tượng như hình dưới đây. Đối với hàm tạo của lớp này, hãy chuyển JavaScript được yêu cầu ở dạng Chuỗi như được hiển thị bên dưới.
String javaScript = "app.alert( {cMsg: 'this is an example', nIcon: 3,"
+ " nType: 0,cTitle: 'PDFBox Javascript example' } );";
PDActionJavaScript PDAjavascript = new PDActionJavaScript(javaScript);
Bước 3: Nhúng tập lệnh Java vào tài liệu
Nhúng chuỗi cần thiết vào tài liệu PDF như hình dưới đây.
document.getDocumentCatalog().setOpenAction(PDAjavascript);
Bước 4: Lưu tài liệu
Sau khi thêm nội dung cần thiết, hãy lưu tài liệu PDF bằng cách sử dụng save() phương pháp của PDDocument lớp như được hiển thị trong khối mã sau.
document.save("Path");
Bước 5: Đóng tài liệu
Cuối cùng, đóng tài liệu bằng close() phương pháp của PDDocument lớp như hình bên dưới.
document.close();
Thí dụ
Giả sử, chúng tôi có một tài liệu PDF có tên sample.pdf, trong đường dẫn C:/PdfBox_Examples/ với các trang trống như hình dưới đây.
Ví dụ này trình bày cách nhúng JavaScript vào tài liệu PDF được đề cập ở trên. Tại đây, chúng tôi sẽ tải tài liệu PDF có tênsample.pdfvà nhúng JavaScript vào đó. Lưu mã này trong một tệp có tênAddJavaScript.java.
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.interactive.action.PDActionJavaScript;
public class AddJavaScript {
public static void main(String args[]) throws Exception {
//Loading an existing file
File file = new File("C:/PdfBox_Examples/new.pdf");
PDDocument document = PDDocument.load(file);
String javaScript = "app.alert( {cMsg: 'this is an example', nIcon: 3,"
+ " nType: 0, cTitle: 'PDFBox Javascript example’} );";
//Creating PDActionJavaScript object
PDActionJavaScript PDAjavascript = new PDActionJavaScript(javaScript);
//Embedding java script
document.getDocumentCatalog().setOpenAction(PDAjavascript);
//Saving the document
document.save( new File("C:/PdfBox_Examples/new.pdf") );
System.out.println("Data added to the given PDF");
//Closing the document
document.close();
}
}
Biên dịch và thực thi tệp Java đã lưu từ dấu nhắc lệnh bằng các lệnh sau.
javac AddJavaScript.java
java AddJavaScript
Khi thực thi, chương trình trên nhúng JavaScript vào tài liệu PDF đã cho hiển thị thông báo sau.
Data added to the given PDF
Nếu bạn cố gắng mở tài liệu new.pdf nó sẽ hiển thị thông báo cảnh báo như hình bên dưới.
Trong chương trước, chúng ta đã biết cách thêm JavaScript vào tài liệu PDF. Bây giờ chúng ta hãy tìm hiểu cách chia một tài liệu PDF nhất định thành nhiều tài liệu.
Tách các trang trong tài liệu PDF
Bạn có thể chia tài liệu PDF đã cho thành nhiều tài liệu PDF bằng cách sử dụng lớp có tên Splitter. Lớp này được sử dụng để chia tài liệu PDF đã cho thành một số tài liệu khác.
Sau đây là các bước để tách một tài liệu PDF hiện có
Bước 1: Tải tài liệu PDF hiện có
Tải tài liệu PDF hiện có bằng phương pháp tĩnh load() sau đó PDDocumentlớp học. Phương thức này chấp nhận một đối tượng tệp như một tham số, vì đây là một phương thức tĩnh nên bạn có thể gọi nó bằng cách sử dụng tên lớp như hình dưới đây.
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
Bước 2: Khởi tạo lớp Splitter
Lớp có tên Splitter chứa các phương thức để tách tài liệu PDF đã cho, do đó, khởi tạo lớp này như hình dưới đây.
Splitter splitter = new Splitter();
Bước 3: Tách tài liệu PDF
Bạn có thể chia tài liệu đã cho bằng cách sử dụng Split() phương pháp của Splitterphân loại lớp này. Phương thức này chấp nhận một đối tượng củaPDDocument lớp như một tham số.
List<PDDocument> Pages = splitter.split(document);
Các split() phương thức chia từng trang của tài liệu đã cho thành một tài liệu riêng lẻ và trả về tất cả những trang này dưới dạng danh sách.
Bước 4: Tạo một đối tượng Iterator
Để xem qua danh sách tài liệu, bạn cần lấy một đối tượng trình vòng lặp của danh sách có được ở bước trên, bạn cần lấy đối tượng trình vòng lặp của danh sách bằng cách sử dụng listIterator() như hình dưới đây.
Iterator<PDDocument> iterator = Pages.listIterator();
Bước 5: Đóng tài liệu
Cuối cùng, đóng tài liệu bằng close() phương pháp của PDDocument lớp như hình bên dưới.
document.close();
Thí dụ
Giả sử, có một tài liệu PDF có tên sample.pdf trong con đường C:\PdfBox_Examples\ và tài liệu này chứa hai trang - một trang chứa hình ảnh và một trang khác chứa văn bản như hình dưới đây.
Ví dụ này minh họa cách chia nhỏ tài liệu PDF được đề cập ở trên. Ở đây, chúng tôi sẽ chia tài liệu PDF có tênsample.pdf thành hai tài liệu khác nhau sample1.pdf và sample2.pdf. Lưu mã này trong một tệp có tênSplitPages.java.
import org.apache.pdfbox.multipdf.Splitter;
import org.apache.pdfbox.pdmodel.PDDocument;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Iterator;
public class SplitPages {
public static void main(String[] args) throws IOException {
//Loading an existing PDF document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Instantiating Splitter class
Splitter splitter = new Splitter();
//splitting the pages of a PDF document
List<PDDocument> Pages = splitter.split(document);
//Creating an iterator
Iterator<PDDocument> iterator = Pages.listIterator();
//Saving each page as an individual document
int i = 1;
while(iterator.hasNext()) {
PDDocument pd = iterator.next();
pd.save("C:/PdfBox_Examples/sample"+ i++ +".pdf");
}
System.out.println("Multiple PDF’s created");
document.close();
}
}
Biên dịch và thực thi tệp Java đã lưu từ dấu nhắc lệnh bằng các lệnh sau
javac SplitPages.java
java SplitPages
Khi thực thi, chương trình trên sẽ mã hóa tài liệu PDF đã cho và hiển thị thông báo sau.
Multiple PDF’s created
Nếu bạn xác minh đường dẫn đã cho, bạn có thể thấy rằng nhiều tệp PDF đã được tạo với tên sample1 và sample2 như hình bên dưới.
Trong chương trước, chúng ta đã biết cách chia một tài liệu PDF nhất định thành nhiều tài liệu. Bây giờ chúng ta hãy tìm hiểu cách hợp nhất nhiều tài liệu PDF thành một tài liệu duy nhất.
Hợp nhất nhiều tài liệu PDF
Bạn có thể hợp nhất nhiều tài liệu PDF thành một tài liệu PDF duy nhất bằng cách sử dụng lớp có tên PDFMergerUtility lớp, lớp này cung cấp các phương pháp để hợp nhất hai hoặc nhiều tài liệu PDF thành một tài liệu PDF duy nhất.
Sau đây là các bước để hợp nhất nhiều tài liệu PDF.
Bước 1: Khởi tạo lớp PDFMergerUtility
Khởi tạo lớp tiện ích hợp nhất như được hiển thị bên dưới.
PDFMergerUtility PDFmerger = new PDFMergerUtility();
Bước 2: Đặt tệp đích
Đặt các tệp đích bằng phương thức setDestinationFileName () như hình dưới đây.
PDFmerger.setDestinationFileName("C:/PdfBox_Examples/data1/merged.pdf");
Bước 3: Đặt các tệp nguồn
Đặt các tệp nguồn bằng phương thức addSource () như hình dưới đây.
File file = new File("path of the document")
PDFmerger.addSource(file);
Bước 4: Hợp nhất các tài liệu
Hợp nhất các tài liệu bằng phương thức mergeDocuments () của lớp PDFmerger như hình dưới đây.
PDFmerger.mergeDocuments();
Thí dụ
Giả sử, chúng ta có hai tài liệu PDF - sample1.pdf và sample2.pdf, trong đường dẫn C:\PdfBox_Examples\ như hình bên dưới.
Ví dụ này trình bày cách hợp nhất các tài liệu PDF ở trên. Ở đây, chúng tôi sẽ hợp nhất các tài liệu PDF có tênsample1.pdf và sample2.pdf vào một tài liệu PDF duy nhất merged.pdf. Lưu mã này trong một tệp có tênMergePDFs.java.
import org.apache.pdfbox.multipdf.PDFMergerUtility;
import java.io.File;
import java.io.IOException;
public class MergePDFs {
public static void main(String[] args) throws IOException {
File file1 = new File("C:\\EXAMPLES\\Demo1.pdf");
File file2 = new File("C:\\EXAMPLES\\Demo2.pdf");
//Instantiating PDFMergerUtility class
PDFMergerUtility PDFmerger = new PDFMergerUtility();
//Setting the destination file
PDFmerger.setDestinationFileName("C:\\Examples\\merged.pdf");
//adding the source files
PDFmerger.addSource(file1);
PDFmerger.addSource(file2);
//Merging the two documents
PDFmerger.mergeDocuments();
System.out.println("Documents merged");
}
}
Biên dịch và thực thi tệp Java đã lưu từ dấu nhắc lệnh bằng các lệnh sau.
javac MergePDFs.java
java MergePDFs
Khi thực thi, chương trình trên sẽ mã hóa tài liệu PDF đã cho và hiển thị thông báo sau.
Documents merged
Nếu bạn xác minh đường dẫn đã cho, bạn có thể thấy rằng một tài liệu PDF có tên merged.pdf được tạo và điều này chứa các trang của cả hai tài liệu nguồn như được hiển thị bên dưới.
Trong chương trước, chúng ta đã biết cách hợp nhất nhiều tài liệu PDF. Trong chương này, chúng ta sẽ hiểu cách trích xuất hình ảnh từ một trang của tài liệu PDF.
Tạo hình ảnh từ tài liệu PDF
Thư viện PDFBox cung cấp cho bạn một lớp có tên PDFRenderer kết xuất tài liệu PDF thành AWT BufferedImage.
Sau đây là các bước để tạo hình ảnh từ tài liệu PDF.
Bước 1: Tải tài liệu PDF hiện có
Tải tài liệu PDF hiện có bằng phương pháp tĩnh load() sau đó PDDocumentlớp học. Phương thức này chấp nhận một đối tượng tệp như một tham số, vì đây là một phương thức tĩnh nên bạn có thể gọi nó bằng cách sử dụng tên lớp như hình dưới đây.
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
Bước 2: Khởi tạo lớp PDFRenderer
Lớp có tên PDFRenderer kết xuất tài liệu PDF thành một AWT BufferedImage. Do đó, bạn cần khởi tạo lớp này như hình dưới đây. Hàm tạo của lớp này chấp nhận một đối tượng tài liệu; truyền đối tượng tài liệu đã tạo ở bước trước như hình dưới đây.
PDFRenderer renderer = new PDFRenderer(document);
Bước 3: Kết xuất hình ảnh từ tài liệu PDF
Bạn có thể hiển thị hình ảnh trong một trang cụ thể bằng phương pháp renderImage() của lớp Renderer, với phương thức này, bạn cần chuyển chỉ mục của trang mà bạn có hình ảnh sẽ được hiển thị.
BufferedImage image = renderer.renderImage(0);
Bước 4: Ghi hình ảnh vào tệp
Bạn có thể ghi hình ảnh được hiển thị ở bước trước đó vào tệp bằng cách sử dụng write()phương pháp. Đối với phương thức này, bạn cần truyền ba tham số:
- Đối tượng hình ảnh được kết xuất.
- Chuỗi đại diện cho loại hình ảnh (jpg hoặc png).
- Đối tượng tệp mà bạn cần để lưu hình ảnh đã trích xuất.
ImageIO.write(image, "JPEG", new File("C:/PdfBox_Examples/myimage.jpg"));
Bước 5: Đóng tài liệu
Cuối cùng, đóng tài liệu bằng cách sử dụng close() phương thức của lớp PDDocument như hình dưới đây.
document.close();
Thí dụ
Giả sử, chúng ta có một tài liệu PDF - sample.pdf trong con đường C:\PdfBox_Examples\ và điều này chứa một hình ảnh trong trang đầu tiên của nó như được hiển thị bên dưới.
Ví dụ này trình bày cách chuyển tài liệu PDF ở trên thành tệp hình ảnh. Tại đây, chúng tôi sẽ lấy hình ảnh trong trang đầu tiên của tài liệu PDF và lưu nó dưới dạngmyimage.jpg. Lưu mã này thànhPdfToImage.java
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
public class PdfToImage {
public static void main(String args[]) throws Exception {
//Loading an existing PDF document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Instantiating the PDFRenderer class
PDFRenderer renderer = new PDFRenderer(document);
//Rendering an image from the PDF document
BufferedImage image = renderer.renderImage(0);
//Writing the image to a file
ImageIO.write(image, "JPEG", new File("C:/PdfBox_Examples/myimage.jpg"));
System.out.println("Image created");
//Closing the document
document.close();
}
}
Biên dịch và thực thi tệp Java đã lưu từ dấu nhắc lệnh bằng các lệnh sau.
javac PdfToImage.java
java PdfToImage
Khi thực hiện, chương trình trên lấy hình ảnh trong tài liệu PDF đã cho hiển thị thông báo sau.
Image created
Nếu bạn xác minh đường dẫn đã cho, bạn có thể thấy rằng hình ảnh được tạo và lưu dưới dạng myimage.jpg như hình bên dưới.
Chương này hướng dẫn bạn cách tạo các hộp màu trong một trang của tài liệu PDF.
Tạo hộp trong tài liệu PDF
Bạn có thể thêm các hộp hình chữ nhật trong một trang PDF bằng cách sử dụng addRect() phương pháp của PDPageContentStream lớp học.
Sau đây là các bước để tạo các hình chữ nhật trong một trang của tài liệu PDF.
Bước 1: Tải tài liệu PDF hiện có
Tải tài liệu PDF hiện có bằng phương pháp tĩnh load() sau đó PDDocumentlớp học. Phương thức này chấp nhận một đối tượng tệp như một tham số, vì đây là một phương thức tĩnh nên bạn có thể gọi nó bằng cách sử dụng tên lớp như hình dưới đây.
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
Bước 2: Lấy Đối tượng Trang
Bạn cần truy xuất PDPage đối tượng của trang bắt buộc nơi bạn muốn thêm hình chữ nhật bằng cách sử dụng getPage() phương pháp của PDDocumentlớp học. Đối với phương pháp này, bạn cần chuyển chỉ mục của trang mà bạn muốn thêm hình chữ nhật.
PDPage page = document.getPage(0);
Bước 3: Chuẩn bị Luồng nội dung
Bạn có thể chèn nhiều loại phần tử dữ liệu khác nhau bằng cách sử dụng đối tượng của lớp có tên PDPageContentStream. Do đó, bạn cần phải chuyển đối tượng document và đối tượng trang đến phương thức khởi tạo của lớp này, khởi tạo lớp này bằng cách chuyển hai đối tượng này đã được tạo trong các bước trước đó như hình dưới đây.
PDPageContentStream contentStream = new PDPageContentStream(document, page);
Bước 4: Đặt màu không vuốt
Bạn có thể đặt màu không vuốt sang hình chữ nhật bằng cách sử dụng setNonStrokingColor() phương pháp của lớp PDPageContentStream. Đối với phương pháp này, bạn cần chuyển màu cần thiết làm tham số như hình dưới đây.
contentStream.setNonStrokingColor(Color.DARK_GRAY);
Bước 5: Vẽ hình chữ nhật
Vẽ hình chữ nhật với các kích thước được yêu cầu bằng cách sử dụng addRect()phương pháp. Đối với phương pháp này, bạn cần chuyển các kích thước của hình chữ nhật sẽ được thêm vào như hình dưới đây.
contentStream.addRect(200, 650, 100, 100);
Bước 6: Làm đầy hình chữ nhật
Các fill() phương pháp của PDPageContentStream lớp điền vào đường dẫn giữa các kích thước được chỉ định với màu cần thiết như hình dưới đây.
contentStream.fill();
Bước 7: Đóng tài liệu
Cuối cùng đóng tài liệu bằng close() phương pháp của PDDocument lớp như hình bên dưới.
document.close();
Thí dụ
Giả sử chúng ta có một tài liệu PDF có tên blankpage.pdf trong con đường C:\PdfBox_Examples\ và điều này chứa một trang trống duy nhất như hình dưới đây.
Ví dụ này trình bày cách tạo / chèn hình chữ nhật trong tài liệu PDF. Ở đây, chúng tôi sẽ tạo một hộp trong PDF trống. Lưu mã này thànhAddRectangles.java.
import java.awt.Color;
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
public class ShowColorBoxes {
public static void main(String args[]) throws Exception {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/BlankPage.pdf");
PDDocument document = PDDocument.load(file);
//Retrieving a page of the PDF Document
PDPage page = document.getPage(0);
//Instantiating the PDPageContentStream class
PDPageContentStream contentStream = new PDPageContentStream(document, page);
//Setting the non stroking color
contentStream.setNonStrokingColor(Color.DARK_GRAY);
//Drawing a rectangle
contentStream.addRect(200, 650, 100, 100);
//Drawing a rectangle
contentStream.fill();
System.out.println("rectangle added");
//Closing the ContentStream object
contentStream.close();
//Saving the document
File file1 = new File("C:/PdfBox_Examples/colorbox.pdf");
document.save(file1);
//Closing the document
document.close();
}
}
Biên dịch và thực thi tệp Java đã lưu từ dấu nhắc lệnh bằng các lệnh sau.
javac AddRectangles.java
java AddRectangles
Khi thực thi, chương trình trên tạo ra một hình chữ nhật trong tài liệu PDF hiển thị hình ảnh sau.
Rectangle created
Nếu bạn xác minh đường dẫn đã cho và mở tài liệu đã lưu - colorbox.pdf, bạn có thể quan sát thấy một hộp được chèn trong đó như hình dưới đây.