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

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

代码编译环境:
IntelliJ IDEA 2018(jdk 1.8.0)
PDF Jar包:​ ​Free Spire.PDF for Java 5.1.0
1.引入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() 方法保存结果文档。

完整代码

Java

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() 方法保存结果文档。

完整代码

Java

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() 方法保存结果文档。

完整代码

Java

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中插入、替换或删除图像?的更多相关文章

  1. java 如何在pdf中生成表格

    1.目标 在pdf中生成一个可变表头的表格,并向其中填充数据.通过泛型动态的生成表头,通过反射动态获取实体类(我这里是User)的get方法动态获得数据,从而达到动态生成表格. 每天生成一个文件夹存储 ...

  2. 一行Java代码实现游戏中交换装备

    摘要:JDK 1.5 开始 JUC 包下提供的 Exchanger 类可用于两个线程之间交换信息. 本文分享自华为云社区<一行Java代码实现两玩家交换装备[并发编程]>,作者:陈皮的Ja ...

  3. 170120、java 如何在pdf中生成表格

    1.目标 在pdf中生成一个可变表头的表格,并向其中填充数据.通过泛型动态的生成表头,通过反射动态获取实体类(我这里是User)的get方法动态获得数据,从而达到动态生成表格. 每天生成一个文件夹存储 ...

  4. MongoDB最简单的入门教程之三 使用Java代码往MongoDB里插入数据

    前两篇教程我们介绍了如何搭建MongoDB的本地环境: MongoDB最简单的入门教程之一 环境搭建 以及如何用nodejs读取MongoDB里的记录: MongoDB最简单的入门教程之二 使用nod ...

  5. [改善Java代码]减少HashMap中元素的数量

    在系统开发中我们经常会使用HashMap作为数据集容器,或者是用缓冲池来处理,一般很稳定,但偶尔也会出现内存溢出的问题(OutOfMemory错误),而且这经常是与HashMap有关的.而且这经常是与 ...

  6. 【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】

    iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...

  7. java向oracle数据库中插入当前时间

    public class Test{public static void main (String args []){ java.util.Date a = new java.util.Date(); ...

  8. [改善Java代码]在接口中不要存在实现代码

    第3章  类.对象及方法 书读得多而不思考,你会觉得自己知道的很多. 书读得多而思考,你会觉得自己不懂的越来越多. —伏尔泰 在面向对象编程(Object-Oriented Programming,O ...

  9. 通过纯Java代码从excle中读取数据(为.xlsx文件)

    参考链接: 程序代码: package demo; import java.io.File; import java.io.IOException; import java.io.InputStrea ...

  10. Java项目往数据库中插入数据,出现中文乱码

    项目环境: JSP+Servlet+Mysql数据库 需要检查的地方: 1. java项目整体的编码格式为utf-8.并且将数据传递给数据库之前,数据是否依旧是正常的(可以通过打断点的方式一步步跟踪查 ...

随机推荐

  1. Shading-JDBC、ShadingSphere、ShardingProxy 使用详解

    ShadingSphere ​ShardingSphere是一款起源于当当网内部的应用框架,2015年在当当网内部诞生,2016年由主要开发人员张亮带入京东数科,在国内经历了当当网.电信翼支付.京东数 ...

  2. Windows版 PostgreSQL 利用 pg_upgrade 进行大版升级操作

    最近 PostgreSQL 15 版本正式发布了,新版本的各种特性和好处本文就不展开介绍了,主要介绍一下 Windows 环境下 PostgreSQL 大版本升级的方法,我们现在的几个数据库都是运行在 ...

  3. Conda的使用

    conda常用的命令 在Anaconda Powershell Prompt 输入: 1.conda -V检验是否安装及当前conda的版本. 2.conda list查看安装了哪些包 3.conda ...

  4. Gitea 1.18 功能前瞻(其三):增强文本预览效果、继续扩展软件包注册中心、增强工单实用功能、完善了用户邀请机制和SEO

    今天是 10 月 26 日星期三,Gitea 周期性地发布了 1.18 的第一个 RC0 版本,在此阶段会收集一些功能和使用上的问题,随后还会发布 RC1,新功能的完整性和健壮性会逐步趋近正式版. 继 ...

  5. 部署redis-cluster

    1.环境准备 ☆ 每个Redis 节点采用相同的相同的Redis版本.相同的密码.硬件配置 ☆ 所有Redis服务器必须没有任何数据 #所有主从节点执行: [root@ubuntu2004 ~]#ba ...

  6. Nginx 使用自签名证书实现 https 反代 Spring Boot 中碰到的页面跳转问题

    问题一:页面自动跳转到 80 端口 问题描述 最近在使用Nginx反代一个Spring Boot项目中碰到了一个问题,使用 Spring Boot 中的 redirect: 进行页面跳转的时候,通过 ...

  7. CSS动画-transition/animation

    HTML系列: 人人都懂的HTML基础知识-HTML教程(1) HTML元素大全(1) HTML元素大全(2)-表单 CSS系列: CSS基础知识筑基 常用CSS样式属性 CSS选择器大全48式 CS ...

  8. 4.drf-版本管理

    根据RESTful规范,后端API中需要体现出版本,DRF中支持5种版本的设置,常见的三种如下 1. URL的GET中传递参数 在视图类中定义 from rest_framework.versioni ...

  9. CentOS 7.x字符界面安装图形界面方法

    1. 配置好yum源,可以使用光盘镜像源,也可以使用网络源. 阿里源下载示例: wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.ali ...

  10. DP?

    杨斌涵//aad69d38 分治优化DP 分治优化1D/1D dp 对于一类 \[f(x) = \min_{k = y}^{x - 1} w(l, r) \] 即所有 \(w(l,r)\) 事先已知, ...