JAVA 添加、修改和删除PDF书签
当阅读篇幅较长的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. 添加书签
import com.spire.pdf.*;
import com.spire.pdf.actions.PdfGoToAction;
import com.spire.pdf.bookmarks.PdfBookmark;
import com.spire.pdf.bookmarks.PdfTextStyle;
import com.spire.pdf.general.PdfDestination;
import com.spire.pdf.graphics.PdfRGBColor;
import java.awt.*;
import java.awt.geom.Point2D;
public class bookmark {
public static void main(String[] args) throws Exception{
//创建PDF实例
PdfDocument doc = new PdfDocument();
//从系统中加载PDF文件
doc.loadFromFile("data/Sample.pdf");
PdfPageBase page = doc.getPages().get(2);
//添加书签
PdfBookmark bookmark = doc.getBookmarks().add("第三页");
//获取位置,页码的开头
PdfDestination bookmarkLocation = new PdfDestination(page, new Point2D.Float(0 , 0));
bookmark.setAction(new PdfGoToAction(bookmarkLocation));
//书签样式
bookmark.setColor(new PdfRGBColor(Color.BLUE));
bookmark.setDisplayStyle(PdfTextStyle.Bold);
PdfPageBase page1 = doc.getPages().get(3);
PdfBookmark bookmark1 = doc.getBookmarks().add("第四页");
PdfDestination bookmarkLocation1 = new PdfDestination(page1, new Point2D.Float(0 , 0));
bookmark1.setAction(new PdfGoToAction(bookmarkLocation1));
bookmark1.setColor(new PdfRGBColor(Color.RED));
bookmark1.setDisplayStyle(PdfTextStyle.Bold);
//保存PDF文件
doc.saveToFile("output/bookmarks.pdf");
doc.close();
}
}
书签添加效果:

2. 修改书签
import com.spire.pdf.PdfDocument;
import com.spire.pdf.bookmarks.*;
import com.spire.pdf.graphics.PdfRGBColor;
import java.awt.*;
public class updateBookmark {
public static void main(String[] args) {
//创建PDF实例
PdfDocument doc = new PdfDocument();
//从系统中加载PDF文件
doc.loadFromFile("output/bookmarks.pdf");
//获取第一个书签
PdfBookmark bookmark = doc.getBookmarks().get(0);
//更改书签
bookmark.setTitle("已更新的书签");
// 设置书签的颜色
bookmark.setColor(new PdfRGBColor(Color.black));
//设置书签文本加粗
bookmark.setDisplayStyle(PdfTextStyle.Bold);
//保存文件
doc.saveToFile("output/updateBookmark.pdf");
doc.close();
}
}
书签修改效果:

3. 删除书签
import com.spire.pdf.PdfDocument;
public class deleteBookmark {
public static void main(String[] args) {
//创建PDF实例
PdfDocument doc = new PdfDocument();
//从系统中加载PDF文件
doc.loadFromFile("output/bookmarks.pdf");
//removeAt()方法移除书签
doc.getBookmarks().removeAt(0);
//保存文件
doc.saveToFile("output/deleteBookmark.pdf");
doc.close();
}
}
书签删除效果:

(本文完)
转载请声明出处!
JAVA 添加、修改和删除PDF书签的更多相关文章
- C# 添加、修改和删除PDF书签
C# 添加.修改和删除PDF书签 有时候我们在阅读PDF文档时会遇到这样一种情况:PDF文档页数比较多,但是又没有书签,所以我们不能根据书签快速了解文档所讲解的内容,也不能点击书签快速跳转到相应的位置 ...
- java如何实现批量删除pdf指定的页数
依赖: <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox-app ...
- Entity Framework Code First添加修改及删除单独实体
对于一个单独实体的通常操作有3种:添加新的实体.修改实体以及删除实体. 1.添加新的实体 Entity Framework Code First添加新的实体通过调用DbSet.Add()方法来实现. ...
- Entity Framework Code First添加修改及删除外键关联实体
1.添加外键关联实体 1>.添加新的Province及City实体 using (var ctx = new PortalContext()) { var city1 = new City { ...
- DNS添加/修改/查询/删除A记录
#查询DNS可用类 Get-WmiObject -Namespace root\MicrosoftDNS -List #查询所有资源记录 $mydns = [WMIClass]"ROOT\M ...
- Java如何大批量从json数据源中按指定符号隔字符串,并修改、删除数据
原文出自:https://blog.csdn.net/seesun2012 package com.seesun2012.com; /** * Java大批量修改.删除数据,按指定标识符分隔字符串 * ...
- Java 添加、验证PDF 数字签名
在设置文档内容保护的方法中,除了对文档加密.添加水印外,应用数字签名也是一种有效防伪手段.数字签名的文件比较容易验证,并且具有较高的权威性和可信度.在PDF文档中,有可直接添加或验证数字签名的功能方法 ...
- Java添加、提取、替换和删除PDF图片
(一)简介 这篇文章将介绍在Java中添加.提取.删除和替换PDF文档中的图片. 工具使用: Free Spire.PDF for JAVA 2.4.4(免费版) Intellij IDEA Jar包 ...
- js/java 获取、添加、修改、删除cookie(最全)
一.cookie介绍 1.cookie的本来面目 HTTP协议本身是无状态的.什么是无状态呢,即服务器无法判断用户身份.Cookie实际上是一小段的文本信息(key-value格式).客户端向服务 ...
随机推荐
- UVA 10245 The Closest Pair Problem【分治】
题目链接: http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=21269 题意: 求平面最近点对. 分析: 经典问题. n比 ...
- Topcoder 658 650 point
Topcoder 658 div2 500 加强版 不过给了<=20,暴力肯定不行. 然后想DP方程,先二分可能需要的最大次数mid; 然后根据 mid 构造 DP方程. 假设x[i]需要 x个 ...
- java基础语法1
一:基础语法之--标识符,修饰符,关键字 1.标识符: 定义:类名.变量名以及方法名都被称为标识符.自定义的名字. 注意: ·所有的标识符都应该以字母(A-Z或者a-z),美元符($).或者下划线(_ ...
- 过滤器链chain.doFilter(request,response)含义
过滤器的生命周期一般都要经过下面三个阶段: 初始化 当容器第一次加载该过滤器时,init() 方法将被调用.该类在这个方法中包含了一个指向 Filter Config 对象的引用. 过滤 过滤器的大多 ...
- C# 读自己的资源文件
Assembly assm = this.GetType().Assembly;//Assembly.LoadFrom(程序集路径); foreach (string resName in assm. ...
- Mysql不同存储引擎的表转换方法
Mysql不同存储引擎的表转换方法 1.Alter table直接修改表的存储引擎,但是这样会导致大量的系统开销,Mysql为此要执行一个就表向新表的逐行复制.在此期间,转换操作可能会占用服务器的所有 ...
- Java 8 中的 java.util.Optional
Java 8 中的 java.util.Optional 学习了:https://blog.csdn.net/sun_promise/article/details/51362838 package ...
- PDO防止SQL注入具体介绍
<span style="font-size:18px;"><?php $dbh = new PDO("mysql:host=localhost; db ...
- ASP.net MVC+ViewData VS ViewBag
在使用MVC框架的过程中,往界面传值,我们使用的ViewData.如ITOO部分代码图解: 当然除了ViewData,我们还能够使用同卵兄弟(ViewBag)来完毕相同的功能,详情 ...
- ubuntu下打开eclipse·发现没有顶尖菜单项
在安装eclipse时,打开集成开发环境后没有菜单项. 网上些人说要写个shell脚步,感觉有点麻烦,其实就是少了一个环境变量 BUNTU_MENUPROXY. 在/etc/profile 里面新建这 ...