Главное Авторские колонки Вакансии Вопросы
251 0 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Как добавить штампы в PDF-документ на Java

В этой статье я расскажу, как добавить динамический штамп и штамп с изображением в PDF с помощью Spire.PDF for Java.
Мнение автора может не совпадать с мнением редакции

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

В этой статье я расскажу, как добавить динамический штамп и штамп с изображением в PDF с помощью Spire.PDF for Java.

  • Добавление динамического текстового штампа в PDF
  • Добавление штампа с изображением в PDF

Библиотека Java для штамповки PDF-документов

Spire.PDF for Java — это профессиональная Java-библиотека для чтения, создания и работы с PDF-файлами в Java-приложениях.

Если вы создали проект Maven, вы можете легко импортировать jar в свое приложение с помощью следующих конфигураций. Для проектов, не использующих Maven, загрузите Spire.Pdf.jar и добавьте его в качестве зависимости в ваше приложение.


В PDF штамп — это аннотация или графический элемент, который может быть добавлен в документ для предоставления дополнительной информации. Spire.PDF for Java представляет класс PdfRubberStampAnnotation, который служит для представления резинового штампа. Для создания визуального представления резинового штампа используется класс PdfTemplate. Этот класс выступает в роли холста, позволяющего рисовать различные типы информации, включая текст, изображения, фигуры и элементы даты/времени.

Добавление динамического текстового штампа в PDF

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

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

import com.spire.pdf.PdfDocument;

import com.spire.pdf.PdfPageBase;

import com.spire.pdf.annotations.PdfRubberStampAnnotation;

import com.spire.pdf.annotations.appearance.PdfAppearance;

import com.spire.pdf.graphics.*;

import java.awt.*;

import java.awt.geom.Point2D;

import java.awt.geom.Rectangle2D;

import java.text.SimpleDateFormat;

public class AddDynamicStampToPdf {

public static void main(String[] args) {

// Создаем объект PdfDocument

PdfDocument document = new PdfDocument();

// Загружаем PDF файл

document.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf");

// Получаем последнюю страницу

PdfPageBase page = document.getPages().get(document.getPages().getCount() - 1);

// Создаем объект PdfTemplate

PdfTemplate template = new PdfTemplate(195, 50);

// Создаем два шрифта

PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Elephant", Font.ITALIC, 15), true);

PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", Font.ITALIC, 10), true);

// Создаем сплошную кисть и градиентную кисть

PdfSolidBrush solidBrush = new PdfSolidBrush(new PdfRGBColor(Color.black));

Rectangle2D rect1 = new Rectangle2D.Float();

rect1.setFrame(new Point2D.Float(0, 0), template.getSize());

PdfLinearGradientBrush linearGradientBrush = new PdfLinearGradientBrush(rect1, new PdfRGBColor(Color.white), new PdfRGBColor(Color.orange), PdfLinearGradientMode.Horizontal);

// Создаем путь закругленного прямоугольника

int CornerRadius = 10;

PdfPath path = new PdfPath();

path.addArc(template.getBounds().getX(), template.getBounds().getY(), CornerRadius, CornerRadius, 180, 90);

path.addArc(template.getBounds().getX() + template.getWidth() - CornerRadius, template.getBounds().getY(), CornerRadius, CornerRadius, 270, 90);

path.addArc(template.getBounds().getX() + template.getWidth() - CornerRadius, template.getBounds().getY() + template.getHeight() - CornerRadius, CornerRadius, CornerRadius, 0, 90);

path.addArc(template.getBounds().getX(), template.getBounds().getY() + template.getHeight() - CornerRadius, CornerRadius, CornerRadius, 90, 90);

path.addLine(template.getBounds().getX(), template.getBounds().getY() + template.getHeight() - CornerRadius, template.getBounds().getX(), template.getBounds().getY() + CornerRadius / 2);

// Рисуем путь на шаблоне

template.getGraphics().drawPath(linearGradientBrush, path);

template.getGraphics().drawPath(PdfPens.getRed(), path);

// Рисуем динамический текст на шаблоне

String s1 = «УТВЕРЖДЕНО\n»;

String s2 = «Менеджером в » + dateToString(new java.util.Date(), «yyyy-MM-dd HH:mm:ss»);

template.getGraphics().drawString(s1, font1, solidBrush, new Point2D.Float(5, 5));

template.getGraphics().drawString(s2, font2, solidBrush, new Point2D.Float(2, 28));

// Создаем резиновую печать, указывая ее размер и местоположение

Rectangle2D rect2 = new Rectangle2D.Float();

rect2.setFrame(new Point2D.Float(50, (float) (page.getActualSize().getHeight() - 300)), template.getSize());

PdfRubberStampAnnotation stamp = new PdfRubberStampAnnotation(rect2);

// Создаем объект PdfAppearance и применяем шаблон как его нормальное состояние

PdfAppearance appearance = new PdfAppearance(stamp);

appearance.setNormal(template);

// Применяем внешний вид к печати

stamp.setAppearance(appearance);

// Добавляем аннотацию печати в коллекцию аннотаций

page.getAnnotationsWidget().add(stamp);

// Сохраняем файл

document.saveToFile("output/DynamicStamp.pdf");

document.close();

}

// Преобразуем дату в строку

public static String dateToString(java.util.Date date, String dateFormat) {

SimpleDateFormat format = new SimpleDateFormat(dateFormat);

return format.format(date);

}

}

Добавление штампа с изображением в PDF

Штамп изображения в PDF — это графический элемент, который добавляется в документ в качестве аннотации или наложения. Он предполагает размещение изображения в определенном месте страницы PDF.

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

import com.spire.pdf.PdfDocument;

import com.spire.pdf.PdfPageBase;

import com.spire.pdf.annotations.PdfRubberStampAnnotation;

import com.spire.pdf.annotations.appearance.PdfAppearance;

import com.spire.pdf.graphics.PdfImage;

import com.spire.pdf.graphics.PdfTemplate;

import java.awt.geom.Rectangle2D;

public class AddImageStampToPdf {

public static void main(String[] args) {

// Создаем объект PdfDocument

PdfDocument document = new PdfDocument();

// Загружаем PDF документ

document.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf");

// Получаем последнюю страницу

PdfPageBase page = document.getPages().get(document.getPages().getCount() - 1);

// Загружаем файл изображения

PdfImage image = PdfImage.fromFile("C:\\Users\\Administrator\\Desktop\\stamp-image.png");

// Получаем ширину и высоту изображения

int width = image.getWidth();

int height = image.getHeight();

// Создаем объект PdfTemplate на основе размера изображения

PdfTemplate template = new PdfTemplate(width, height);

// Рисуем изображение на шаблоне

template.getGraphics().drawImage(image, 0, 0, width, height);

// Создаем аннотацию резиновой печати, указывая ее местоположение и позицию

Rectangle2D rect = new Rectangle2D.Float((float) (page.getActualSize().getWidth() - width — 50), (float) (page.getActualSize().getHeight() - 400), width, height);

PdfRubberStampAnnotation stamp = new PdfRubberStampAnnotation(rect);

// Создаем объект PdfAppearance

PdfAppearance pdfAppearance = new PdfAppearance(stamp);

// Устанавливаем шаблон как нормальное состояние внешнего вида

pdfAppearance.setNormal(template);

// Применяем внешний вид к печати

stamp.setAppearance(pdfAppearance);

// Добавляем аннотацию печати в PDF

page.getAnnotationsWidget().add(stamp);

// Сохраняем файл

document.saveToFile("output/ImageStamp.pdf");

document.close();

}

}

Заключение

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

Преобразование PDF в Word в Java

Печать PDF-документов в Java

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.