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

Kак добавить слои в PDF в Java

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

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

Установка Spire.Pdf.jar

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


Добавление слоев в PDF на Java

Слой может быть добавлен в PDF-документ с помощью метода Document.getLayers().addLayer(). После создания слоя в него можно добавить текст, изображения, динамические поля или другие элементы для формирования его внешнего вида. Данный пример кода демонстрирует, как добавить заголовок и водяной знак в качестве слоев в PDF-файл с помощью Free Spire.PDF for Java. Ниже приведено пояснение к коду:

  • Для представления PDF-документа создается экземпляр PdfDocument.
  • Метод loadFromFile() вызывается для загрузки существующего PDF-файла по указанному пути.
  • Для добавления различных слоев в PDF-документ вызываются два метода: addLayerWatermark() и addLayerHeader().
  • Модифицированный PDF-документ сохраняется в новый файл с помощью метода saveToFile().

import com.spire.pdf.PdfDocument;

import com.spire.pdf.PdfPageBase;

import com.spire.pdf.graphics.*;

import com.spire.pdf.graphics.layer.PdfLayer;

import java.awt.*;

import java.awt.geom.Dimension2D;

import java.io.IOException;

public class AddLayersToPdf {

public static void main(String[] args) throws IOException {

//Create a PdfDocument object and load the sample PDF file

PdfDocument pdf = new PdfDocument();

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

//Invoke addLayerWatermark method to add a watermark layer

AddLayerWatermark(pdf);

//Invoke addLayerHeader method to add a header layer

AddLayerHeader(pdf);

//Save to file

pdf.saveToFile("output/AddLayers.pdf");

pdf.close();

}

private static void addLayerWatermark(PdfDocument doc) throws IOException {

//Create a layer named «watermark»

PdfLayer layer = doc.getLayers().addLayer("watermark");

//Create a font

PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", Font.BOLD,48),true);

//Specify watermark text

String watermarkText = «DO NOT COPY»;

//Get text size

Dimension2D fontSize = font.measureString(watermarkText);

//Calculate two offsets

float offset1 = (float)(fontSize.getWidth() * Math.sqrt(2) / 4);

float offset2 = (float)(fontSize.getHeight() * Math.sqrt(2) / 4);

//Get page count

int pageCount = doc.getPages().getCount();

//Declare two variables

PdfPageBase page;

PdfCanvas canvas;

//Loop through the pages

for (int i = 0; i < pageCount; i++) {

page = doc.getPages().get(i);

//Create a canvas from layer

canvas = layer.createGraphics(page.getCanvas());

canvas.translateTransform(canvas.getSize().getWidth() / 2 — offset1 — offset2, canvas.getSize().getHeight() / 2 + offset1 — offset2);

canvas.setTransparency(0.4f);

canvas.rotateTransform(-45);

//Draw sting on the canvas of layer

canvas.drawString(watermarkText, font, PdfBrushes.getGreen(), 0, 0);

}

}

private static void addLayerHeader(PdfDocument doc) {

//Create a layer named «header»

PdfLayer layer = doc.getLayers().addLayer("header");

//Get page size

Dimension2D size = doc.getPages().get(0).getSize();

//Specify the initial values of X and y

float x = 40;

float y = 20;

//Get page count

int pageCount = doc.getPages().getCount();

//Declare two variables

PdfPageBase page;

PdfCanvas canvas;

//Loop through the pages

for (int i = 0; i < pageCount; i++) {

//Draw an image on the layer

PdfImage pdfImage = PdfImage.fromFile("C:\Users\Administrator\Desktop\banner.png");

float width = pdfImage.getWidth();

float height = pdfImage.getHeight();

page = doc.getPages().get(i);

canvas = layer.createGraphics(page.getCanvas());

canvas.drawImage(pdfImage, x, y, width, height);

}

}

}


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

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