Как добавить номера страниц в PDF в Java
Присвоение номеров страниц PDF-документам — частое требование в различных сценариях, таких как создание профессиональных отчетов, подготовка научных работ или организация больших документов. Номера страниц служат навигационными и справочными ориентирами для читателей, облегчая поиск определенного содержимого в документе. Добавив номера страниц, вы сможете повысить общую читабельность и удобство использования ваших PDF-файлов.
В этой статье я расскажу вам о том, как добавить номера страниц в PDF-документ на Java с помощью библиотеки Spire.PDF for Java.
- Добавление номеров страниц в левый угол нижнего колонтитула PDF-файла
- Добавить номера страниц в центр колонтитула PDF
- Добавить номера страниц в правый угол колонтитула PDF
Установите необходимую библиотеку
Spire.PDF for Java — это профессиональная Java-библиотека для чтения, создания и работы с PDF-файлами в Java-приложениях.
Если вы создали проект Maven, вы можете легко импортировать jar в свое
приложение с помощью следующих конфигураций. Для проектов, не использующих
Maven, загрузите
Spire.Pdf.jar и добавьте его в качестве зависимости в ваше приложение. Spire.PDF
for Java — это надежная библиотека, предназначенная для работы с
PDF-документами в Java-приложениях. Она предлагает такие удобные классы, как
PdfPageNumberField и PdfPageCountField, которые позволяют пользователям
получать номер текущей страницы и общее
количество страниц. Для создания формата «Страница X из Y» можно использовать
объект PdfCompositeField для объединения нескольких автоматических полей в одно
поле. После создания объекта PdfCompositeField вы можете задать его положение
на странице с помощью свойства Location, а затем добавить его на страницу с
помощью метода Draw(). Позиционирование номера страницы определяется
определенными координатами, поэтому рекомендуется
ознакомиться с системой координат. Этот пример показывает, как добавить номер страницы слева от подножия
страницы документа PDF и горизонтальную линию в нижней части страницы. import com.spire.pdf.PdfDocument; import com.spire.pdf.PdfPageBase; import com.spire.pdf.automaticfields.PdfCompositeField; import com.spire.pdf.automaticfields.PdfPageCountField; import com.spire.pdf.automaticfields.PdfPageNumberField; import com.spire.pdf.graphics.*; import com.spire.pdf.license.LicenseProvider; import java.awt.*; import java.awt.geom.Dimension2D; import java.awt.geom.Point2D; public class AddPageNumberToLeftCorner { public static void main(String[] args) { // Примените ваш лицензионный ключ LicenseProvider.setLicenseKey("Лицензионный ключ"); // Создайте объект PdfDocument PdfDocument doc = new PdfDocument(); // Загрузите PDF файл doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\Terms of service.pdf"); // Создайте шрифт, кисть и перо, которые определяют внешний вид добавляемых номеров страниц PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Times New Roman", Font.PLAIN, 12), true); PdfBrush brush = PdfBrushes.getBlack(); PdfPen pen = new PdfPen(brush, 1.0); // Создайте объект PdfPageNumberField и объект PdfPageCountField PdfPageNumberField pageNumberField = new PdfPageNumberField(); PdfPageCountField pageCountField = new PdfPageCountField(); // Создайте объект PdfCompositeField для объединения поля количества страниц и поля номера страницы в одно поле PdfCompositeField compositeField = new PdfCompositeField(font, brush, «Страница {0} из {1}», pageNumberField, pageCountField); // Получите размер страницы Dimension2D pageSize = doc.getPages().get(0).getSize(); // Установите местоположение составного поля compositeField.setLocation(new Point2D.Float(72, (float) pageSize.getHeight() - 45)); // Перебирайте страницы в документе for (int i = 0; i < doc.getPages().getCount(); i++) { // Получите конкретную страницу PdfPageBase page = doc.getPages().get(i); // Нарисуйте линию в указанном месте page.getCanvas().drawLine(pen, 72, pageSize.getHeight() - 50, pageSize.getWidth() - 72, pageSize.getHeight() - 50); // Нарисуйте составное поле на странице compositeField.draw(page.getCanvas(), 0.0, 0.0); } // Сохраните в другой PDF файл doc.saveToFile("Output/AddPageNumbersToLeftCorner.pdf"); // Освободите ресурсы doc.dispose(); } } Этот пример показывает,
как добавить номер страницы в центр нижней части страницы документа PDF и
добавить горизонтальную линию в нижнюю часть страницы. import com.spire.pdf.PdfDocument; import com.spire.pdf.PdfPageBase; import com.spire.pdf.automaticfields.PdfCompositeField; import com.spire.pdf.automaticfields.PdfPageCountField; import com.spire.pdf.automaticfields.PdfPageNumberField; import com.spire.pdf.graphics.PdfBrush; import com.spire.pdf.graphics.PdfBrushes; import com.spire.pdf.graphics.PdfPen; import com.spire.pdf.graphics.PdfTrueTypeFont; import com.spire.pdf.license.LicenseProvider; import java.awt.*; import java.awt.geom.Dimension2D; import java.awt.geom.Point2D; public class AddPageNumberToCenter { public static void main(String[] args) { // Примените ваш лицензионный ключ LicenseProvider.setLicenseKey("Лицензионный ключ"); // Создайте объект PdfDocument PdfDocument doc = new PdfDocument(); // Загрузите PDF файл doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\Terms of service.pdf"); // Создайте шрифт, кисть и перо, которые определяют внешний вид добавляемых номеров страниц PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Times New Roman", Font.PLAIN, 12), true); PdfBrush brush = PdfBrushes.getBlack(); PdfPen pen = new PdfPen(brush, 1.0); // Создайте объект PdfPageNumberField и объект PdfPageCountField PdfPageNumberField pageNumberField = new PdfPageNumberField(); PdfPageCountField pageCountField = new PdfPageCountField(); // Создайте объект PdfCompositeField для объединения поля количества страниц и поля номера страницы в одно поле PdfCompositeField compositeField = new PdfCompositeField(font, brush, «Страница {0} из {1}», pageNumberField, pageCountField); // Перебирайте страницы в документе for (int i = 0; i < doc.getPages().getCount(); i++) { // Получите конкретную страницу PdfPageBase page = doc.getPages().get(i); // Получите размер страницы Dimension2D pageSize = doc.getPages().get(i).getSize(); // Нарисуйте линию в указанном месте page.getCanvas().drawLine(pen, 72, pageSize.getHeight() - 50, pageSize.getWidth() - 72, pageSize.getHeight() - 50); // Измерьте размер «Страница X из Y» Dimension2D pageNumberSize = font.measureString(String.format("Страница %d из %d", i + 1, doc.getPages().getCount())); // Установите местоположение составного поля compositeField.setLocation(new Point2D.Float((float)(pageSize.getWidth() - pageNumberSize.getWidth()) / 2, (float)pageSize.getHeight() - 45)); // Нарисуйте составное поле на странице compositeField.draw(page.getCanvas()); } // Сохраните в другой PDF файл doc.saveToFile("Output/AddPageNumbersToCenter.pdf"); // Освободите ресурсы doc.dispose(); } } Этот пример показывает, как добавить номер страницы справа от подножия
страницы документа PDF и горизонтальную линию в нижней части страницы. import com.spire.pdf.PdfDocument; import com.spire.pdf.PdfPageBase; import com.spire.pdf.automaticfields.PdfCompositeField; import com.spire.pdf.automaticfields.PdfPageCountField; import com.spire.pdf.automaticfields.PdfPageNumberField; import com.spire.pdf.graphics.PdfBrush; import com.spire.pdf.graphics.PdfBrushes; import com.spire.pdf.graphics.PdfPen; import com.spire.pdf.graphics.PdfTrueTypeFont; import java.awt.*; import java.awt.geom.Dimension2D; import java.awt.geom.Point2D; public class AddPageNumberToRightCorner { public static void main(String[] args) { // Создайте объект PdfDocument PdfDocument doc = new PdfDocument(); // Загрузите PDF файл doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\Terms of service.pdf"); // Создайте шрифт, кисть и перо, которые определяют внешний вид добавляемых номеров страниц PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Times New Roman", Font.PLAIN, 12), true); PdfBrush brush = PdfBrushes.getBlack(); PdfPen pen = new PdfPen(brush, 1.0); // Создайте объект PdfPageNumberField и объект PdfPageCountField PdfPageNumberField pageNumberField = new PdfPageNumberField(); PdfPageCountField pageCountField = new PdfPageCountField(); // Создайте объект PdfCompositeField для объединения поля количества страниц и поля номера страницы в одно поле PdfCompositeField compositeField = new PdfCompositeField(font, brush, «Страница {0} из {1}», pageNumberField, pageCountField); // Перебирайте страницы в документе for (int i = 0; i < doc.getPages().getCount(); i++) { // Получите конкретную страницу PdfPageBase page = doc.getPages().get(i); // Получите размер страницы Dimension2D pageSize = doc.getPages().get(i).getSize(); // Нарисуйте линию в указанном месте page.getCanvas().drawLine(pen, 72, pageSize.getHeight() - 50, pageSize.getWidth() - 72, pageSize.getHeight() - 50); // Измерьте размер «Страница X из Y» Dimension2D pageNumberSize = font.measureString(String.format("Страница %d из %d", i + 1, doc.getPages().getCount())); // Установите местоположение составного поля compositeField.setLocation(new Point2D.Float((float)(pageSize.getWidth() - pageNumberSize.getWidth() - 72), (float)(pageSize.getHeight() - 45))); // Нарисуйте составное поле на странице compositeField.draw(page.getCanvas()); } // Сохраните в другой PDF файл doc.saveToFile("Output/AddPageNumbersToRightCorner.pdf"); // Освободите ресурсы doc.dispose(); } } В этой статье вы
узнаете, как использовать Spire для добавления страниц в PDF — документ. PDF
для Java. Кроме того, библиотека поддерживает другие функции обработки PDF,
такие как:
Библиотека Java PDF для добавления номеров страниц
Добавление номеров страниц в левый угол нижнего колонтитула PDF-файла
Добавить номера страниц в центр колонтитула PDF
Добавить номера страниц в правый угол колонтитула PDF
Заключение