• 用 Java 在 PDF 中创建和管理图层,实现交互式文档


    PDF 图层(也称为可见图层或附加图层等)是组织和管理 PDF 文档中内容可见性的一种方法。PDF 图层可用于创建交互式文档、隐藏或显示特定信息、创建多语言版本文档等。通过添加和删除图层,用户可以根据需要定制 PDF 文档指定内容的可见性与显示方式。本文介绍如何使用 Java 在 PDF 文档中添加、显示、隐藏及删除图层。

    教程所使用的方法需要用到 Free Spire.PDF for Python,可从官网获取。

    用 Java 在 PDF 中添加图层

    可使用 Free Spire.PDF for Python 中的 Document.getLayers().addLayer() 方法在 PDF 文档中创建任意图层。创建好图层后,就可以利用图层将内容绘制在页面上,从而方便对内容进行管理。具体步骤如下:

    • 创建一个 PdfDocument 类对象并使用 PdfDocument.loadFromFile() 方法加载 PDF 文档。
    • 使用 PdfDocument.getLayers().addLayer() 方法在文档中创建图层。
    • 遍历文档页面,并使用 PdfLayer.createGraphics().drawImage() 方法通过创建的图层将图像绘制在每一页的指定位置。
    • 使用 PdfDocument.saveToFile() 方法保存文档。

    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.io.IOException;
    
    public class addLayersToPdf {
    
        public static void main(String[] args) throws IOException {
    
            // 创建PdfDocument对象并加载PDF文档
            PdfDocument pdf = new PdfDocument();
            pdf.loadFromFile("示例.pdf");
    
            // 创建名为页眉的图层
            PdfLayer layer = pdf.getLayers().addLayer("页眉");
    
            //载入一张图像
            PdfImage pdfImage = PdfImage.fromFile("页眉.jpg");
    
            // 遍历所有页面
            for (int i = 0; i < pdf.getPages().getCount(); i++) {
    
                // 获取页面
                PdfPageBase page = pdf.getPages().get(i);
                // 计算图像位置
                float width = pdfImage.getWidth();
                float height = pdfImage.getHeight();
                float x = (float) page.getSize().getWidth()/2 - width/2;
                float y = 10;
                // 通过图层将图像绘制在页面上
                layer.createGraphics(page.getCanvas()).drawImage(pdfImage, x, y, width, height);
            }
    
            // 保存文档
            pdf.saveToFile("添加图层.pdf");
            pdf.dispose();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    添加结果
    添加PDF图层

    用 Java 在 PDF 中设置显示或隐藏图层

    在添加图层到 PDF 文档中后,图层默认为显示在 PDF 页面上。我们可以通过 PdfLayer.setVisibility (PdfVisibility) 方法来设置是否在页面上显示图层。以下是操作步骤:

    • 创建一个 PdfDocument 类对象并使用 PdfDocument.loadFromFile() 方法加载 PDF 文档。
    • 使用 PdfDocument.getLayers().get() 方法通过图层名称获取图层。
    • 使用 PdfLayer.setVisibility() 方法设置图层是否在页面上可见。
    • 使用 PdfDocument.saveToFile() 方法保存 PDF 文档。

    Java

    import com.spire.pdf.PdfDocument;
    import com.spire.pdf.graphics.layer.PdfLayer;
    import com.spire.pdf.graphics.layer.PdfVisibility;
    
    public class SetPdfLayerVisibility {
        public static void main(String[] args) {
            // 创建PdfDocument对象并加载PDF文档
            PdfDocument pdf = new PdfDocument();
            pdf.loadFromFile("添加图层.pdf");
    
            // 通过名称获取指定图层
            PdfLayer layer = pdf.getLayers().get("页眉");
    
            // 将图层设置为隐藏
            layer.setVisibility(PdfVisibility.Off);
    
            // 将图层设置为显示
            //layer.setVisibility(PdfVisibility.On);
    
            // 保存PDF文档
            pdf.saveToFile("隐藏页眉.pdf");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    设置结果
    显示或隐藏PDF图层

    用 Java 从 PDF 中删除图层

    如果有不需要的图层,我们可以使用 PdfDocument.getLayers ().removeLayer (String name, boolean withContent) 方法删除图层,或者只删除图层而保留内容。详细操作步骤如下:

    • 创建一个 PdfDocument 类对象并使用 PdfDocument.loadFromFile() 方法加载 PDF 文档。
    • 使用 PdfDocument.getLayers().removeLayer() 方法完全删除图层或删除图层保留内容。
    • 使用 PdfDocument.saveToFile() 方法保存 PDF 文档。

    Java

    import com.spire.pdf.PdfDocument;
    
    public class DeletePdfLayer {
        public static void main(String[] args) {
    
            // 创建PdfDocument对象并加载PDF文档
            PdfDocument pdf = new PdfDocument();
            pdf.loadFromFile("添加图层.pdf");
    
            // 删除页眉图层
            //pdf.getLayers().removeLayer("页眉");
    
            // 删除页眉但保留页面上的内容
            pdf.getLayers().removeLayer("页眉", false);
    
            // 保存文档
            pdf.saveToFile("删除图层保留内容.pdf");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    删除结果
    删除PDF图层

    以上是关于如何使用 Free Spire.PDF for Java 来创建和管理 PDF 文档图层的介绍。同时,此 API 还有许多其他的功能您可前往 Spire.PDF for Java 教程查看。

  • 相关阅读:
    葡萄糖-聚乙二醇-人血清白蛋白,HAS-PEG-Glucose,人血清白蛋白-PEG-葡萄糖
    js遍历数组
    【死磕JVM】用Arthas排查JVM内存 真爽!我从小用到大
    Java-接口、继承与多态
    ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
    JDBC快速入门
    如何在Windows上配置OpenVPN,使客户端能够访问服务器端内网其他主机?
    链接文件学习(七):英飞凌MCU Tasking编译器LSL链接文件解析 及代码变量定位方法
    Spring-FactoryBean的源码——简略解析(下)
    Selenium启动常用浏览器
  • 原文地址:https://blog.csdn.net/Eiceblue/article/details/133927466