详解Java如何实现在PDF中插入,替换或删除图像
作者:Carina-baby 发布时间:2022-04-07 22:40:36
前言
图文并茂的内容往往让人看起来更加舒服,如果只是文字内容的累加,往往会使读者产生视觉疲劳。搭配精美的文章配图则会使文章内容更加丰富,增加文章可读性的同时,也能提升用户体验。但由于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);
}
}
效果图
来源:https://www.cnblogs.com/Carina-baby/p/17044041.html
猜你喜欢
- SSM Mapper查询出返回数据查不到个别字段原因开启了驼峰命名法则,Bean里的字段不识别_注释掉或者把实体类里的字段_去掉换位大写SS
- 从java14开始, switch语句有了一个很大的调整, 这就让swicth语句有了更多的操作和选择,在代码上,更加的简便灵活.switc
- EasyCode 插件EasyCode 插件 是一款根据表结构生成代码的很方便的Idea插件, 强烈推荐. 并且可以自定义模板来控制生成的类
- 单点登录三种方式单点登录的三种实现方式:分别为session广播机制;cookie+redis;tokensession广播机制指在一个集群
- 这篇文章主要介绍了springboot全局异常处理代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 引言这里实现一个简单的图片上传功能,主要是熟悉这个文件上传的交互流程。关于更复杂的文件上传,如大文件的切片上传、断点续传等,这里不做过多介绍
- 虹软免费,高级版本试用支持在线、离线有 Java SDK,C++ SDK一、注册虹软开发者平台点击注册注册完成后可在“我
- 本文实例为大家分享了Java实现五子棋的具体代码,供大家参考,具体内容如下任务概述:五子棋是全国智力运动会竞技项目之一,是一种两人对弈的纯策
- 错误详情:java.lang.NoSuchMethodException: [Lorg.springframework.web.multip
- 右击有main方法的类===> Run as===> Run Configurations ===>双击java
- springboot对kafka的client很好的实现了集成,使用非常方便,本文也实现了一个在springboot中实现操作kafka的d
- 年纪大了,以前做过的东西过阵子还是会忘,今天使用jenkins持续集成工具时用到了eclipse上传新maven工程至svn,上传完毕后改了
- 随着C语言的学习慢慢结束,博主也要开始学习一门新语言了,那就是java。所以博主将会开启一个新的关于java的专栏,所以想要慢慢和我一起学习
- java加载properties文件的六种方法总结java加载properties文件的六中基本方式实现java加载properties文件
- 一、Java的前世为什么会产生Java?Java的特点是什么?从C语言开始讲,C语言是一种结构化语言,模块化编程,便于程序的调试,依靠非常全
- 一个打砖块游戏算法,供大家参考,具体内容如下这里有一个打砖块游戏:小明面前有很多砖块,每个砖块上有一个字符,小明每击中一个砖块,会产生一个分
- Java排序 - DualPivotQuicksort这里描述 leftmost = true 的情况,也就是会从数组的开始一直排序到数组的
- 方法1 :利用Struts 2的支持的可配置结果,可以达到过滤器的效果。Action的处理结果配置支持正则表达式。但是如果返回的对象是一个数
- 正常状态是UP,跳闸是⼀种状态CIRCUIT_OPEN,可以通过/health查看,前提是工程中需要引入SpringBoot的actuato
- Spring boot项目结合docker容器用,打了个jar包,启动的时候竟然说:no main manifest attribute,