java pdf 书签_Java PDF书签——添加、编辑、删除、读取书签

本文介绍通过Java程序来操作PDF书签,根据对书签的不同操作要求,分以下情况来介绍:

1. 添加书签(包括添加一级书签、多级子书签)

3. 删除书签(包括删除所有书签、删除子书签等)

4. 读取书签

工具使用

程序使用辅助工具:Free Spire.PDF for Java(免费版)

方法1

:可下载

jar包,解压并将lib文件夹下的jar文件导入java程序(手动导入)

方法2

: 通过创建Maven项目程序,在pom.xml中配置maven仓库路径并指定Free Spire.PDF for Java 的依赖,配置完成后,在IDEA中,点击“Import Changes”导入JAR包:

com.e-iceblue

http://repo.e-iceblue.cn/repository/maven-public/

e-iceblue

spire.pdf.free

2.6.3

(Ecllipse

的导入方法,参考这篇

)

jar导入结果如下图所示:

623f0a1b14c9cb3ee6e58b8104e1b186.png

1.

添加书签到PDF

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 AddBookmark {

public static void main(String[] args) {

//创建PdfDocument实例

PdfDocument pdf = new PdfDocument();

//加载PDF文档

pdf.loadFromFile("test.pdf");

//获取第一页

PdfPageBase page = pdf.getPages().get(0);

//添加书签

PdfBookmark bookmark = pdf.getBookmarks().add("第一部分 调查研究概述");

bookmark.setDisplayStyle(PdfTextStyle.Bold);//设置字体样式

bookmark.setColor(new PdfRGBColor(new Color(139, 69, 19)));//设置字体颜色

PdfDestination destination = new PdfDestination(page, new Point2D.Float(0, 0));//设置书签的目标页面和位置

bookmark.setAction(new PdfGoToAction(destination));

//添加二级子书签

PdfBookmark childBookmark = bookmark.add("第一节 菌种特性研究");

childBookmark.setColor(new PdfRGBColor(new Color(255, 127, 80)));//设置字体颜色

childBookmark.setDisplayStyle(PdfTextStyle.Italic);//设置字体样式

PdfDestination childDestination = new PdfDestination(page, new Point2D.Float(0, 100));//设置子书签的目标页面和位置

childBookmark.setAction(new PdfGoToAction(childDestination));

//添加三级子书签

PdfBookmark childBookmark1 = childBookmark.add("1. 菌种特性概念");

childBookmark1.setColor(new PdfRGBColor(new Color(125, 152, 100)));//设置字体颜色

childBookmark1.setDisplayStyle(PdfTextStyle.Italic);//设置字体样式

PdfDestination childDestination1 = new PdfDestination(page, new Point2D.Float(50, 100));//设置子书签的目标页面和位置

childBookmark1.setAction(new PdfGoToAction(childDestination1));

//保存文档

pdf.saveToFile("AddBookmarks.pdf");

pdf.dispose();

}

}

书签添加效果:

789c1f82212eff2aa6168d5e8f6f3d27.png

2.

编辑PDF

中已有的书签

import com.spire.pdf.*;

import com.spire.pdf.bookmarks.PdfBookmark;

import com.spire.pdf.bookmarks.PdfTextStyle;

import com.spire.pdf.graphics.PdfRGBColor;

import java.awt.*;

public class ModifyBookmark {

public static void main(String[] args) {

//创建PdfDocument实例

PdfDocument pdf = new PdfDocument();

//加载PDF文档

pdf.loadFromFile("AddBookmarks.pdf");

//获取第一个书签,修改书签标题、字体颜色、字体样式

PdfBookmark bookmark = pdf.getBookmarks().get(0);

bookmark.setTitle("新标题");

bookmark.setColor(new PdfRGBColor(new Color(255,20,147)));

bookmark.setDisplayStyle(PdfTextStyle.Bold);

//修改子书签的字体、颜色和字体样式等

for (int i = 0 ; i

//修改二级子书签

PdfBookmark childBookmark =  bookmark.get(0);

childBookmark.setColor(new PdfRGBColor(new Color(148,0,211)));

childBookmark.setDisplayStyle(PdfTextStyle.Italic);

//修改三级子书签

PdfBookmark childBookmark1 = childBookmark.get(0);

childBookmark1.setColor(new PdfRGBColor(new Color(255,215,0)) );

childBookmark1.setDisplayStyle(PdfTextStyle.Italic);

}

//保存文档

pdf.saveToFile("ModifyBookmarks.pdf");

pdf.close();

}

}

书签编辑结果:

7649374458c660cd8cc108791dd5f583.png

3.

删除PDF

中的书签

import com.spire.pdf.*;

public class DeleteBookmark {

public static void main(String[] args) {

//创建PdfDocument实例,加载PDF文档

PdfDocument pdf = new PdfDocument();

pdf.loadFromFile("AddBookmarks.pdf");

//删除第一个书签(包括删除其包含的子书签)

pdf.getBookmarks().removeAt(0);

/*//仅删除子书签

PdfBookmark childBookmark = pdf.getBookmarks().get(0);

childBookmark.removeAt(0);*/

//保存文档

pdf.saveToFile("RemoveBookmark.pdf");

pdf.dispose();

}

}

4.

读取PDF

中的书签

import com.spire.pdf.*;

import com.spire.pdf.bookmarks.PdfBookmark;

import com.spire.pdf.bookmarks.PdfBookmarkCollection;

import java.io.FileWriter;

import java.io.IOException;

public class GetBookmark {

public static void main(String[] args) {

//加载包含书签的PDF文档

PdfDocument pdf = new PdfDocument();

pdf.loadFromFile("AddBookmarks.pdf");

//获取书签集合

PdfBookmarkCollection bookmarkCollection = pdf.getBookmarks();

//实例化StringBuilder类

StringBuilder stringbuilder = new StringBuilder();

//定义方法获取书签

GetBookmarkTitle(bookmarkCollection, stringbuilder);

//声明txt文件,并将获得的多级书签写入到文件.txt

FileWriter writer;

try {

writer = new FileWriter("读取的书签.txt");

writer.write(stringbuilder.toString());

writer.flush();

} catch (IOException e) {

e.printStackTrace();

}

pdf.dispose();

}

//定义方法获取书签标题

static void GetBookmarkTitle(PdfBookmarkCollection bookmarkCollection, StringBuilder stringbuilder)

{

if (bookmarkCollection.getCount()> 0)

{

for(int i = 0 ; i

{

PdfBookmark parentBookmark = bookmarkCollection.get(i);

stringbuilder.append(parentBookmark.getTitle());

//递归文档多级书签

GetBookmarkTitle(parentBookmark, stringbuilder);

}

}

}

}

书签读取结果:

593e459d9ff75f95918fe9de3a08442b.png

(完)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值