PDFBox - การเพิ่มหลายบรรทัด
ในตัวอย่างที่ให้ไว้ในบทก่อนหน้านี้เราได้กล่าวถึงวิธีการเพิ่มข้อความในหน้าใน PDF แต่ผ่านโปรแกรมนี้คุณสามารถเพิ่มข้อความที่พอดีกับบรรทัดเดียวเท่านั้น หากคุณพยายามเพิ่มเนื้อหาเพิ่มเติมข้อความทั้งหมดที่เกินพื้นที่บรรทัดจะไม่ปรากฏ
ตัวอย่างเช่นหากคุณดำเนินการโปรแกรมข้างต้นในบทก่อนหน้าโดยส่งสตริงต่อไปนี้จะแสดงเพียงบางส่วนเท่านั้น
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";
แทนที่ string textของตัวอย่างในบทก่อนหน้าด้วยสตริงที่กล่าวถึงข้างต้นและดำเนินการ เมื่อดำเนินการคุณจะได้รับผลลัพธ์ต่อไปนี้
หากคุณสังเกตผลลัพธ์อย่างรอบคอบคุณจะสังเกตได้ว่ามีการแสดงสตริงเพียงบางส่วนเท่านั้น
ในการเพิ่มหลายบรรทัดใน PDF คุณต้องตั้งค่านำหน้าโดยใช้ไฟล์ setLeading() วิธีการและเปลี่ยนไปยังบรรทัดใหม่โดยใช้ newline() วิธีการหลังจากจบแต่ละบรรทัด
ขั้นตอน
ต่อไปนี้เป็นขั้นตอนในการสร้างเอกสารเปล่าและเพิ่มเนื้อหาลงในเพจ
ขั้นตอนที่ 1: การโหลดเอกสารที่มีอยู่
คุณสามารถโหลดเอกสารที่มีอยู่โดยใช้ไฟล์ load()วิธีการของคลาส PDDocument ดังนั้นให้สร้างอินสแตนซ์คลาสนี้และโหลดเอกสารที่จำเป็นดังที่แสดงด้านล่าง
File file = new File("Path of the document");
PDDocument doc = PDDocument.load(file);
ขั้นตอนที่ 2: รับหน้าที่ต้องการ
คุณสามารถรับหน้าที่ต้องการในเอกสารโดยใช้ไฟล์ getPage()วิธี. ดึงออบเจ็กต์ของหน้าที่ต้องการโดยส่งดัชนีไปยังวิธีนี้ดังที่แสดงด้านล่าง
PDPage page = doc.getPage(1);
ขั้นตอนที่ 3: เตรียมสตรีมเนื้อหา
คุณสามารถแทรกองค์ประกอบข้อมูลประเภทต่างๆโดยใช้ออบเจ็กต์ของคลาสที่ชื่อ PDPageContentStream. คุณต้องส่งอ็อบเจ็กต์เอกสารและอ็อบเจ็กต์เพจไปยังคอนสตรัคเตอร์ของคลาสนี้ดังนั้นจึงสร้างอินสแตนซ์คลาสนี้โดยส่งอ็อบเจ็กต์ทั้งสองนี้ที่สร้างขึ้นในขั้นตอนก่อนหน้าดังที่แสดงด้านล่าง
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
ขั้นตอนที่ 4: เริ่มต้นข้อความ
ขณะแทรกข้อความในเอกสาร PDF คุณสามารถระบุจุดเริ่มต้นและจุดสิ้นสุดของข้อความโดยใช้ไฟล์ beginText() และ endText() วิธีการของ PDPageContentStream คลาสดังที่แสดงด้านล่าง
contentStream.beginText();
………………………..
code to add text content
………………………..
contentStream.endText();
ดังนั้นให้เริ่มต้นข้อความโดยใช้ไฟล์ beginText() วิธีการดังแสดงด้านล่าง
contentStream.beginText();
ขั้นตอนที่ 5: การตั้งค่าตำแหน่งของข้อความ
ใช้ newLineAtOffset() คุณสามารถกำหนดตำแหน่งบนสตรีมเนื้อหาในเพจได้
//Setting the position for the line
contentStream.newLineAtOffset(25, 700);
ขั้นตอนที่ 6: การตั้งค่าแบบอักษร
คุณสามารถตั้งค่าแบบอักษรของข้อความเป็นรูปแบบที่ต้องการโดยใช้ไฟล์ setFont() วิธีการของ PDPageContentStream คลาสดังที่แสดงด้านล่างสำหรับวิธีนี้คุณต้องผ่านประเภทและขนาดของแบบอักษร
contentStream.setFont( font_type, font_size );
ขั้นตอนที่ 7: การตั้งค่าข้อความนำหน้า
คุณสามารถตั้งค่าข้อความนำหน้าโดยใช้ไฟล์ setLeading() วิธีการดังแสดงด้านล่าง
contentStream.setLeading(14.5f);
ขั้นตอนที่ 8: การแทรกหลายสตริงโดยใช้ขึ้นบรรทัดใหม่ ()
คุณสามารถแทรกหลายสตริงโดยใช้ไฟล์ ShowText() วิธีการของ PDPageContentStream คลาสโดยการหารแต่ละคลาสโดยใช้ newline() วิธีการดังแสดงด้านล่าง
contentStream. ShowText(text1);
contentStream.newLine();
contentStream. ShowText(text2);
ขั้นตอนที่ 9: การสิ้นสุดข้อความ
หลังจากแทรกข้อความคุณจะต้องจบข้อความโดยใช้ไฟล์ endText() วิธีการของ PDPageContentStream คลาสดังที่แสดงด้านล่าง
contentStream.endText();
ขั้นตอนที่ 10: การปิด PDPageContentStream
ปิด PDPageContentStream วัตถุโดยใช้ close() วิธีการดังแสดงด้านล่าง
contentstream.close();
ขั้นตอนที่ 11: บันทึกเอกสาร
หลังจากเพิ่มเนื้อหาที่ต้องการแล้วให้บันทึกเอกสาร PDF โดยใช้ไฟล์ save() วิธีการของ PDDocument คลาสดังที่แสดงในบล็อกโค้ดต่อไปนี้
doc.save("Path");
ขั้นตอนที่ 12: การปิดเอกสาร
สุดท้ายปิดเอกสารโดยใช้ไฟล์ close() วิธีการของ PDDocument คลาสดังที่แสดงด้านล่าง
doc.close();
ตัวอย่าง
ตัวอย่างนี้สาธิตวิธีการเพิ่มหลายบรรทัดใน PDF โดยใช้ PDFBox บันทึกโปรแกรมนี้ในไฟล์ที่มีชื่อAddMultipleLines.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();
}
}
คอมไพล์และเรียกใช้ไฟล์ Java ที่บันทึกไว้จากพรอมต์คำสั่งโดยใช้คำสั่งต่อไปนี้
javac AddMultipleLines.java
java AddMultipleLines
เมื่อดำเนินการโปรแกรมข้างต้นจะเพิ่มข้อความที่กำหนดลงในเอกสารและแสดงข้อความต่อไปนี้
Content added
หากคุณตรวจสอบเอกสาร PDF new.pdf ในเส้นทางที่ระบุคุณสามารถสังเกตได้ว่ามีการเพิ่มเนื้อหาที่ระบุลงในเอกสารหลายบรรทัดดังที่แสดงด้านล่าง