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 — Приведенная выше ссылка направит вас на домашнюю страницу, как показано на следующем снимке экрана —
Шаг 3 — Теперь нажмите на ссылку Загрузки, выделенную на скриншоте выше. При нажатии вы будете перенаправлены на страницу загрузки PDFBox, как показано на следующем снимке экрана.
Шаг 4 — На странице загрузок у вас будут ссылки для PDFBox. Нажмите на соответствующую ссылку для последней версии. Например, мы выбираем PDFBox 2.0.1 и, щелкнув по нему, вы будете перенаправлены на необходимые файлы jar, как показано на следующем снимке экрана.
Шаг 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, нажмите «Файл», «Новый» и откройте новый проект, как показано на следующем снимке экрана.
Шаг 3 — При выборе проекта вы получите мастер New Project . В этом мастере выберите проект Java и нажмите кнопку « Далее» , как показано на следующем снимке экрана.
Шаг 4. В дальнейшем вы будете перенаправлены в мастер New Java Project . Создайте новый проект и нажмите « Далее», как показано на следующем снимке экрана.
Шаг 5 — После создания нового проекта, щелкните по нему правой кнопкой мыши; выберите Build Path и нажмите Configure 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, как показано на следующем скриншоте.
Шаг 8 — При нажатии кнопки « Открыть» на приведенном выше снимке экрана эти файлы будут добавлены в вашу библиотеку, как показано на следующем снимке экрана.
Шаг 9 — Нажав OK , вы успешно добавите необходимые 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-документ, как показано ниже.
Поскольку это пустой документ, если вы попытаетесь открыть этот документ, появится подсказка с сообщением об ошибке, как показано на следующем снимке экрана.
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-документа.
Установка свойств документа
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. Здесь мы создадим программу на 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, он отобразит предупреждающее сообщение, как показано ниже.
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 \, как показано ниже.
Этот пример демонстрирует, как объединить вышеуказанные документы 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, как показано ниже.
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 , вы увидите , что в него вставлено поле, как показано ниже.