Kак добавить слои в PDF в Java
Слои PDF позволяют размещать содержимое документов как над, так и под другим содержимым документа. Возможность работы со слоями упрощает такие задачи, как отображение или скрытие аннотаций, изображений, водяных знаков и других визуальных компонентов, что позволяет повысить гибкость и улучшить качество работы пользователей. В этой статье я расскажу о том, как добавлять слои в PDF-документ на языке Java с помощью бесплатной Free Spire.PDF for Java.
Установка Spire.Pdf.jar
Если вы создали
Maven-проект, вы можете легко импортировать jar в свое приложение, используя
следующие конфигурации. Для проектов, не использующих Maven, загрузите jar-файл
по этой
ссылке и добавьте его в качестве зависимости в свое приложение.
Слой может быть добавлен
в PDF-документ с помощью метода Document.getLayers().addLayer(). После создания
слоя в него можно добавить текст, изображения, динамические поля или другие
элементы для формирования его внешнего вида. Данный пример кода демонстрирует, как добавить заголовок и водяной знак в качестве слоев в PDF-файл
с помощью Free Spire.PDF for Java. Ниже приведено пояснение к коду: 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); } } }
Добавление слоев в PDF на Java
