Учебники

PDFBox — Вставка изображения

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

Вставка изображения в документ PDF

Вы можете вставить изображение в документ PDF, используя методы createFromFile () и drawImage () классов PDImageXObject и PDPageContentStream соответственно.

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

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

Загрузите существующий документ PDF, используя статический метод load () класса PDDocument . Этот метод принимает объект файла в качестве параметра, поскольку это статический метод, который можно вызвать, используя имя класса, как показано ниже.

File file = new File("path of the document")
PDDocument doc = PDDocument.load(file);

Шаг 2: Получение страницы

Выберите страницу в документе PDF и получите ее объект страницы, используя метод getPage (), как показано ниже.

PDPage page = doc.getPage(0);

Шаг 3: Создание объекта PDImageXObject

Класс PDImageXObject в библиотеке PDFBox представляет изображение. Он предоставляет все необходимые методы для выполнения операций, связанных с изображением, таких как вставка изображения, установка его высоты, установка его ширины и т. Д.

Мы можем создать объект этого класса, используя метод createFromFile () . Для этого метода нам нужно передать путь к изображению, которое мы хотим добавить, в форме строки и объект документа, к которому нужно добавить изображение.

PDImageXObject pdImage = PDImageXObject. createFromFile ("C:/logo.png", doc);

Шаг 4. Подготовка потока контента

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

PDPageContentStream contentStream = new PDPageContentStream(doc, page);

Шаг 5: Рисование изображения в PDF документе

Вы можете вставить изображение в документ PDF, используя метод drawImage () . К этому методу необходимо добавить объект изображения, созданный на предыдущем шаге, и необходимые размеры изображения (ширина и высота), как показано ниже.

contentstream.drawImage(pdImage, 70, 250);

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

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

contentstream.close();

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

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

doc.save("Path");

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

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

doc.close();

пример

Предположим, у нас есть документ PDF с именем sample.pdf по пути C: / PdfBox_Examples / с пустыми страницами, как показано ниже.

Образец документа

Этот пример демонстрирует, как добавить изображение на пустую страницу вышеупомянутого документа PDF. Здесь мы загрузим документ PDF с именем sample.pdf и добавим к нему изображение. Сохраните этот код в файле с именем InsertingImage.java.

import java.io.File;
  
import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;

public class InsertingImage {

   public static void main(String args[]) throws Exception {
      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument doc = PDDocument.load(file);
        
      //Retrieving the page
      PDPage page = doc.getPage(0);
       
      //Creating PDImageXObject object
      PDImageXObject pdImage = PDImageXObject.createFromFile("C:/PdfBox_Examples/logo.png",doc);
       
      //creating the PDPageContentStream object
      PDPageContentStream contents = new PDPageContentStream(doc, page);

      //Drawing the image in the PDF document
      contents.drawImage(pdImage, 70, 250);

      System.out.println("Image inserted");
      
      //Closing the PDPageContentStream object
      contents.close();		
		
      //Saving the document
      doc.save("C:/PdfBox_Examples/sample.pdf");
            
      //Closing the document
      doc.close();
     
   }
}

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

javac InsertingImage.java 
java InsertingImage

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

Image inserted

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