详解Java如何实现在PDF中插入,替换或删除图像

 更新时间:2023年01月11日 16:13:13   作者:Carina-baby  
图文并茂的内容往往让人看起来更加舒服,如果只是文字内容的累加,往往会使读者产生视觉疲劳。搭配精美的文章配图则会使文章内容更加丰富。那我们要如何在PDF中插入、替换或删除图像呢?别担心,今天为大家介绍一种高效便捷的方法

前言

图文并茂的内容往往让人看起来更加舒服,如果只是文字内容的累加,往往会使读者产生视觉疲劳。搭配精美的文章配图则会使文章内容更加丰富,增加文章可读性的同时,也能提升用户体验。但由于PDF文档安全性较高,不易对其进行修改编辑,那我们要如何在PDF中插入、替换或删除图像呢?别担心,今天为大家介绍一种高效便捷的方法。我们可以通过编程的方式来实现此操作。

  • 将图像插入PDF文档
  • 替换PDF文档中的图像
  • 删除PDF文档中的指定图像

代码编译环境:

IntelliJ IDEA 2018(jdk 1.8.0)

PDF Jar包:Free Spire.PDF for Java 5.1.01.引入jar包

导入方法1:

手动引入。将Free Spire.PDF for Java下载到本地,解压,找到lib文件夹下的Spire.PDF.jar文件。在IDEA中打开如下界面,将本地路径中的jar文件引入Java程序:

导入方法2:如果您想通过 Maven安装,则可以在 pom.xml 文件中添加以下代码导入 JAR 文件。

<repositories>

        <repository>

            <id>com.e-iceblue</id>

            <url>https://repo.e-iceblue.cn/repository/maven-public/</url>

        </repository>

    </repositories>

<dependencies>

    <dependency>

        <groupId>e-iceblue</groupId>

        <artifactId>spire.pdf.free</artifactId>

        <version>5.1.0</version>

    </dependency>

</dependencies>

将图像插入PDF文档

  • 初始化 PdfDocument 类的实例。
  • 使用 PdfDocument.loadFromFile() 方法加载 PDF 文档。
  • 使用 PdfDocument.getPages().get() 方法在 PDF 文档中获取所需的页面。
  • 使用 PdfImage.fromFile() 方法加载图像。
  • 指定页面上图像区域的宽度和高度。
  • 指定 X 和 Y 坐标以开始绘制图像。
  • 使用 PdfPageBase.getCanvas().drawImage() 方法在页面上绘制图像。
  • 使用 PdfDocument.saveToFile() 方法保存结果文档。

完整代码

import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.*;

public class AddImage {
    public static void main(String []args){
        //初始化 PdfDocument 类的实例
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromFile("阿拉斯加犬.pdf");

        //获取所需的页面
        PdfPageBase page = pdf.getPages().get(0);

        //加载图像
        PdfImage image = PdfImage.fromFile("图片1.jpg");

        //指定页面上图像区域的宽度和高度
        float width = image.getWidth() * 0.30f;
        float height = image.getHeight() * 0.30f;

        //指定 X 和 Y 坐标以开始绘制图像
        float x = 130f;
        float y = 240f;

        //在页面指定位置上绘制图像
        page.getCanvas().drawImage(image, x, y, width, height);

        //保存结果文档
        pdf.saveToFile("插入图片.pdf", FileFormat.PDF);
    }
}

效果图

替换PDF文档中的图像

以下是替换PDF文档图像的具体步骤:

  • 初始化 PdfDocument 类的实例。
  • 使用 PdfDocument.loadFromFile() 方法加载 PDF 文档。
  • 使用 PdfDocument.getPages().get() 方法在 PDF 文档中获取所需的页面。
  • 使用 PdfImage.fromFile() 方法加载图像。
  • 使用 PdfPageBase.replaceImage() 方法将页面上的特定图像替换为加载的图像。
  • 使用 PdfDocument.saveToFile() 方法保存结果文档。

完整代码

import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImage;

public class ReplaceImage {
    public static void main(String []args){
        //初始化 PdfDocument 类的实例
        PdfDocument doc = new PdfDocument();
        //加载 PDF 文档
        doc.loadFromFile("插入图片.pdf");

        //获取所需的页面
        PdfPageBase page = doc.getPages().get(0);

        //加载图像
        PdfImage image = PdfImage.fromFile("图片2.jpg");

        //将页面上的指定图像替换为加载的图像
        page.replaceImage(0, image);

        //保存结果文档
        doc.saveToFile("替换图片.pdf", FileFormat.PDF);
    }
}

效果图

删除PDF文档中的指定图像

以下是从 PDF 文档中删除图像的具体步骤:

  • 初始化 PdfDocument 类的实例。
  • 使用 PdfDocument.loadFromFile() 方法加载 PDF 文档。
  • 使用 PdfDocument.getPages().get() 方法在 PDF 文档中获取所需的页面。
  • 使用 PdfPageBase.deleteImage() 方法删除页面上的特定图像。
  • 使用 PdfDocument.saveToFile() 方法保存结果文档。

完整代码

import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;

public class DeleteImage {
    public static void main(String []args){
        //初始化 PdfDocument 类的实例
        PdfDocument pdf = new PdfDocument();
        //加载 PDF 文档
        pdf.loadFromFile("插入图片.pdf");

        //获取所需的页面
        PdfPageBase page = pdf.getPages().get(0);

        //删除页面上的指定图像
        page.deleteImage(0);

        //保存结果文档
        pdf.saveToFile("删除图片.pdf", FileFormat.PDF);
    }
}

效果图

到此这篇关于详解Java如何实现在PDF中插入,替换或删除图像的文章就介绍到这了,更多相关Java PDF插入 替换 删除图像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java多线程中线程间的通信实例详解

    Java多线程中线程间的通信实例详解

    这篇文章主要介绍了Java多线程中线程间的通信实例详解的相关资料,需要的朋友可以参考下
    2017-04-04
  • Java之Mybatis多层嵌套查询方式

    Java之Mybatis多层嵌套查询方式

    这篇文章主要介绍了Java之Mybatis多层嵌套查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)

    详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)

    这篇文章主要介绍了详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate),具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • 自定义JmsListenerContainerFactory时,containerFactory字段解读

    自定义JmsListenerContainerFactory时,containerFactory字段解读

    这篇文章主要介绍了自定义JmsListenerContainerFactory时,containerFactory字段解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 从入门到超神进阶的Netty群聊系统

    从入门到超神进阶的Netty群聊系统

    本篇文章基于Netty做一个聊天室案例加强Netty的熟练度,案例的效果是服务端可以广播某客户端的消息给所有客户端。每个客户端监听键盘输入来获取消息,然后发送给服务端
    2021-08-08
  • 关于spring中aop的注解实现方法实例详解

    关于spring中aop的注解实现方法实例详解

    这篇文章主要给大家介绍了关于spring中aop的注解实现方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起看看吧。
    2017-08-08
  • Java JVM调优五大技能详解

    Java JVM调优五大技能详解

    这篇文章主要为大家介绍了JVM调优的五大技能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • 一文教你如何通过三级缓存解决Spring循环依赖

    一文教你如何通过三级缓存解决Spring循环依赖

    这篇文章主要介绍了如何通过三级缓存解决 Spring 循环依赖,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下
    2023-07-07
  • 基于Spring Boot的线程池监控问题及解决方案

    基于Spring Boot的线程池监控问题及解决方案

    这篇文章主要介绍了基于Spring Boot的线程池监控方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Spring Boot实现模块化的几种方法

    Spring Boot实现模块化的几种方法

    模块可以是业务模块,为应用程序提供一些业务服务,或者为几个其他模块或整个应用程序提供跨领域关注的技术模块。这篇文章主要介绍了Spring Boot实现模块化,需要的朋友可以参考下
    2018-07-07

最新评论