Как добавить номера страниц в 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 и добавьте его в качестве зависимости в ваше приложение.
Библиотека Java PDF для добавления номеров страниц
Spire.PDF for Java — это надежная библиотека, предназначенная для работы с PDF-документами в Java-приложениях. Она предлагает такие удобные классы, как PdfPageNumberField и PdfPageCountField, которые позволяют пользователям получать номер текущей страницы и общее количество страниц. Для создания формата «Страница X из Y» можно использовать объект PdfCompositeField для объединения нескольких автоматических полей в одно поле.
После создания объекта PdfCompositeField вы можете задать его положение на странице с помощью свойства Location, а затем добавить его на страницу с помощью метода draw(). Позиционирование номера страницы определяется определенными координатами, поэтому рекомендуется ознакомиться с системой координат.
Добавление номеров страниц в левый угол нижнего колонтитула PDF-файла
Этот пример показывает, как добавить номер страницы слева от подножия страницы документа 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
Этот пример показывает, как добавить номер страницы в центр нижней части страницы документа 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
Этот пример показывает, как добавить номер страницы справа от подножия страницы документа 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, такие как: