PDFBox - Thêm văn bản
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, phầ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 bắt buộc để 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 cho hàm tạo của lớp này, do đó, khởi tạo lớp này bằng cách chuyển hai đối tượng này đã được tạo ở các bước trước như được hiển thị bên dưới.
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 luồ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 theo kiểu yêu cầu 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.