java给pdf添加书签_Java 添加、修改、读取PDF书签

一、序言

在前文中,我曾介绍过如何使用Java程序来添加、读取和删除Word书签。与Word文档一样,PDF文档同样也可进行书签的添加、修改及读取。本文就将通过代码演示来详细讲解其操作方法。

二、环境搭建

本文代码演示所用到的工具为Free Spire.PDF for Java, 可通过官网下载获取。解压文档后将lib文件夹下的Spire.Pdf.jar手动导入Java程序。

另外,也可通过Maven仓库将JAR包安装到Maven项目中。仅需在pom.xml文件中配置Maven仓库路径,并指定Free Spire.PDF for Java的Maven依赖。配置完成后,点击“Import Changes”即可导入JAR包。

com.e-iceblue

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

e-iceblue

spire.pdf.free

2.6.3

三、代码演示

示例1 添加PDF标签

import com.spire.pdf.PdfDocument;

import com.spire.pdf.PdfPageBase;

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("C:\\Users\\Test1\\Desktop\\Sample.pdf");

//获取第一页

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

//添加书签

PdfBookmark bookmark = pdf.getBookmarks().add("贴春联");

//设置书签的目标页面和位置

PdfDestination destination = new PdfDestination(page, new Point2D.Float(0, 0));

bookmark.setAction(new PdfGoToAction(destination));

//设置字体颜色

bookmark.setColor(new PdfRGBColor(new Color(2, 139, 2)));

//设置字体样式

bookmark.setDisplayStyle(PdfTextStyle.Bold);

//添加子书签

PdfBookmark childBookmark = bookmark.add("春联的种类比较多,依其使用场所,可分为门心、框对、横披、春条、斗方等。");

//设置子书签的目标页面和位置

PdfDestination childDestination = new PdfDestination(page, new Point2D.Float(0, 100));

childBookmark.setAction(new PdfGoToAction(childDestination));

//设置字体颜色

childBookmark.setColor(new PdfRGBColor(new Color(255, 80, 226)));

//设置字体样式

childBookmark.setDisplayStyle(PdfTextStyle.Italic);

//保存结果文档

pdf.saveToFile("output/AddBookmarks.pdf");

}

}

添加效果:

03dd428e8a454cf562b41ea699ef965f.png

示例2 修改PDF书签

import com.spire.pdf.PdfDocument;

import com.spire.pdf.bookmarks.PdfBookmark;

import com.spire.pdf.bookmarks.PdfTextStyle;

import com.spire.pdf.graphics.PdfRGBColor;

import java.awt.*;

public class EditBookmark {

public static void main(String[] args) {

//创建PdfDocument实例

PdfDocument doc = new PdfDocument();

//加载PDF文档

doc.loadFromFile("C:\\Users\\Test1\\Desktop\\AddBookmarks.pdf");

//获取第一个书签

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

//修改书签的标题

bookmark.setTitle("新标题");

//修改书签的字体颜色

bookmark.setColor(new PdfRGBColor(new Color(255,0,0)));

//修改书签的字体样式

bookmark.setDisplayStyle(PdfTextStyle.Italic);

//修改第一个书签的子书签的字体颜色和字体样式

for (PdfBookmark childBookmark : (Iterable ) bookmark) {

childBookmark.setColor(new PdfRGBColor(new Color(0, 0, 255)));

childBookmark.setDisplayStyle(PdfTextStyle.Bold);

}

//保存文档

doc.saveToFile("output/EditBookmarks.pdf");

doc.close();

}

}

修改效果:

5c34cea5c418f58aa4fefb4616476f80.png

示例3 读取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 ReadBookmark {

public static void main(String[] args) {

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

PdfDocument pdf = new PdfDocument();

pdf.loadFromFile("C:\\Users\\Test1\\Desktop\\AddBookmarks.pdf");

//获取书签集合

PdfBookmarkCollection bookmarkCollection = pdf.getBookmarks();

//实例化StringBuilder类

StringBuilder stringbuilder = new StringBuilder();

//定义方法获取书签

GetBookmarkTitle(bookmarkCollection, stringbuilder);

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

FileWriter writer;

try {

writer = new FileWriter("output/ReadBookmark.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< bookmarkCollection.getCount(); i++ )

{

PdfBookmark parentBookmark = bookmarkCollection.get(i);

stringbuilder.append(parentBookmark.getTitle());

//递归文档多级书签

GetBookmarkTitle(parentBookmark, stringbuilder);

}

}

}

}

读取效果:

b9d6006b8f2922612af61752dbb7ce12.png

(本文完)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值