Java添加、提取、替换和删除PDF图片
(一)简介
这篇文章将介绍在Java中添加、提取、删除和替换PDF文档中的图片。
工具使用:
- Free Spire.PDF for JAVA 2.4.4(免费版)
- Intellij IDEA
Jar包导入:
方式一:首先,从官网获取Free Spire.PDF for Java之后解压,以下是三种在IDEA中快速打开Project Structure界面的方式;如下图:
然后:① 选择“Modules”—“Dependencies”,添加外置jar包;② 进入"Attach File or Directories"界面选择jar文件路径,然后点击“OK”;③ 勾选jar路径选项,点击”OK”/”Apply”;④ 导入完成。如下图:

- 方式二:使用Maven配置导包。可以参考官方帮助文档。
主要参考使用的源文档截图:

(二)JAVA 代码示例
1. 给PDF添加图片
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
public class drawImage {
public static void main(String[] args) {
//创建PDF实例
PdfDocument doc = new PdfDocument();
//加载PDF源文件
doc.loadFromFile("data/Sample.pdf");
//获取文档的第一页
PdfPageBase page = doc.getPages().);
drawImageMethod(page);
//保存PDF文件
doc.saveToFile("output/drawImage.pdf");
doc.close();
}
private static void drawImageMethod(PdfPageBase page) {
//添加图片
PdfImage image = PdfImage.fromFile("data/1.png");
float width = image.getWidth() * 0.3f;
float height = image.getHeight() * 0.3f;
//放置图片的绝对位置
page.getCanvas().drawImage(image, ,, width, height);
}
}
结果:

2. 提取PDF中图片
import com.spire.pdf.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
public class extraction {
public static void main(String[] args) throws Exception{
//创建PDF实例
PdfDocument pdf = new PdfDocument();
//加载PDF源文件
pdf.loadFromFile("data/Sample.pdf");
;
//遍历PDF每一页
;i< pdf.getPages().getCount(); i ++){
//获取PDF页面
PdfPageBase page = pdf.getPages().get(i);
for (BufferedImage image : page.extractImages()) {
File output = new File("output/" + String.format("Image_%d.png", index++));
//将图片保存为PNG格式文件
ImageIO.write(image, "PNG", output);
}
}
}
}
结果:


3. 替换PDF中图片
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImage;
import java.io.IOException;
public class ReplaceImage {
public static void main(String[] args) throws IOException {
//创建一个PDF实例
PdfDocument pdf = new PdfDocument();
//加载PDF文档
pdf.loadFromFile("data/Sample.pdf");
//获取第一页
PdfPageBase page = pdf.getPages().);
//加载一张图片
PdfImage image = PdfImage.fromFile("data/1.png");
//使用加载的图片替换第一页上的第一张图片
page.replaceImage(, image);
//保存文档
pdf.saveToFile("替换图片.pdf");
}
}
结果:

4. 删除PDF中图片
import com.spire.pdf.*;
public class deleteImage {
public static void main(String[] args) {
//创建PDF实例
PdfDocument doc = new PdfDocument();
//加载PDF源文档
doc.loadFromFile("data/Sample.pdf");
//获取文档的第一页
PdfPageBase page = doc.getPages().);
//删除第一页的第一张图
page.deleteImage();
//保存文档
doc.saveToFile("output/deleteImage.pdf");
doc.close();
}
}
结果:

P.S. 另外关于PDF中图片的操作还有:为PDF添加图片水印。
(本文完)
Java添加、提取、替换和删除PDF图片的更多相关文章
- Java 添加、替换、删除PDF中的图片
概述 本文介绍通过java程序向PDF文档添加图片,以及替换和删除PDF中已有的图片.另外,关于图片的操作还可参考设置PDF 图片背景.设置PDF图片水印.读取PDF中的图片.将PDF保存为图片等文章 ...
- JAVA 添加、修改和删除PDF书签
当阅读篇幅较长的PDF文档时,为方便我们再次阅读时快速定位到上一次的阅读位置,可以插入一个书签进行标记:此外,对于文档中已有的书签,我们也可以根据需要进行修改或者删除等操作.本篇文章将通过Java编程 ...
- Java 添加、读取、删除Excel图片
本文介绍在Java程序中如何添加图片到excel表格,添加图片时可设置图片大小.位置.旋转.超链接.可选文本等,以及如何读取.删除excel表格中已有的图片. 工具:Free Spire.XLS fo ...
- C# 添加、修改和删除PDF书签
C# 添加.修改和删除PDF书签 有时候我们在阅读PDF文档时会遇到这样一种情况:PDF文档页数比较多,但是又没有书签,所以我们不能根据书签快速了解文档所讲解的内容,也不能点击书签快速跳转到相应的位置 ...
- C# 添加、获取及删除PDF附件
C# 添加.获取及删除PDF附件 前言 附件在PDF文档中很常见,这些附件可以是PDF或其他类型的文件.在PDF中,附件有两种存在方式,一种是普通的文件附件(document-level file a ...
- Java 添加、读取和删除 Excel 批注
批注是一种富文本注释,常用于为指定的Excel单元格添加提示或附加信息. Free Spire.XLS for Java 为开发人员免费提供了在Java应用程序中对Excel文件添加和操作批注的功能. ...
- Java 添加、下载、读取PDF附件信息(基于Spire.Cloud.SDK for Java)
Spire.Cloud.SDK for Java提供了PdfAttachmentsApi接口添加附件addAttachment().下载附件downloadAttachment().获取附件信息get ...
- Java 添加 、读取以及删除PPT幻灯片中的视频、音频文件
在PPT中,可以操作很多种元素,如形状.图形.文字.图片.表格等,也可以插入视频或者音频文件,来丰富幻灯片的内容呈现方式.下面将介绍在Java程序中如何来添加视频.音频文件到PPT幻灯片,读取和删除幻 ...
- 创建PDF模板,java添加内容、导出下载PDF
本文主要内容是:用java在pdf模板中加入数据,图片. 废话不多说,举个非常简单的例子: 首先创建word文档,导出PDF. 用 软件adobe acrobat打开,操作步骤如图: 在指定位置添加文 ...
随机推荐
- Android(java)学习笔记178:多媒体之计算机图形表示方式
1. 多媒体 很多媒体:文字(TextView,简单不讲),图片,声音,视频等等. 2. 图片 计算机如何表示图片的? (1)bmp 高质量保存 256色位图:图片中的每个像素点可以有256 ...
- nvidia 的一些命令
直接在命令行使用 NVIDIA-smi会有问题 首先要确保电脑下了cuda. 然后打开cmd,使用cd命令进入: C:\Program Files\NVIDIA Corporation\NVSMI 然 ...
- CWnd::Updata的作用
CWnd::Updata的作用 CWnd::UpdateData 调用此成员函数以在对话框中初始化数据,或者取回和验证对话框数据. BOOL UpdateData(BOOL bSaveAndValid ...
- JavaSE-03 Java选择结构
学习要点 if选择结构 switch选择结构 if选择结构 单分支if选择结构 语法结构 应用场合 问题:如果王小强的Java考试成绩大于98分,小强就能获得一个iphone8作为奖励. 复杂条件下的 ...
- 在实现栈中原来功能的基础上,获得一个栈中最小值,要求时间复杂度 bigO(1)
思路: 准备两个栈 stackData stackMin package my_basic; import java.util.Stack; public class GetMinStack { St ...
- oracle插入多表(insert all/first)
1.建测试表 CREATE TABLE EDW_INT ( AGMT_NO VARCHAR2(40 BYTE) NOT NULL, AG ...
- 从零实现一个http服务器
我始终觉得,天生的出身很重要,但后天的努力更加重要,所以如今的很多“科班”往往不如后天努力的“非科班”.所以,我们需要重新给“专业”和“专家”下一个定义:所谓专业,就是别人搞你不搞,这就是你的“专业” ...
- 5. 在Datadir目录外创建单独表空间
5. 在Datadir目录外创建单独表空间 要在MySQL dadadir之外的位置创建单独表空间,请使用该子句: DATA DIRECTORY = '/path' 在目标目录中,MySQL会创建一个 ...
- 如何用纯 CSS 创作一种有削铁如泥感觉的菜单导航特效
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/XqYroe 可交互视频教 ...
- 条款31:将文件间的编译依存关系降至最低(Minimize compilation dependencies between files)
NOTE1: 1.支持“编译依存性最小化”的一般构想是:相依于声明式,不要相依于定义式.基于此构想的两个手段是Handle classes 和 Interface classes. 2.程序库头文件应 ...