图文并茂的内容往往让人看起来更加舒服,如果只是文字内容的累加,往往会使读者产生视觉疲劳。搭配精美的文章配图则会使文章内容更加丰富,增加文章可读性的同时,也能提升用户体验。但由于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. 2022-08-11-emo了

    layout: post cid: 7 title: emo了 slug: 7 date: 2022/08/11 10:14:00 updated: 2022/08/11 10:15:40 statu ...

  2. python-D3-语法入门1

    Python语法注释 什么是注释 注释其实就是对一段代码的解释说明(注释是代码之母) 如何编写注释 方式1:解释说明文字前加警号 (pycharm中有快捷键ctrl+?) # 注释(单行注释) 方式2 ...

  3. 记录一次成功反混淆脱壳及抓包激活app全过程

    记录一次成功反混淆脱壳及抓包激活app全过程 前言 ​ 近期接到一个需求,要对公司之前开发的一款app进行脱壳.因为该app是两年前开发的,源代码文件已经丢失,只有加壳后的apk文件,近期要查看其中一 ...

  4. 彻底学会Selenium元素定位

    转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/63099961.html 你好,我是测试蔡坨坨. 最近收到不少初学UI自动化测试的小伙伴私信,对于元素的定位还是有些头疼,总 ...

  5. 三、Go环境安装

    3.1.Go编译器的下载  官网:https://golang.google.cn/go中文网:https://studygolang.com/dl 3.2.安装 for Mac 3.2.1. mac ...

  6. 某 .NET RabbitMQ SDK 有采集行为,你怎么看?

    一:背景 1.讲故事 前几天有位朋友在微信上找到我,说他的一个程序上了生产之后,被运维监控定位到这个程序会向一个网址为: http://m.365ey.net 上不定期打数据,而且还是加密的格式,要他 ...

  7. 编译安装PHP7.4

    1.下载PHP源码包 wget https://www.php.net/distributions/php-7.4.30.tar.gz 2.解压缩 tar xf php-7.4.30.tar.gz - ...

  8. 独立按键控制led灯

    #include "regx51.h"typedef unsigned int u16; void delay_us(u16 time){ while(time--){} }voi ...

  9. onps栈使用说明(1)——API接口手册

    1. 底层API 由协议栈底层提供的api,用于涉及底层操作的一些功能实现,这些api接口函数的原型定义分布于不同的文件,它们被统一include进了onps.h中: open_npstack_loa ...

  10. IIS 配置集中式证书模块实现网站自动绑定证书文件

    在 Windows 环境下如果采用 IIS 作为 网站服务器时,常规的网站绑定 HTTPS 需要一个一个站点手动选择对应的证书绑定,而且证书过期之后更换证书时也是需要一个个重新绑定操作,无法便捷的做到 ...