Учебники

PDFBox — Краткое руководство

PDFBox — Обзор

Portable Document Format (PDF) — это формат файла, который помогает представлять данные способом, независимым от прикладного программного обеспечения, аппаратного обеспечения и операционных систем.

Каждый файл PDF содержит описание плоского документа с фиксированным макетом, включая текст, шрифты, графику и другую информацию, необходимую для его отображения.

Существует несколько библиотек для создания и управления документами PDF с помощью программ, таких как —

  • Библиотека Adobe PDF — эта библиотека предоставляет API на таких языках, как C ++, .NET и Java, и с ее помощью мы можем редактировать, просматривать печать и извлекать текст из документов PDF.

  • Процессор форматирования объектов — Форматер печати с открытым исходным кодом, управляемый объектами форматирования XSL и независимым форматом вывода. Основной целью вывода является PDF.

  • iText — эта библиотека предоставляет API на таких языках, как Java, C # и другие языки .NET, и с помощью этой библиотеки мы можем создавать документы PDF, RTF и HTML и манипулировать ими.

  • JasperReports — это инструмент создания отчетов Java, который генерирует отчеты в формате PDF, включая Microsoft Excel, RTF, ODT, значения, разделенные запятыми, и файлы XML.

Библиотека Adobe PDF — эта библиотека предоставляет API на таких языках, как C ++, .NET и Java, и с ее помощью мы можем редактировать, просматривать печать и извлекать текст из документов PDF.

Процессор форматирования объектов — Форматер печати с открытым исходным кодом, управляемый объектами форматирования XSL и независимым форматом вывода. Основной целью вывода является PDF.

iText — эта библиотека предоставляет API на таких языках, как Java, C # и другие языки .NET, и с помощью этой библиотеки мы можем создавать документы PDF, RTF и HTML и манипулировать ими.

JasperReports — это инструмент создания отчетов Java, который генерирует отчеты в формате PDF, включая Microsoft Excel, RTF, ODT, значения, разделенные запятыми, и файлы XML.

Что такое PDFBox

Apache PDFBox — это библиотека Java с открытым исходным кодом, которая поддерживает разработку и преобразование документов PDF. Используя эту библиотеку, вы можете разрабатывать Java-программы, которые создают, конвертируют и обрабатывают документы PDF.

В дополнение к этому, PDFBox также содержит утилиту командной строки для выполнения различных операций над PDF с использованием доступного файла Jar.

Особенности PDFBox

Ниже приведены заметные особенности PDFBox —

  • Извлечь текст — Используя PDFBox, вы можете извлекать текст Unicode из файлов PDF.

  • Разделить и объединить — Используя PDFBox, вы можете разделить один файл PDF на несколько файлов и объединить их обратно в один файл.

  • Заполнение форм — Используя PDFBox, вы можете заполнить данные формы в документе.

  • Печать — с помощью PDFBox вы можете распечатать PDF-файл, используя стандартный API печати Java.

  • Сохранить как изображение — Используя PDFBox, вы можете сохранять PDF-файлы в виде файлов изображений, таких как PNG или JPEG.

  • Создание PDF-файлов. С помощью PDFBox вы можете создавать новые PDF-файлы, создавая программы на Java, а также добавлять изображения и шрифты.

  • Подписание. С помощью PDFBox вы можете добавлять цифровые подписи в файлы PDF.

Извлечь текст — Используя PDFBox, вы можете извлекать текст Unicode из файлов PDF.

Разделить и объединить — Используя PDFBox, вы можете разделить один файл PDF на несколько файлов и объединить их обратно в один файл.

Заполнение форм — Используя PDFBox, вы можете заполнить данные формы в документе.

Печать — с помощью PDFBox вы можете распечатать PDF-файл, используя стандартный API печати Java.

Сохранить как изображение — Используя PDFBox, вы можете сохранять PDF-файлы в виде файлов изображений, таких как PNG или JPEG.

Создание PDF-файлов. С помощью PDFBox вы можете создавать новые PDF-файлы, создавая программы на Java, а также добавлять изображения и шрифты.

Подписание. С помощью PDFBox вы можете добавлять цифровые подписи в файлы PDF.

Приложения PDFBox

Ниже приведены приложения PDFBox —

  • Apache Nutch — Apache Nutch — это программное обеспечение для веб-поиска с открытым исходным кодом. Он основан на Apache Lucene, добавляя веб-особенности, такие как сканер, база данных графа ссылок, парсеры для HTML и других форматов документов и т. Д.

  • Apache Tika — Apache Tika — это набор инструментов для обнаружения и извлечения метаданных и структурированного текстового содержимого из различных документов с использованием существующих библиотек синтаксического анализатора.

Apache Nutch — Apache Nutch — это программное обеспечение для веб-поиска с открытым исходным кодом. Он основан на Apache Lucene, добавляя веб-особенности, такие как сканер, база данных графа ссылок, парсеры для HTML и других форматов документов и т. Д.

Apache Tika — Apache Tika — это набор инструментов для обнаружения и извлечения метаданных и структурированного текстового содержимого из различных документов с использованием существующих библиотек синтаксического анализатора.

Компоненты PDFBox

Ниже приведены четыре основных компонента PDFBox —

  • PDFBox — это основная часть PDFBox. Он содержит классы и интерфейсы, связанные с извлечением контента и манипулированием им.

  • FontBox — содержит классы и интерфейсы, связанные со шрифтом, и с помощью этих классов мы можем изменить шрифт текста документа PDF.

  • XmpBox — содержит классы и интерфейсы, которые обрабатывают метаданные XMP.

  • Предпечатная проверка — этот компонент используется для проверки файлов PDF на соответствие стандарту PDF / A-1b.

PDFBox — это основная часть PDFBox. Он содержит классы и интерфейсы, связанные с извлечением контента и манипулированием им.

FontBox — содержит классы и интерфейсы, связанные со шрифтом, и с помощью этих классов мы можем изменить шрифт текста документа PDF.

XmpBox — содержит классы и интерфейсы, которые обрабатывают метаданные XMP.

Предпечатная проверка — этот компонент используется для проверки файлов PDF на соответствие стандарту PDF / A-1b.

PDFBox — Окружающая среда

Установка PDFBox

Ниже приведены шаги для загрузки Apache PDFBox —

Шаг 1 — Откройте домашнюю страницу Apache PDFBox , перейдя по следующей ссылке — https://pdfbox.apache.org/

Шаг 2 — Приведенная выше ссылка направит вас на домашнюю страницу, как показано на следующем снимке экрана —

Домашняя страница PDFBox

Шаг 3 — Теперь нажмите на ссылку Загрузки, выделенную на скриншоте выше. При нажатии вы будете перенаправлены на страницу загрузки PDFBox, как показано на следующем снимке экрана.

PDFBox Downloads.jpg

Шаг 4 — На странице загрузок у вас будут ссылки для PDFBox. Нажмите на соответствующую ссылку для последней версии. Например, мы выбираем PDFBox 2.0.1 и, щелкнув по нему, вы будете перенаправлены на необходимые файлы jar, как показано на следующем снимке экрана.

PDFBox Jarfiles.jpg

Шаг 5 — Загрузите файлы jar: pdfbox-2.0.1.jar, fontbox-2.0.1.jar, preflight-2.0.1.jar, xmpbox-2.0.1.jar и pdfbox-tools-2.0.1.jar.

Установка Затмения

После загрузки необходимых файлов JAR вам необходимо встроить эти файлы JAR в вашу среду Eclipse. Вы можете сделать это, установив путь сборки для этих файлов JAR и используя pom.xml .

Установка пути сборки

Ниже приведены инструкции по установке PDFBox в Eclipse.

Шаг 1 — Убедитесь, что вы установили Eclipse в вашей системе. Если нет, загрузите и установите Eclipse в своей системе.

Шаг 2. Откройте Eclipse, нажмите «Файл», «Новый» и откройте новый проект, как показано на следующем снимке экрана.

Eclipse file menu

Шаг 3 — При выборе проекта вы получите мастер New Project . В этом мастере выберите проект Java и нажмите кнопку « Далее» , как показано на следующем снимке экрана.

Eclipse Newproject wizard

Шаг 4. В дальнейшем вы будете перенаправлены в мастер New Java Project . Создайте новый проект и нажмите « Далее», как показано на следующем снимке экрана.

Мастер создания проекта

Шаг 5 — После создания нового проекта, щелкните по нему правой кнопкой мыши; выберите Build Path и нажмите Configure Build Path…, как показано на следующем снимке экрана.

Eclipse build path

Шаг 6 — Нажав на опцию Build Path, вы будете перенаправлены к мастеру Java Build Path . Выберите Add External JARs, как показано на следующем снимке экрана.

Затмение Внешние банки

Шаг 7 — Выберите файлы jar fontbox-2.0.1.jar, pdfbox-2.0.1.jar, pdfbox-tools-2.0.1.jar, preflight-2.0.1.jar, xmpbox-2.0.1.jar, как показано на следующем скриншоте.

Расположение Jar Files

Шаг 8 — При нажатии кнопки « Открыть» на приведенном выше снимке экрана эти файлы будут добавлены в вашу библиотеку, как показано на следующем снимке экрана.

Добавлены файлы Jar

Шаг 9 — Нажав OK , вы успешно добавите необходимые JAR-файлы в текущий проект и сможете проверить эти добавленные библиотеки, развернув ссылочные библиотеки, как показано на следующем снимке экрана.

Файлы Eclipse Jar

Использование pom.xml

Преобразуйте проект в проект maven и добавьте следующее содержимое в его файл pom.xml.

<project xmlns="https://maven.apache.org/POM/4.0.0"
   xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="https://maven.apache.org/POM/4.0.0
   https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>my_project</groupId>
   <artifactId>my_project</artifactId>
   <version>0.0.1-SNAPSHOT</version>

   <build>
      <sourceDirectory>src</sourceDirectory>
      <plugins>
         <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.3</version>
            <configuration>
               <source>1.8</source>
               <target>1.8</target>
            </configuration> 
         </plugin>
      </plugins> 
   </build> 
   
   <dependencies>  
      <dependency> 
         <groupId>org.apache.pdfbox</groupId> 
         <artifactId>pdfbox</artifactId> 
         <version>2.0.1</version> 
      </dependency>   
   
      <dependency> 
         <groupId>org.apache.pdfbox</groupId> 
         <artifactId>fontbox</artifactId> 
         <version>2.0.0</version> 
      </dependency>
      
      <dependency>  
         <groupId>org.apache.pdfbox</groupId> 
         <artifactId>jempbox</artifactId> 
         <version>1.8.11</version> 
      </dependency> 
        
      <dependency>
         <groupId>org.apache.pdfbox</groupId> 
         <artifactId>xmpbox</artifactId> 
         <version>2.0.0</version> 
      </dependency> 
     
      <dependency> 
         <groupId>org.apache.pdfbox</groupId> 
         <artifactId>preflight</artifactId> 
         <version>2.0.0</version> 
      </dependency> 
     
      <dependency> 
         <groupId>org.apache.pdfbox</groupId> 
         <artifactId>pdfbox-tools</artifactId> 
         <version>2.0.0</version> 
      </dependency>

   </dependencies>
   
</project>

PDFBox — Создание PDF документа

Давайте теперь поймем, как создать PDF-документ, используя библиотеку PDFBox.

Создание пустого PDF-документа

Вы можете создать пустой PDF документ, создав экземпляр класса PDDocument . Вы можете сохранить документ в нужном вам месте, используя метод Save () .

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

Шаг 1: Создание пустого документа

Класс PDDocument , принадлежащий пакету org.apache.pdfbox.pdmodel , представляет собой представление PDFDocument в оперативной памяти. Поэтому, создавая экземпляр этого класса, вы можете создать пустой PDFDocument, как показано в следующем блоке кода.

PDDocument document = new PDDocument();

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

После создания документа вам нужно сохранить этот документ по нужному пути, вы можете сделать это с помощью метода Save () класса PDDocument . Этот метод принимает строковое значение, представляющее путь, где вы хотите сохранить документ, в качестве параметра. Ниже приведен прототип метода save () класса PDDocument .

document.save("Path");

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

Когда ваша задача завершена, в конце вам необходимо закрыть объект PDDocument с помощью метода close () . Ниже приведен прототип метода close () класса PDDocument .

document.close();

пример

Этот пример демонстрирует создание документа PDF. Здесь мы создадим программу на Java для создания PDF-документа с именем my_doc.pdf и сохраним его по пути C: / PdfBox_Examples / . Сохраните этот код в файле с именем Document_Creation.java.

import java.io.IOException; 
import org.apache.pdfbox.pdmodel.PDDocument;
  
public class Document_Creation {
    
   public static void main (String args[]) throws IOException {
       
      //Creating PDF document object 
      PDDocument document = new PDDocument();    
       
      //Saving the document
      document.save("C:/PdfBox_Examples/my_doc.pdf");
         
      System.out.println("PDF created");  
    
      //Closing the document  
      document.close();

   }  
}

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

javac Document_Creation.java 
java Document_Creation

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

PDF created

Если вы проверите указанный путь, вы можете найти созданный PDF-документ, как показано ниже.

Мой Док сохранен

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

Пустой PDF

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

В предыдущей главе мы увидели, как создать PDF-документ. После создания PDF-документа вам необходимо добавить к нему страницы. Давайте теперь поймем, как добавить страницы в PDF документ.

Добавление страниц в документ PDF

Вы можете создать пустую страницу, создав экземпляр класса PDPage и добавив его в документ PDF с помощью метода addPage () класса PDDocument .

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

Шаг 1: Создание пустого документа

Создайте пустой документ PDF, создав экземпляр класса PDDocument, как показано ниже.

PDDocument document = new PDDocument();

Шаг 2: Создание пустой страницы

Класс PDPage представляет страницу в документе PDF, поэтому вы можете создать пустую страницу, создав экземпляр этого класса, как показано в следующем блоке кода.

PDPage my_page = new PDPage();

Шаг 3: Добавление страницы в документ

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

Поэтому добавьте пустую страницу, созданную на предыдущем шаге, к объекту PDDocument, как показано в следующем блоке кода.

document.addPage(my_page);

Таким образом, вы можете добавить столько страниц, сколько хотите в PDF-документ.

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

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

document.save("Path");

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

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

document.close();

пример

В этом примере показано, как создать документ PDF и добавить к нему страницы. Здесь мы создадим PDF-документ с именем my_doc.pdf, добавим к нему 10 пустых страниц и сохраним его по пути C: / PdfBox_Examples / . Сохраните этот код в файле с именем Adding_pages.java.

package document;
 
import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;

public class Adding_Pages {

   public static void main(String args[]) throws IOException {
       
      //Creating PDF document object 
      PDDocument document = new PDDocument();

      for (int i=0; i<10; i++) {
         //Creating a blank page 
         PDPage blankPage = new PDPage();

         //Adding the blank page to the document
         document.addPage( blankPage );
      } 
     
      //Saving the document
      document.save("C:/PdfBox_Examples/my_doc.pdf");
      System.out.println("PDF created");
      
      //Closing the document
      document.close();

   }  
} 

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

javac Adding_pages.java 
java Adding_pages 

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

PDF created 

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

Создать документ

PDFBox — загрузка документа

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

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

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

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

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

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

Шаг 2. Выполните необходимые операции

Выполните необходимые операции, такие как добавление страниц, добавление текста, добавление изображений в загруженный документ.

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

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

document.save("Path");

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

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

document.close();

пример

Предположим, у нас есть документ PDF, который содержит одну страницу в пути C: / PdfBox_Examples /, как показано на следующем снимке экрана.

Загрузка документа

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

Шаг 1 — Сохраните этот код в файле с именем LoadingExistingDocument.java.

import java.io.File;
import java.io.IOException;
 
import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.pdmodel.PDPage;
public class LoadingExistingDocument {

   public static void main(String args[]) throws IOException {
   
      //Loading an existing document 
      File file = new File("C:/PdfBox_Examples/sample.pdf"); 
      PDDocument document = PDDocument.load(file); 
        
      System.out.println("PDF loaded"); 
        
      //Adding a blank page to the document 
      document.addPage(new PDPage());  

      //Saving the document 
      document.save("C:/PdfBox_Examples/sample.pdf");

      //Closing the document  
      document.close(); 
        
   }  
}

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

javac LoadingExistingDocument.java  
java LoadingExistingDocument 

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

PDF loaded

Если вы проверите указанный путь, вы можете найти дополнительную страницу, добавленную к указанному документу PDF, как показано ниже.

Дополнительная страница в документе

PDFBox — Удаление страниц

Давайте теперь узнаем, как удалить страницы из документа PDF.

Удаление страниц из существующего документа

Вы можете удалить страницу из существующего документа PDF, используя метод removePage () класса PDDocument .

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

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

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

Шаг 2: перечисление количества страниц

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

int noOfPages= document.getNumberOfPages();
System.out.print(noOfPages);

Шаг 3: Удаление страницы

Вы можете удалить страницу из документа PDF с помощью метода removePage () класса PDDocument . Для этого метода вам нужно передать индекс страницы, которая должна быть удалена.

При указании индекса для страниц в документе PDF, имейте в виду, что индексация этих страниц начинается с нуля, т. Е. Если вы хотите удалить первую страницу, тогда значение индекса должно быть 0.

document.removePage(2);

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

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

document.save("Path");

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

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

document.close();

пример

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

Удаление страницы перед

Этот пример демонстрирует, как удалить страницы из существующего документа PDF. Здесь мы загрузим указанный выше PDF-документ с именем sample.pdf , удалим из него страницу и сохраним его по пути C: / PdfBox_Examples / . Сохраните этот код в файле с именем Removing_pages.java .

import java.io.File;
import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;

public class RemovingPages {

   public static void main(String args[]) throws IOException {

      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument document = PDDocument. load (file);
       
      //Listing the number of existing pages
      int noOfPages= document.getNumberOfPages();
      System.out.print(noOfPages);
       
      //Removing the pages
      document.removePage(2);
      
      System.out.println("page removed");

      //Saving the document
      document.save("C:/PdfBox_Examples/sample.pdf");

      //Closing the document
      document.close();

   }
}

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

javac RemovingPages.java 
java RemovingPages 

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

3
page removed

Если вы проверите указанный путь, вы обнаружите, что требуемая страница была удалена, и в документе остались только две страницы, как показано ниже.

Удаление страницы после

PDFBox — Свойства документа

Как и другие файлы, документ PDF также имеет свойства документа. Эти свойства являются парами ключ-значение. Каждое свойство дает конкретную информацию о документе.

Ниже приведены свойства документа PDF:

S.No. Описание недвижимости
1

файл

Это свойство содержит имя файла.

2

заглавие

Используя это свойство, вы можете установить заголовок документа.

3

автор

Используя это свойство, вы можете указать имя автора документа.

4

Предмет

Используя это свойство, вы можете указать тему документа PDF.

5

Ключевые слова

Используя это свойство, вы можете перечислить ключевые слова, по которым мы можем искать документ.

6

созданный

Используя это свойство, вы можете установить дату создания документа.

7

модифицированный

Используя это свойство, вы можете установить дату изменения документа.

8

заявка

Используя это свойство, вы можете установить приложение документа.

файл

Это свойство содержит имя файла.

заглавие

Используя это свойство, вы можете установить заголовок документа.

автор

Используя это свойство, вы можете указать имя автора документа.

Предмет

Используя это свойство, вы можете указать тему документа PDF.

Ключевые слова

Используя это свойство, вы можете перечислить ключевые слова, по которым мы можем искать документ.

созданный

Используя это свойство, вы можете установить дату создания документа.

модифицированный

Используя это свойство, вы можете установить дату изменения документа.

заявка

Используя это свойство, вы можете установить приложение документа.

Ниже приведен скриншот таблицы свойств документа PDF-документа.

Свойства PDF

Установка свойств документа

PDFBox предоставляет вам класс с именем PDDocumentInformation . Этот класс имеет набор методов установки и получения.

Методы установки этого класса используются для установки значений для различных свойств документа и методов получения, которые используются для получения этих значений.

Ниже приведены методы установки класса PDDocumentInformation .

S.No. Метод и описание
1

setAuthor (Автор строки)

Этот метод используется для установки значения свойства документа PDF с именем Author .

2

setTitle (строковое название)

Этот метод используется для установки значения для свойства документа PDF с именем Title .

3

setCreator (создатель строк)

Этот метод используется для установки значения свойства документа PDF с именем Creator .

4

setSubject (String subject)

Этот метод используется для установки значения свойства PDF-документа с именем Subject .

5

setCreationDate (Календарная дата)

Этот метод используется для установки значения свойства документа PDF с именем CreationDate .

6

setModificationDate (Календарная дата)

Этот метод используется для установки значения свойства документа PDF с именем ModificationDate .

7

setKeywords (список ключевых слов String)

Этот метод используется для установки значения свойства документа PDF с именем Ключевые слова .

setAuthor (Автор строки)

Этот метод используется для установки значения свойства документа PDF с именем Author .

setTitle (строковое название)

Этот метод используется для установки значения для свойства документа PDF с именем Title .

setCreator (создатель строк)

Этот метод используется для установки значения свойства документа PDF с именем Creator .

setSubject (String subject)

Этот метод используется для установки значения свойства PDF-документа с именем Subject .

setCreationDate (Календарная дата)

Этот метод используется для установки значения свойства документа PDF с именем CreationDate .

setModificationDate (Календарная дата)

Этот метод используется для установки значения свойства документа PDF с именем ModificationDate .

setKeywords (список ключевых слов String)

Этот метод используется для установки значения свойства документа PDF с именем Ключевые слова .

пример

PDFBox предоставляет класс PDDocumentInformation, и этот класс предоставляет различные методы. Эти методы могут устанавливать различные свойства документа и извлекать их.

В этом примере показано, как добавить такие свойства, как « Автор», «Заголовок», «Дата» и «Тема» в документ PDF. Здесь мы создадим документ PDF с именем doc_attributes.pdf , добавим к нему различные атрибуты и сохраним его по пути C: / PdfBox_Examples / . Сохраните этот код в файле с именем AddingAttributes.java .

import java.io.IOException; 
import java.util.Calendar; 
import java.util.GregorianCalendar;
  
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
import org.apache.pdfbox.pdmodel.PDPage;

public class AddingDocumentAttributes {
   public static void main(String args[]) throws IOException {

      //Creating PDF document object
      PDDocument document = new PDDocument();

      //Creating a blank page
      PDPage blankPage = new PDPage();
       
      //Adding the blank page to the document
      document.addPage( blankPage );

      //Creating the PDDocumentInformation object 
      PDDocumentInformation pdd = document.getDocumentInformation();

      //Setting the author of the document
      pdd.setAuthor("Tutorialspoint");
       
      // Setting the title of the document
      pdd.setTitle("Sample document"); 
       
      //Setting the creator of the document 
      pdd.setCreator("PDF Examples"); 
       
      //Setting the subject of the document 
      pdd.setSubject("Example document"); 
       
      //Setting the created date of the document 
      Calendar date = new GregorianCalendar();
      date.set(2015, 11, 5); 
      pdd.setCreationDate(date);
      //Setting the modified date of the document 
      date.set(2016, 6, 5); 
      pdd.setModificationDate(date); 
       
      //Setting keywords for the document 
      pdd.setKeywords("sample, first example, my pdf"); 
 
      //Saving the document 
      document.save("C:/PdfBox_Examples/doc_attributes.pdf");

      System.out.println("Properties added successfully ");
       
      //Closing the document
      document.close();

   }
}

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

javac AddingAttributes.java 
java AddingAttributes 

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

Properties added successfully

Теперь, если вы зайдете по указанному пути, вы сможете найти созданный в нем PDF-файл. Щелкните правой кнопкой мыши документ и выберите параметр свойств документа, как показано ниже.

Свойства документа

Это откроет вам окно свойств документа, и здесь вы увидите, что все свойства документа были установлены на заданные значения.

Меню свойств

Получение свойств документа

Вы можете получить свойства документа, используя методы получения, предоставляемые классом PDDocumentInformation .

Ниже приведены методы получения класса PDDocumentInformation .

S.No. Метод и описание
1

getAuthor ()

Этот метод используется для получения значения свойства документа PDF с именем Author .

2

GetTitle ()

Этот метод используется для получения значения для свойства документа PDF с именем Title .

3

getCreator ()

Этот метод используется для получения значения свойства документа PDF с именем Creator .

4

getSubject ()

Этот метод используется для получения значения свойства документа PDF с именем Subject .

5

getCreationDate ()

Этот метод используется для получения значения свойства документа PDF с именем CreationDate .

6

getModificationDate ()

Этот метод используется для получения значения свойства документа PDF с именем ModificationDate .

7

getKeywords ()

Этот метод используется для получения значения для свойства документа PDF с именем Ключевые слова .

getAuthor ()

Этот метод используется для получения значения свойства документа PDF с именем Author .

GetTitle ()

Этот метод используется для получения значения для свойства документа PDF с именем Title .

getCreator ()

Этот метод используется для получения значения свойства документа PDF с именем Creator .

getSubject ()

Этот метод используется для получения значения свойства документа PDF с именем Subject .

getCreationDate ()

Этот метод используется для получения значения свойства документа PDF с именем CreationDate .

getModificationDate ()

Этот метод используется для получения значения свойства документа PDF с именем ModificationDate .

getKeywords ()

Этот метод используется для получения значения для свойства документа PDF с именем Ключевые слова .

пример

Этот пример демонстрирует, как получить свойства существующего документа PDF. Здесь мы создадим программу на Java и загрузим документ PDF с именем doc_attributes.pdf , который сохраняется по пути C: / PdfBox_Examples / , и получим его свойства. Сохраните этот код в файле с именем RetrivingDocumentAttributes.java .

import java.io.File; 
import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.pdmodel.PDDocumentInformation;

public class RetrivingDocumentAttributes {
   public static void main(String args[]) throws IOException {
      
      //Loading an existing document 
      File file = new File("C:/PdfBox_Examples/doc_attributes.pdf")
      PDDocument document = PDDocument.load(file);
      //Getting the PDDocumentInformation object
      PDDocumentInformation pdd = document.getDocumentInformation();

      //Retrieving the info of a PDF document
      System.out.println("Author of the document is :"+ pdd.getAuthor());
      System.out.println("Title of the document is :"+ pdd.getTitle());
      System.out.println("Subject of the document is :"+ pdd.getSubject());

      System.out.println("Creator of the document is :"+ pdd.getCreator());
      System.out.println("Creation date of the document is :"+ pdd.getCreationDate());
      System.out.println("Modification date of the document is :"+ 
         pdd.getModificationDate()); 
      System.out.println("Keywords of the document are :"+ pdd.getKeywords()); 
       
      //Closing the document 
      document.close();        
   }  
}      

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

javac RetrivingDocumentAttributes.java 
java RetrivingDocumentAttributes

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

Author of the document is :Tutorialspoint 
Title of the document is :Sample document 
Subject of the document is :Example document 
Creator of the document is :PDF Examples 
Creation date of the document is :11/5/2015
Modification date of the document is :6/5/2016
Keywords of the document are :sample, first example, my pdf

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 по указанному пути, вы увидите, что данное содержимое добавляется в документ, как показано ниже.

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

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";

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

Одна строка расширена

Если вы внимательно наблюдаете за выводом, вы можете заметить, что отображается только часть строки.

Чтобы добавить несколько строк в 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: Вставка нескольких строк с помощью newline ()

Вы можете вставить несколько строк с помощью метода 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 Document new.pdf по указанному пути, вы увидите, что данное содержимое добавляется в документ в несколько строк, как показано ниже.

Добавление нескольких строк

PDFBox — чтение текста

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

Извлечение текста из существующего документа PDF

Извлечение текста — одна из основных функций библиотеки PDF-боксов. Вы можете извлечь текст, используя метод getText () класса PDFTextStripper . Этот класс извлекает весь текст из данного документа PDF.

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

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

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

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

Шаг 2. Создание экземпляра класса PDFTextStripper

Класс PDFTextStripper предоставляет методы для извлечения текста из документа PDF, поэтому создайте экземпляр этого класса, как показано ниже.

PDFTextStripper pdfStripper = new PDFTextStripper();

Шаг 3: Получение текста

Вы можете прочитать / получить содержимое страницы из документа PDF, используя метод getText () класса PDFTextStripper . Для этого метода вам нужно передать объект документа в качестве параметра. Этот метод извлекает текст в заданном документе и возвращает его в форме объекта String.

String text = pdfStripper.getText(document);

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

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

document.close();

пример

Предположим, у нас есть документ PDF с текстом, как показано ниже.

Пример PDF

Этот пример демонстрирует, как читать текст из вышеупомянутого документа PDF. Здесь мы создадим программу на Java и загрузим PDF-документ с именем new.pdf , который сохраняется по пути C: / PdfBox_Examples / . Сохраните этот код в файле с именем ReadingText.java .

import java.io.File;
import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
public class ReadingText {

   public static void main(String args[]) throws IOException {

      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/new.pdf");
      PDDocument document = PDDocument.load(file);

      //Instantiate PDFTextStripper class
      PDFTextStripper pdfStripper = new PDFTextStripper();

      //Retrieving text from PDF document
      String text = pdfStripper.getText(document);
      System.out.println(text);

      //Closing the document
      document.close();

   }
}

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

javac ReadingText.java 
java ReadingText

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

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.

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 , вы увидите , что в него вставлено изображение, как показано ниже.

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

PDFBox — Шифрование PDF документа

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

Шифрование PDF документа

Вы можете зашифровать документ PDF, используя методы, предоставляемые классами StandardProtectionPolicy и AccessPermission .

Класс AccessPermission используется для защиты документа PDF путем назначения ему прав доступа. Используя этот класс, вы можете запретить пользователям выполнять следующие операции.

  • Распечатать документ
  • Изменить содержание документа
  • Копировать или извлечь содержимое документа
  • Добавить или изменить аннотации
  • Заполните поля интерактивной формы
  • Извлечение текста и графики для доступности для людей с нарушениями зрения
  • Собрать документ
  • Печать в ухудшенном качестве

Класс StandardProtectionPolicy используется для добавления защиты документа на основе пароля.

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

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

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

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

Шаг 2: Создание объекта прав доступа

Создайте класс AccessPermission, как показано ниже.

AccessPermission accessPermission = new AccessPermission();

Шаг 3. Создание объекта StandardProtectionPolicy

Создайте экземпляр класса StandardProtectionPolicy , передав пароль владельца, пароль пользователя и объект AccessPermission, как показано ниже.

StandardProtectionPolicy spp = new StandardProtectionPolicy("1234","1234",accessPermission);

Шаг 4: Установка длины ключа шифрования

Установите длину ключа шифрования, используя метод setEncryptionKeyLength (), как показано ниже.

spp.setEncryptionKeyLength(128);

Шаг 5: Установка разрешений

Установите разрешения с помощью метода setPermissions () класса StandardProtectionPolicy. Этот метод принимает объект AccessPermission в качестве параметра.

spp.setPermissions(accessPermission);

Шаг 6: Защита документа

Вы можете защитить свой документ с помощью метода protect () класса PDDocument, как показано ниже. Передайте объект StandardProtectionPolicy в качестве параметра этому методу.

document.protect(spp);

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

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

document.save("Path");

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

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

document.close();

пример

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

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

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

import java.io.File;
 
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
public class EncriptingPDF {
  
   public static void main(String args[]) throws Exception {
      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument document = PDDocument.load(file);
   
      //Creating access permission object
      AccessPermission ap = new AccessPermission();         

      //Creating StandardProtectionPolicy object
      StandardProtectionPolicy spp = new StandardProtectionPolicy("1234", "1234", ap);

      //Setting the length of the encryption key
      spp.setEncryptionKeyLength(128);

      //Setting the access permissions
      spp.setPermissions(ap);

      //Protecting the document
      document.protect(spp);

      System.out.println("Document encrypted");

      //Saving the document
      document.save("C:/PdfBox_Examples/sample.pdf");
      //Closing the document
      document.close();

   }
}

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

javac EncriptingPDF.java
java EncriptingPDF

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

Document encrypted

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

Шифрование документов

PDFBox — JavaScript в PDF документе

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

Добавление JavaScript в PDF-документ

Вы можете добавить действия JavaScript в PDF-документ, используя класс PDActionJavaScript . Это представляет действие JavaScript.

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

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

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

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

Шаг 2: Создание объекта PDActionJavaScript

Создайте объект PDActionJavaScript, как показано ниже. В конструктор этого класса передайте необходимый JavaScript в форме String, как показано ниже.

String javaScript = "app.alert( {cMsg: 'this is an example', nIcon: 3,"
   + " nType: 0,cTitle: 'PDFBox Javascript example' } );";       
PDActionJavaScript PDAjavascript = new PDActionJavaScript(javaScript);

Шаг 3: Встраивание Java-скрипта в документ

Вставьте необходимую строку в PDF-документ, как показано ниже.

document.getDocumentCatalog().setOpenAction(PDAjavascript);

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

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

document.save("Path");

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

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

document.close();

пример

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

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

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

import java.io.File;
  
import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.pdmodel.interactive.action.PDActionJavaScript;

public class AddJavaScript {

   public static void main(String args[]) throws Exception {

      //Loading an existing file
      File file = new File("C:/PdfBox_Examples/new.pdf");
      PDDocument document = PDDocument.load(file);

      String javaScript = "app.alert( {cMsg: 'this is an example', nIcon: 3,"
         + " nType: 0, cTitle: 'PDFBox Javascript example’} );";

      //Creating PDActionJavaScript object 
      PDActionJavaScript PDAjavascript = new PDActionJavaScript(javaScript);

      //Embedding java script
      document.getDocumentCatalog().setOpenAction(PDAjavascript);

      //Saving the document
      document.save( new File("C:/PdfBox_Examples/new.pdf") );
      System.out.println("Data added to the given PDF"); 

      //Closing the document
      document.close();

   }
}

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

javac AddJavaScript.java 
java AddJavaScript

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

Data added to the given PDF

Если вы попытаетесь открыть документ new.pdf, он отобразит предупреждающее сообщение, как показано ниже.

Добавление JavaScript

PDFBox — Разделение PDF-документа

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

Разделение страниц в документе PDF

Вы можете разделить данный PDF-документ на несколько PDF-документов, используя класс с именем Splitter. Этот класс используется для разделения данного документа PDF на несколько других документов.

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

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

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

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

Шаг 2: Создание класса Splitter

Класс с именем Splitter содержит методы для разделения данного документа PDF, поэтому создайте экземпляр этого класса, как показано ниже.

Splitter splitter = new Splitter();

Шаг 3: Разделение PDF-документа

Вы можете разделить данный документ, используя метод Split () класса Splitter этого класса. Этот метод принимает объект класса PDDocument в качестве параметра.

List<PDDocument> Pages = splitter.split(document);

Метод split () разделяет каждую страницу данного документа как отдельный документ и возвращает их в виде списка.

Шаг 4: Создание объекта Iterator

Чтобы просмотреть список документов, вам нужно получить объект итератора списка, полученного на предыдущем шаге, вам нужно получить объект итератора списка с помощью метода listIterator (), как показано ниже.

Iterator<PDDocument> iterator = Pages.listIterator();

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

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

document.close();

пример

Предположим, есть PDF-документ с именем sample.pdf по пути C: \ PdfBox_Examples \, и этот документ содержит две страницы — одну страницу с изображением и другую страницу с текстом, как показано ниже.

Разделить страницу

Этот пример демонстрирует, как разделить вышеупомянутый документ PDF. Здесь мы разделим документ PDF с именем sample.pdf на два разных документа sample1.pdf и sample2.pdf . Сохраните этот код в файле с именем SplitPages.java.

import org.apache.pdfbox.multipdf.Splitter; 
import org.apache.pdfbox.pdmodel.PDDocument;

import java.io.File; 
import java.io.IOException; 
import java.util.List; 
import java.util.Iterator;
  
public class SplitPages {
   public static void main(String[] args) throws IOException {

      //Loading an existing PDF document
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument document = PDDocument.load(file); 

      //Instantiating Splitter class
      Splitter splitter = new Splitter();

      //splitting the pages of a PDF document
      List<PDDocument> Pages = splitter.split(document);

      //Creating an iterator 
      Iterator<PDDocument> iterator = Pages.listIterator();

      //Saving each page as an individual document
      int i = 1;
      while(iterator.hasNext()) {
         PDDocument pd = iterator.next();
         pd.save("C:/PdfBox_Examples/sample"+ i++ +".pdf");
      }
      System.out.println("Multiple PDF’s created");
      document.close();
   }
}

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

javac SplitPages.java 
java SplitPages

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

Multiple PDF’s created

Если вы проверите указанный путь, вы увидите, что было создано несколько файлов PDF с именами sample1 и sample2, как показано ниже.

Сплит первыйДоли секунды

PDFBox — объединение нескольких документов PDF

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

Объединение нескольких документов PDF

Вы можете объединить несколько документов PDF в один документ PDF, используя класс с именем класса PDFMergerUtility , этот класс предоставляет методы для объединения двух или более документов PDF в один документ PDF.

Ниже приведены шаги для объединения нескольких документов PDF.

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

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

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

Шаг 2. Создание класса PDFMergerUtility

создать экземпляр класса слияния, как показано ниже.

PDFMergerUtility PDFmerger = new PDFMergerUtility(); 

Шаг 3: Настройка файла назначения

Установите файлы назначения, используя метод setDestinationFileName (), как показано ниже.

PDFmerger.setDestinationFileName("C:/PdfBox_Examples/data1/merged.pdf");

Шаг 4: Установка исходных файлов

Установите исходные файлы, используя метод addSource (), как показано ниже.

PDFmerger.addSource(file1);

Шаг 5: Слияние документов

Объедините документы с помощью метода mergeDocuments () класса PDFmerger, как показано ниже.

PDFmerger.mergeDocuments();

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

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

document.close();

пример

Предположим, у нас есть два документа PDF — sample1.pdf и sample2.pdf по пути C: \ PdfBox_Examples \, как показано ниже.

Файл изображения.jpgСодержимое File.jpg

Этот пример демонстрирует, как объединить вышеуказанные документы PDF. Здесь мы объединяем документы PDF с именем sample1.pdf и sample2.pdf в один документ PDF merged.pdf . Сохраните этот код в файле с именем MergePDFs.java.

import org.apache.pdfbox.multipdf.PDFMergerUtility;
import org.apache.pdfbox.pdmodel.PDDocument;
  
import java.io.File; 
import java.io.IOException;

public class MergePDFs {
   public static void main(String[] args) throws IOException {

      //Loading an existing PDF document
      File file1 = new File("C:/PdfBox_Examples/sample1.pdf");
      PDDocument doc1 = PDDocument. load (file1);
       
      File file2 = new File("C:/PdfBox_Examples/sample2.pdf");
      PDDocument doc2 = PDDocument. load (file2);
         
      //Instantiating PDFMergerUtility class
      PDFMergerUtility PDFmerger = new PDFMergerUtility();

      //Setting the destination file
      PDFmerger.setDestinationFileName("C:/PdfBox_Examples/merged.pdf");

      //adding the source files
      PDFmerger.addSource(file1);
      PDFmerger.addSource(file2);

      //Merging the two documents
      PDFmerger.mergeDocuments();

      System.out.println("Documents merged");
      //Closing the documents
      doc1.close();
      doc2.close();
   }

}

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

javac MergePDFs.java 
java MergePDFs 

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

Documents merged

Если вы проверите указанный путь, вы увидите, что создан документ PDF с именем merged.pdf, и он содержит страницы обоих исходных документов, как показано ниже.

Объединенное

PDFBox — Извлечение изображения

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

Генерация изображения из документа PDF

Библиотека PDFBox предоставляет вам класс с именем PDFRenderer, который отображает документ PDF в AWT BufferedImage.

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

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

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

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

Шаг 2: Создание класса PDFRenderer

Класс с именем PDFRenderer отображает PDF-документ в AWT BufferedImage . Поэтому вам нужно создать экземпляр этого класса, как показано ниже. Конструктор этого класса принимает объект документа; передать объект документа, созданный на предыдущем шаге, как показано ниже.

PDFRenderer renderer = new PDFRenderer(document);

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

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

BufferedImage image = renderer.renderImage(0);

Шаг 4: Запись изображения в файл

Вы можете записать изображение, созданное на предыдущем шаге, в файл, используя метод write () . Для этого метода вам нужно передать три параметра —

  • Рендеринг изображения объекта.
  • Строка, представляющая тип изображения (jpg или png).
  • Файловый объект, в который нужно сохранить извлеченное изображение.
ImageIO.write(image, "JPEG", new File("C:/PdfBox_Examples/myimage.jpg"));

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

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

document.close();

пример

Предположим, у нас есть документ PDF — sample.pdf по пути C: \ PdfBox_Examples \, и он содержит изображение на своей первой странице, как показано ниже.

Образец изображения

Этот пример демонстрирует, как преобразовать вышеупомянутый документ PDF в файл изображения. Здесь мы извлечем изображение на 1-й странице документа PDF и сохраним его как myimage.jpg . Сохранить этот код как PdfToImage.java

import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
public class PdfToImage {

   public static void main(String args[]) throws Exception {

      //Loading an existing PDF document
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument document = PDDocument.load(file);
       
      //Instantiating the PDFRenderer class
      PDFRenderer renderer = new PDFRenderer(document);

      //Rendering an image from the PDF document
      BufferedImage image = renderer.renderImage(0);

      //Writing the image to a file
      ImageIO. write (image, "JPEG", new File("C:/PdfBox_Examples/myimage.jpg"));
       
      System.out.println("Image created");
       
      //Closing the document
      document.close();

   }
}

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

javac PdfToImage.java 
java PdfToImage

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

Image created

Если вы проверите указанный путь, вы можете заметить, что изображение генерируется и сохраняется как myimage.jpg, как показано ниже.

Generateimage

PDFBox — Добавление прямоугольников

В этой главе рассказывается, как создавать цветные рамки на странице документа PDF.

Создание блоков в документе PDF

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

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

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

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

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

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

Вам нужно получить объект PDPage необходимой страницы, куда вы хотите добавить прямоугольники, используя метод getPage () класса PDDocument . Для этого метода вам нужно передать индекс страницы, куда вы хотите добавить прямоугольники.

PDPage page = document.getPage(0);

Шаг 3: Подготовка потока контента

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

PDPageContentStream contentStream = new PDPageContentStream(document, page);

Шаг 4: Установка негласного цвета

Вы можете установить негласный цвет для прямоугольника, используя метод setNonStrokingColor () класса PDPageContentStream . Для этого метода вам нужно передать требуемый цвет в качестве параметра, как показано ниже.

contentStream.setNonStrokingColor(Color. DARK_GRAY );

Шаг 5: Рисование прямоугольника

Нарисуйте прямоугольник с необходимыми размерами, используя метод addRect () . Для этого метода вам нужно передать размеры прямоугольника, который нужно добавить, как показано ниже.

contentStream.addRect(200, 650, 100, 100);

Шаг 6: Заполнение прямоугольника

Метод fill () класса PDPageContentStream заполняет путь между указанными измерениями требуемым цветом, как показано ниже.

contentStream.fill();

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

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

document.close();

пример

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

Пустая страница

Этот пример демонстрирует, как создавать / вставлять прямоугольники в документе PDF. Здесь мы создадим коробку в пустом PDF. Сохраните этот код как AddRectangles.java .

import java.awt.Color;
import java.io.File;
  
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
public class ShowColorBoxes {

   public static void main(String args[]) throws Exception {

      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/BlankPage.pdf");
      PDDocument document = PDDocument. load (file);
        
      //Retrieving a page of the PDF Document
      PDPage page = document.getPage(0);

      //Instantiating the PDPageContentStream class
      PDPageContentStream contentStream = new PDPageContentStream(document, page);
       
      //Setting the non stroking color
      contentStream.setNonStrokingColor(Color.DARK_GRAY);

      //Drawing a rectangle 
      contentStream.addRect(200, 650, 100, 100);

      //Drawing a rectangle
      contentStream.fill();

      System.out.println("rectangle added");

      //Closing the ContentStream object
      contentStream.close();

      //Saving the document
      File file1 = new File("C:/PdfBox_Examples/colorbox.pdf");
      document.save(file1);

      //Closing the document
      document.close();
   }
}

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

javac AddRectangles.java 
java AddRectangles

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

Rectangle created

Если вы проверите указанный путь и откроете сохраненный документ — colorbox.pdf , вы увидите , что в него вставлено поле, как показано ниже.