Учебники

PDFBox — Добавление текста

В предыдущей главе мы обсуждали, как добавить страницы в PDF-документ. В этой главе мы обсудим, как добавить текст в существующий документ PDF.

Добавление текста в существующий документ PDF

Вы можете добавлять содержимое в документ с помощью библиотеки PDFBox, которая предоставляет вам класс с именем PDPageContentStream, который содержит необходимые методы для вставки текста, изображений и других типов содержимого на страницу PDFDocument.

Ниже приведены шаги для создания пустого документа и добавления содержимого на страницу в нем.

Шаг 1: Загрузка существующего документа

Вы можете загрузить существующий документ, используя метод load () класса PDDocument. Поэтому создайте экземпляр этого класса и загрузите необходимый документ, как показано ниже.

File file = new File("Path of the document"); 
PDDocument doc = document.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: Вставка текста

Вы можете вставить текст на страницу, используя метод ShowText () класса PDPageContentStream, как показано ниже. Этот метод принимает необходимый текст в виде строки.

contentStream.showText(text);

Шаг 8: Завершение текста

После вставки текста необходимо завершить текст с помощью метода endText () класса PDPageContentStream, как показано ниже.

contentStream.endText();

Шаг 9: Закрытие PDPageContentStream

Закройте объект PDPageContentStream, используя метод close (), как показано ниже.

contentstream.close();

Шаг 10: Сохранение документа

После добавления необходимого содержимого сохраните документ PDF с помощью метода save () класса PDDocument, как показано в следующем блоке кода.

doc.save("Path");

Шаг 11: Закрытие документа

Наконец, закройте документ с помощью метода close () класса PDDocument, как показано ниже.

doc.close();

пример

Этот пример демонстрирует, как добавить содержимое на страницу в документе. Здесь мы создадим Java-программу для загрузки документа PDF с именем my_doc.pdf , который сохраняется по пути C: / PdfBox_Examples / , и добавим в него некоторый текст. Сохраните этот код в файле с именем AddingContent.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();
   }
}

Скомпилируйте и выполните сохраненный файл Java из командной строки, используя следующие команды.

javac AddingContent.java 
java AddingContent 

После выполнения вышеуказанная программа добавляет данный текст в документ и отображает следующее сообщение.

Content added

Если вы проверите PDF Document new.pdf по указанному пути, вы увидите, что данное содержимое добавляется в документ, как показано ниже.