Добавить водяной знак в PDF

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

REST API для обработки PDF-файлов

Aspose.PDF Cloud — это наш отмеченный наградами REST API, предлагающий возможности создания, обработки и рендеринга файлов PDF в другие поддерживаемые форматы, включая DOCX, PPTX, XLSX, XPS, SVG, JPEG и т. д. Теперь давайте поговорим о Aspose.PDF Cloud SDK для Java, который является оболочкой Java вокруг Aspose.PDF Cloud API. Он предоставляет все функции Cloud REST API, включая возможности добавления водяных знаков в PDF с использованием языка программирования Java.

Чтобы использовать Java Cloud SDK, первым шагом является установка Aspose.PDF Cloud SDK для Java. Cloud SDK доступен для загрузки через Maven | GitHub. Ниже приведены сведения о том, как загрузить и использовать Aspose.Pdf.jar в проекте сборки Maven.

Добавьте следующие зависимости в файл pom.xml.

<repositories>
 <repository>
        <id>aspose-cloud</id>
        <name>artifact.aspose-cloud-releases</name>
        <url>https://artifact.aspose.cloud/repo</url>
    </repository>   
</repositories>
<dependencies>
 <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-pdf-cloud</artifactId>
        <version>21.1.0</version>
        <scope>compile</scope>
    </dependency>
 </dependencies>

Добавить текстовый водяной знак в PDF с помощью REST API

Чтобы использовать Cloud API, вам необходимо сначала зарегистрировать учетную запись на панели управления Aspose.Cloud, где вы увидите свои персонализированные данные Client ID и Client Secret. Они необходимы при доступе к API. Ниже приведены сведения о том, как добавить текстовый водяной знак в существующий документ PDF с помощью Java.

  • Сначала вам необходимо указать данные вашего идентификатора клиента и секретного ключа клиента для двух переменных.
  • Во-вторых, создайте объект класса PdfApi, указав в качестве аргументов Client ID и Client Secret.
  • В-третьих, создаем объект класса TextState, где указываем имя шрифта Arial и размер шрифта 14.
  • Теперь нам нужно создать экземпляр класса TextStamp. При использовании этого объекта мы укажем HorizontalAlignment как центр, значение штампа Text, размер шрифта и детали типа шрифта указываются с помощью метода textState(..), где объект TextState, созданный на предыдущем шаге, передается в качестве аргумента. Детали полей и VerticalAlignment также указываются как Center.
  • Для отображения TextStamp в фоновом режиме используется метод background(..) с аргументом true.
  • Кроме того, для штампа также указываются непрозрачность, угол поворота, коэффициент масштабирования и отступ по осям X и Y.
  • Теперь создайте объект класса List с типом TextStamp и добавьте созданный выше объект штампа в этот список.
  • Наконец, вызовите метод postPageTextStamps(..) PdfAPi и передайте входные данные PDF, номер страницы и список штампов в качестве аргумента для запуска процесса штампа.
// Полные примеры и исходный код можно найти на сайте https://github.com/aspose-pdf-cloud/aspose-pdf-cloud-java

// Получите ClientID и ClientSecret с https://dashboard.aspose.cloud/
String clientId = "29ac1517-753f-4303-b755-7185e35cf939";
String clientSecret = "c537caf71eafc8a75a5ee7813b703276";
				
String sourceFileName = "PdfWithTable.pdf";
int pageNumber = 1;
String cloudStorage = "";
String folder = "";

// создать экземпляр PdfApi, используя данные Client ID и Client Secret
com.aspose.asposecloudpdf.api.PdfApi pdfApi = new com.aspose.asposecloudpdf.api.PdfApi(clientSecret,clientId);

// создать объект TextState и указать детали форматирования шрифта
com.aspose.asposecloudpdf.model.TextState textState = new com.aspose.asposecloudpdf.model.TextState().fontSize(24.).font("Arial");

com.aspose.asposecloudpdf.model.TextStamp stamp = new com.aspose.asposecloudpdf.model.TextStamp()
       	.textAlignment(com.aspose.asposecloudpdf.model.HorizontalAlignment.CENTER)
  	.value("Text Stamp")
	.textState(textState)
	.leftMargin(1.)
	.rightMargin(2.)
	.topMargin(3.)
	.bottomMargin(4.)
	.verticalAlignment(com.aspose.asposecloudpdf.model.VerticalAlignment.CENTER);
 
	stamp.background(true)
	.horizontalAlignment(com.aspose.asposecloudpdf.model.HorizontalAlignment.CENTER)
	.opacity(1.)
	.rotate(com.aspose.asposecloudpdf.model.Rotation.ON90)
	.rotateAngle(45.)
	.xindent(0.)
	.yindent(0.)
	.zoom(1.);
        
// создать объект List с типом TextStamp
List<com.aspose.asposecloudpdf.model.TextStamp> stamps = new ArrayList<>();

// добавить экземпляр TextStamp в список TextStamps
stamps.add(stamp);

// вызов метода postTextStamp на первую страницу PDF-файла
com.aspose.asposecloudpdf.model.AsposeResponse response = pdfApi.postPageTextStamps(sourceFileName, pageNumber, stamps,cloudStorage, folder);
Текстовый штамп добавлен в PDF

Изображение 1: Текстовый штамп добавлен в PDF-документ.

Образцы файлов, использованные в приведенном выше примере, можно загрузить по следующим ссылкам:

Как добавить водяной знак изображения в PDF с помощью Java

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

  • Первый шаг — создать объект PdfApi, передав ClientSecret и ClientID в качестве аргумента.
  • Следующий шаг — создание объекта ImageStamp, где мы определяем файл изображения, который будет проштампован, детали полей и VerticalAlignment. В нашем случае мы выбрали значение Center из перечисления VerticalAlignment.
  • Установите ImageStamp.background(True), чтобы изображение отображалось за содержимым страницы. В противном случае оно будет отображаться поверх содержимого страницы.
  • Создайте объект List типа ImageStamp и добавьте в эту коллекцию объект ImageStamp, созданный на втором шаге.
  • Наконец, вызовите метод postPageImageStamps(…) класса PdfApi, куда мы передаем в качестве аргумента входной PDF-файл, номер страницы для водяного знака и список ImageStamp, созданный выше.
  • Файл PDF с водяным знаком изображения сохраняется в том же облачном хранилище. Предварительный просмотр полученного файла показан ниже.
// Полные примеры и исходный код можно найти на сайте https://github.com/aspose-pdf-cloud/aspose-pdf-cloud-java

// Получите ClientID и ClientSecret с https://dashboard.aspose.cloud/
String clientId = "c235e685-1aab-4cda-a95b-54afd63eb87f";
String clientSecret = "b8da4ee37494f2ef8da3c727f3a0acb9";

// создать экземпляр PdfApii
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// входной PDF-документ
String file = "PdfWithTable.pdf";
// Исходное изображение, которое будет использоваться для водяного знака
String image = "Koala.jpg";
// номер страницы, на которую будет добавлен водяной знак
int pageNumber = 1;

// создать экземпляр объекта ImageStamp
ImageStamp stampObject = new ImageStamp()
	.fileName(image)
	.leftMargin(1.)
	.rightMargin(2.)
	.topMargin(3.)
	.bottomMargin(214.)
	.verticalAlignment(com.aspose.asposecloudpdf.model.VerticalAlignment.CENTER);
	
	// добавить водяной знак позади содержимого страницы
	stampObject.background(true)
	.horizontalAlignment(com.aspose.asposecloudpdf.model.HorizontalAlignment.CENTER)
	.opacity(1.)
	.rotate(com.aspose.asposecloudpdf.model.Rotation.NONE)
	.rotateAngle(0.)
	.xindent(0.)
	.yindent(0.)
	.zoom(0.2);

// создать список объектов ImageStamp
List<com.aspose.asposecloudpdf.model.ImageStamp> stamps = new ArrayList<>();

// Добавить ImageStamp в список ImageStamp
stamps.add(stampObject);

// вызовите метод API для добавления изображения водяного знака в PDF
AsposeResponse response = pdfApi.postPageImageStamps(file, pageNumber, stamps,null, null);
Изображение штампа добавлено в PDF

Изображение 2:- Изображение штампа добавлено в PDF-документ.

Образцы файлов, использованные в примере выше, можно загрузить по следующей ссылке.

Добавить страницу PDF в качестве водяного знака

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

  • Прежде всего, создайте объект класса PdfApi, передав в качестве аргументов Client ID и Client Secret.
  • Во-вторых, создайте экземпляр класса PdfPageStamp. Этот класс используется для указания пути к документу PDF, а также будет использоваться для водяного знака.
  • Метод PdfPageStamp.pageIndex(..) используется для указания номера страницы PDF-файла, которая будет использоваться для водяного знака.
  • Среди других методов важен метод background(..), поскольку он используется для установки водяного знака позади содержимого PDF-файла или для его сохранения поверх содержимого.
  • Затем создайте список типа PdfPageStamp и добавьте созданный выше объект PdfPageStamp в коллекцию списков.
  • Наконец, вызовите метод postPagePdfPageStamps(…) класса PdfApi, в котором мы передаем исходный файл PDF, индекс страницы для водяного знака и список PdfPageStamp в качестве аргумента. Результирующий вывод сохраняется в облачном хранилище.
// Полные примеры и исходный код можно найти на сайте https://github.com/aspose-pdf-cloud/aspose-pdf-cloud-java

// Получите ClientID и ClientSecret с https://cloud.aspose.com
String clientId = "c235e685-1aab-4cda-a95b-54afd63eb87f";
String clientSecret = "b8da4ee37494f2ef8da3c727f3a0acb9";

// создать экземпляр PdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// входной PDF-документ
String sourcePDF = "PdfWithAnnotations.pdf";

// Исходный PDF-файл, который будет использоваться для водяного знака
String stampPDF = "rusdoc.pdf";

// номер страницы, на которую будет добавлен водяной знак
int pageNumber = 1;

// создать экземпляр объекта PdfPageStamp
PdfPageStamp stampObject = new PdfPageStamp()
	// PDF-файл для использования в качестве водяного знака
  	.fileName(stampPDF)
	// укажите индекс страницы, которую вы хотите добавить в качестве водяного знака
	.pageIndex(1)
	.leftMargin(150.)
	.rightMargin(2.)
	
	// мы установили -ve верхнее поле, чтобы переместить водяной знак PDF вверх
	.topMargin(-330.)
	.bottomMargin(414.)
	
  	// установить вертикальное выравнивание водяного знака сверху
	.verticalAlignment(com.aspose.asposecloudpdf.model.VerticalAlignment.TOP);
	
  	// вывести водяной знак на передний план/сделать видимым
	stampObject.background(false)
	.horizontalAlignment(com.aspose.asposecloudpdf.model.HorizontalAlignment.CENTER)
	.opacity(1.)
	.rotate(com.aspose.asposecloudpdf.model.Rotation.NONE)
	.rotateAngle(0.)
	.xindent(0.)
	.yindent(0.)
	
  	// установите коэффициент масштабирования 0,7, чтобы изображение было сжатым, а не отображалось в 100% масштабе
	.zoom(0.7);

// создать список объектов PdfPageStamp
List<com.aspose.asposecloudpdf.model.PdfPageStamp> stamps = new ArrayList<>();
	
// Добавить PdfPageStamp в список ImageStamp
stamps.add(stampObject);
	
// вызовите метод API для добавления PDF в качестве водяного знака
AsposeResponse response = pdfApi.postPagePdfPageStamps(sourcePDF, pageNumber, stamps,null, null);
PDF-файл как водяной знак

Изображение 3: Предварительный просмотр PDF-файла с водяным знаком.

Образцы файлов, использованные в приведенном выше примере, можно загрузить по следующим ссылкам.

Добавить номер страницы как водяной знак

Информация о номерах страниц очень важна с точки зрения удобства использования, поскольку она дает читателю четкое представление о длине документа, а также о том, какую страницу он просматривает в данный момент.

  • После создания экземпляра PdfApi создайте объект класса PageNumberStamp.
  • используйте метод value(…) класса PageNumberStamp, чтобы указать шаблон для штампа PageNumber.
  • Другим важным методом является setStartingNumber(..), который указывает число страниц, с которых должен начинаться водяной знак.
  • Остальной фрагмент кода, включая сведения о полях, непрозрачность, угол поворота, коэффициент масштабирования и т. д., такой же, как и в приведенных выше фрагментах кода.
  • Нам необходимо указать startPageNumber и endPageNumber, где будет размещен водяной знак номера страницы.
  • Наконец, вызовите postDocumentPageNumberStamps(…), который принимает в качестве аргументов входной PDF-файл, объект PageNumberStamp, информацию о начальной и конечной страницах и добавляет водяной знак номера страницы в исходный файл.
// Полные примеры и исходный код можно найти на сайте https://github.com/aspose-pdf-cloud/aspose-pdf-cloud-java

// Получите ClientID и ClientSecret с https://dashboard.aspose.cloud/
String clientId = "c235e685-1aab-4cda-a95b-54afd63eb87f";
String clientSecret = "b8da4ee37494f2ef8da3c727f3a0acb9";
				
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// входной PDF-документ
String sourcePDF = "PdfWithTable.pdf";

// создать экземпляр объекта PdfPageStamp
PageNumberStamp stampObject = new PageNumberStamp()

	// Формат водяного знака номера страницы
  	.value("Page #")
	.leftMargin(1.)
	.rightMargin(2.)
	.topMargin(3.)
	.bottomMargin(4.)
	
	// установить вертикальное выравнивание водяного знака как «Низ»
	.verticalAlignment(com.aspose.asposecloudpdf.model.VerticalAlignment.BOTTOM);
	
	// укажите начальный номер для счетчика
	stampObject.setStartingNumber(3);

	// вывести водяной знак на передний план/сделать видимым
	stampObject.background(false)
	
	.horizontalAlignment(com.aspose.asposecloudpdf.model.HorizontalAlignment.CENTER)
	.opacity(1.)
	.rotate(com.aspose.asposecloudpdf.model.Rotation.NONE)
	.rotateAngle(0.)
	.xindent(0.)
	.yindent(0.)
	.zoom(1.0);

// начальная страница формы, где поставить водяной знак
int startPageNumber = 2;
	
// индекс страницы, на которой будет размещен водяной знак
int endPageNumber = 3;
	
// вызовите метод API для добавления PDF в качестве водяного знака
AsposeResponse response = pdfApi.postDocumentPageNumberStamps(sourcePDF, stampObject,startPageNumber, endPageNumber, null, null);
Штамп номера страницы в PDF

Изображение 4: Предварительный просмотр номера страницы в качестве водяного знака в PDF-файле.

Образцы файлов, использованные в приведенном выше примере, можно загрузить по следующей ссылке:

Краткий совет

Aspose.PDF Cloud SDK для Java настолько мощный, что с помощью пары строк кода вы можете преобразовать форматы JPEG, EPUB, LaTeX, HTML, PS, XSLFo, XPS, SVG, DOCX, PCL в формат PDF. Для получения дополнительной информации посетите страницу продукта.

Заключение

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