本文介绍通过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-/repository/maven-public/
e-iceblue
spire.pdf.free
2.6.3
(Ecllipse
的导入方法,参考这篇
)
jar导入结果如下图所示:
1.
添加书签到PDF
importcom.spire.pdf.*;
importcom.spire.pdf.actions.PdfGoToAction;
importcom.spire.pdf.bookmarks.PdfBookmark;
importcom.spire.pdf.bookmarks.PdfTextStyle;
importcom.spire.pdf.general.PdfDestination;
importcom.spire.pdf.graphics.PdfRGBColor;
importjava.awt.*;
importjava.awt.geom.Point2D;
publicclassAddBookmark{
publicstaticvoidmain(String[]args){
//创建PdfDocument实例
PdfDocumentpdf=newPdfDocument();
//加载PDF文档
pdf.loadFromFile("test.pdf");
//获取第一页
PdfPageBasepage=pdf.getPages().get(0);
//添加书签
PdfBookmarkbookmark=pdf.getBookmarks().add("第一部分调查研究概述");
bookmark.setDisplayStyle(PdfTextStyle.Bold);//设置字体样式
bookmark.setColor(newPdfRGBColor(newColor(139,69,19)));//设置字体颜色
PdfDestinationdestination=newPdfDestination(page,newPoint2D.Float(0,0));//设置书签的目标页面和位置
bookmark.setAction(newPdfGoToAction(destination));
//添加二级子书签
PdfBookmarkchildBookmark=bookmark.add("第一节菌种特性研究");
childBookmark.setColor(newPdfRGBColor(newColor(255,127,80)));//设置字体颜色
childBookmark.setDisplayStyle(PdfTextStyle.Italic);//设置字体样式
PdfDestinationchildDestination=newPdfDestination(page,newPoint2D.Float(0,100));//设置子书签的目标页面和位置
childBookmark.setAction(newPdfGoToAction(childDestination));
//添加三级子书签
PdfBookmarkchildBookmark1=childBookmark.add("1.菌种特性概念");
childBookmark1.setColor(newPdfRGBColor(newColor(125,152,100)));//设置字体颜色
childBookmark1.setDisplayStyle(PdfTextStyle.Italic);//设置字体样式
PdfDestinationchildDestination1=newPdfDestination(page,newPoint2D.Float(50,100));//设置子书签的目标页面和位置
childBookmark1.setAction(newPdfGoToAction(childDestination1));
//保存文档
pdf.saveToFile("AddBookmarks.pdf");
pdf.dispose();
}
}
书签添加效果:
2.
编辑PDF
中已有的书签
importcom.spire.pdf.*;
importcom.spire.pdf.bookmarks.PdfBookmark;
importcom.spire.pdf.bookmarks.PdfTextStyle;
importcom.spire.pdf.graphics.PdfRGBColor;
importjava.awt.*;
publicclassModifyBookmark{
publicstaticvoidmain(String[]args){
//创建PdfDocument实例
PdfDocumentpdf=newPdfDocument();
//加载PDF文档
pdf.loadFromFile("AddBookmarks.pdf");
//获取第一个书签,修改书签标题、字体颜色、字体样式
PdfBookmarkbookmark=pdf.getBookmarks().get(0);
bookmark.setTitle("新标题");
bookmark.setColor(newPdfRGBColor(newColor(255,20,147)));
bookmark.setDisplayStyle(PdfTextStyle.Bold);
//修改子书签的字体、颜色和字体样式等
for(inti=0;i
//修改二级子书签
PdfBookmarkchildBookmark=bookmark.get(0);
childBookmark.setColor(newPdfRGBColor(newColor(148,0,211)));
childBookmark.setDisplayStyle(PdfTextStyle.Italic);
//修改三级子书签
PdfBookmarkchildBookmark1=childBookmark.get(0);
childBookmark1.setColor(newPdfRGBColor(newColor(255,215,0)));
childBookmark1.setDisplayStyle(PdfTextStyle.Italic);
}
//保存文档
pdf.saveToFile("ModifyBookmarks.pdf");
pdf.close();
}
}
书签编辑结果:
3.
删除PDF
中的书签
importcom.spire.pdf.*;
publicclassDeleteBookmark{
publicstaticvoidmain(String[]args){
//创建PdfDocument实例,加载PDF文档
PdfDocumentpdf=newPdfDocument();
pdf.loadFromFile("AddBookmarks.pdf");
//删除第一个书签(包括删除其包含的子书签)
pdf.getBookmarks().removeAt(0);
/*//仅删除子书签
PdfBookmarkchildBookmark=pdf.getBookmarks().get(0);
childBookmark.removeAt(0);*/
//保存文档
pdf.saveToFile("RemoveBookmark.pdf");
pdf.dispose();
}
}
4.
读取PDF
中的书签
importcom.spire.pdf.*;
importcom.spire.pdf.bookmarks.PdfBookmark;
importcom.spire.pdf.bookmarks.PdfBookmarkCollection;
importjava.io.FileWriter;
importjava.io.IOException;
publicclassGetBookmark{
publicstaticvoidmain(String[]args){
//加载包含书签的PDF文档
PdfDocumentpdf=newPdfDocument();
pdf.loadFromFile("AddBookmarks.pdf");
//获取书签集合
PdfBookmarkCollectionbookmarkCollection=pdf.getBookmarks();
//实例化StringBuilder类
StringBuilderstringbuilder=newStringBuilder();
//定义方法获取书签
GetBookmarkTitle(bookmarkCollection,stringbuilder);
//声明txt文件,并将获得的多级书签写入到文件.txt
FileWriterwriter;
try{
writer=newFileWriter("读取的书签.txt");
writer.write(stringbuilder.toString());
writer.flush();
}catch(IOExceptione){
e.printStackTrace();
}
pdf.dispose();
}
//定义方法获取书签标题
staticvoidGetBookmarkTitle(PdfBookmarkCollectionbookmarkCollection,StringBuilderstringbuilder)
{
if(bookmarkCollection.getCount()>0)
{
for(inti=0;i
{
PdfBookmarkparentBookmark=bookmarkCollection.get(i);
stringbuilder.append(parentBookmark.getTitle());
//递归文档多级书签
GetBookmarkTitle(parentBookmark,stringbuilder);
}
}
}
}
书签读取结果:
(完)
如果觉得《java pdf 书签_Java PDF书签——添加 编辑 删除 读取书签》对你有帮助,请点赞、收藏,并留下你的观点哦!