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

Создавайте PDF-документы с помощью Java

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

Java API для создания PDF — скачать бесплатно

Aspose.PDF for Java — это API для работы с PDF-файлами, позволяющий создавать PDF-файлы из приложений Java. Используя API, вы можете создавать как простые, так и сложные PDF-документы. Aspose.PDF для Java можно загрузить как JAR или установить в приложениях на основе Maven.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>20.11</version>
    <classifier>jdk17</classifier>
</dependency>

Создайте файл PDF в Java

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

В следующем примере кода показано, как создать файл PDF с помощью Java.

// Полные примеры и файлы данных см. на странице https://github.com/aspose-pdf/Aspose.PDF-for-Java.
// Инициализировать объект документа
Document document = new Document();
 
//Добавить страницу
Page page = document.getPages().add();
 
// Добавить текст на новую страницу
page.getParagraphs().add(new TextFragment("Hello World!"));
 
// Сохранить обновленный PDF
document.save("HelloWorld_out.pdf");

Создайте файл PDF с форматированием текста в Java

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

  • Используйте класс Document для создания нового документа PDF или загрузки существующего.
  • Перейдите на Страницу, на которую вы хотите поместить текст.
  • Создайте объект TextFragment, чтобы установить текст и другие параметры форматирования, такие как положение, шрифт, цвет, размер и т. д.
  • Используйте класс TextBuilder, чтобы добавить на страницу объект TextFragment.
  • Используйте метод Document.save(String) для сохранения документа PDF.

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

// Загрузить PDF-документ
Document document = new Document();

// Добавить страницу
Page page = document.getPages().add();

// Создать текстовый фрагмент
TextFragment textFragment = new TextFragment(
		"Text 1: We have now applied text formatting. This is PDF generated by Aspose.PDF for .NET");
textFragment.setPosition(new Position(100, 700));
TextFragment textFragment1 = new TextFragment(
		"Text 2: We have now applied text formatting. This is PDF generated by Aspose.PDF for .NET");
textFragment1.setPosition(new Position(100, 600));

// Установить свойства текста
textFragment.getTextState().setFontSize(12);
textFragment.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
textFragment.getTextState().setBackgroundColor(Color.getLightGray());
textFragment.getTextState().setForegroundColor(Color.getRed());

textFragment1.getTextState().setDrawTextRectangleBorder(true);
textFragment1.getTextState().setUnderline(true);
textFragment1.getTextState().setStrikeOut(true);

// Создайте новый цвет с цветовым пространством узора
Color color = new Color();
color.setPatternColorSpace(new GradientAxialShading(Color.getRed(), Color.getBlue()));		
textFragment1.getTextState().setForegroundColor(color);

// Создать объект TextBuilder
TextBuilder textBuilder = new TextBuilder(page);

// Добавьте текстовые фрагменты на страницу PDF
textBuilder.appendText(textFragment);
textBuilder.appendText(textFragment1);

// Сохраните PDF-документ
document.save("Generated-PDF.pdf");

Java Создание файлов PDF с изображением

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

  • Создайте объект Документ, чтобы создать или открыть документ PDF.
  • Получите страницу, на которую вы хотите добавить изображение, в объекте Page.
  • Добавьте изображение в коллекцию Page.getResources().
  • Используйте операторы для размещения изображения на странице:
    • GСохранить operator to save the current graphical state.
    • ConcatenateMatrix operator to specify where the image is to be placed.
    • Делать operator to draw the image on the page.
    • Наконец, используйте оператор GRestore, чтобы сохранить обновленное графическое состояние.
  • Сохраните PDF-файл.

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

// Полные примеры и файлы данных см. на странице https://github.com/aspose-pdf/Aspose.Pdf-for-Java.
// Откройте документ
Document pdfDocument1 = new Document("input.pdf");

// Установить координаты
int lowerLeftX = 100;
int lowerLeftY = 100;
int upperRightX = 200;
int upperRightY = 200;

// Получите страницу, на которую вы хотите добавить изображение
Page page = pdfDocument1.getPages().get_Item(1);

// Загрузить изображение в поток
java.io.FileInputStream imageStream = new java.io.FileInputStream(new java.io.File("input_image1.jpg"));

// Добавьте изображение в коллекцию изображений ресурсов страницы.
page.getResources().getImages().add(imageStream);

// Использование оператора GSave: этот оператор сохраняет текущее состояние графики.
page.getContents().add(new Operator.GSave());

// Создание объектов «Прямоугольник» и «Матрица»
Rectangle rectangle = new Rectangle(lowerLeftX, lowerLeftY, upperRightX, upperRightY);
Matrix matrix = new Matrix(new double[] { rectangle.getURX() - rectangle.getLLX(), 0, 0, rectangle.getURY() - rectangle.getLLY(), rectangle.getLLX(), rectangle.getLLY() });

// Использование оператора ConcatenateMatrix (сцепление матрицы): определяет, как должно быть размещено изображение.
page.getContents().add(new Operator.ConcatenateMatrix(matrix));
XImage ximage = page.getResources().getImages().get_Item(page.getResources().getImages().size());

// Использование оператора Do: этот оператор рисует изображение
page.getContents().add(new Operator.Do(ximage.getName()));

// Использование оператора GRestore: этот оператор восстанавливает состояние графики
page.getContents().add(new Operator.GRestore());

// Сохраните новый PDF
pdfDocument1.save("Updated_document.pdf");

// Закрыть поток изображений
imageStream.close();

Создайте таблицу в файле PDF на Java

Таблица — прекрасный способ организации данных в виде строк и столбцов. Aspose.PDF позволяет легко вставлять таблицу в PDF-документ. Ниже приведены шаги для создания таблицы.

  • Загрузите исходный файл с помощью класса Document.
  • Инициализируйте Table и установите ее столбцы и строки.
  • Установите настройки стола (например, границы).
  • Заполните таблицу, добавив в нее строки.
  • Добавьте таблицу на страницу.
  • Сохраните PDF-файл.

В следующем примере кода показано, как создать таблицу в файлах PDF на Java.

// Полные примеры и файлы данных см. на странице https://github.com/aspose-pdf/Aspose.Pdf-for-Java.
// Загрузить исходный PDF-документ
Document doc = new Document(dataDir + "input.pdf");
// Инициализирует новый экземпляр таблицы
Table table = new Table();
// Установите цвет границы таблицы как LightGray
table.setBorder(new BorderInfo(BorderSide.All, .5f, Color.getLightGray()));
// установить границу для ячеек таблицы
table.setDefaultCellBorder(new BorderInfo(BorderSide.All, .5f, Color.getLightGray()));
// создать цикл для добавления 10 строк
for (int row_count = 1; row_count < 10; row_count++) {
	// добавить строку в таблицу
	Row row = table.getRows().add();
	// добавить ячейки таблицы
	row.getCells().add("Column (" + row_count + ", 1)");
	row.getCells().add("Column (" + row_count + ", 2)");
	row.getCells().add("Column (" + row_count + ", 3)");
}
// Добавить табличный объект на первую страницу входного документа
doc.getPages().get_Item(1).getParagraphs().add(table);
// Сохранить обновленный документ, содержащий табличный объект
doc.save(dataDir + "document_with_table.pdf");

Создать форму в файле PDF на Java

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

  • Загрузите документ PDF или создайте новый, используя класс Document.
  • Создайте поле формы, которое вы хотите добавить, например TextBoxField.
  • Задайте свойства поля.
  • Добавьте поле в Форму PDF-файла, используя метод pdfDocument.getForm().add(Field, Int).
  • Сохраните PDF-документ.

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

// Полные примеры и файлы данных см. на странице https://github.com/aspose-pdf/Aspose.Pdf-for-Java.
// Откройте документ
Document pdfDocument = new Document("input.pdf");

// Создать поле
TextBoxField textBoxField1 = new TextBoxField(pdfDocument.getPages().get_Item(1), new Rectangle(100, 200, 300, 300));

// Задайте имя поля
textBoxField1.setPartialName("textbox1");

// Установите значение поля
textBoxField1.setValue("Text Box");

// Создайте объект границы
Border border = new Border(textBoxField1);

// Установите ширину границы
border.setWidth(5);

// Установите стиль границы тире
border.setDash(new Dash(1, 1));

// Установить границу поля
textBoxField1.setBorder(border);

// Добавьте поле в документ
pdfDocument.getForm().add(textBoxField1, 1);

// Сохраните измененный PDF
pdfDocument.save("output.pdf");

Подробнее о полях формы читайте здесь.

Вставить закладки в файл PDF на Java

Ниже приведены шаги для добавления закладок в файл PDF.

  • Откройте документ PDF с помощью объекта Документ.
  • Добавьте схемы документов в коллекцию OutlineItemCollection.
  • Установите номер целевой страницы.
  • Добавьте закладку в коллекцию структуры документа.
  • Сохраните PDF-файл.

В следующем примере кода показано, как вставлять закладки в PDF с помощью Java.

// Полные примеры и файлы данных см. на странице https://github.com/aspose-pdf/Aspose.Pdf-for-Java.
// Откройте исходный PDF-документ
Document pdfDocument = new Document("input.pdf");

// Создать объект закладки
OutlineItemCollection pdfOutline = new OutlineItemCollection(pdfDocument.getOutlines());
pdfOutline.setTitle("Test Outline");
pdfOutline.setItalic(true);
pdfOutline.setBold(true);

// Установите номер целевой страницы
pdfOutline.setAction(new GoToAction(pdfDocument.getPages().get_Item(1)));

// Добавьте закладку в коллекцию структуры документа.
pdfDocument.getOutlines().add(pdfOutline);

// Сохраните документ обновления
pdfDocument.save("output.pdf");

Получить бесплатную лицензию

Вы можете получить бесплатную временную лицензию, чтобы попробовать API без ограничений на пробную версию.

Вывод

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

Смотрите также