PDFBox - Thêm nhiều dòng
Trong ví dụ được cung cấp trong 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 truyền đối tượng document và đối tượng trang cho 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 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 PDPageContentStream lớp như được hiển thị bên dưới cho 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 văn bản dẫn đầu 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.