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 ในเส้นทางที่ระบุคุณสามารถสังเกตได้ว่ามีการเพิ่มเนื้อหาที่ระบุลงในเอกสารหลายบรรทัดดังที่แสดงด้านล่าง