一、序言
在前文中,我曾介绍过如何使用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包。
<repositories> <repository> <id>com.e-iceblue</id> <url>http://repo.e-iceblue.cn/repository/maven-public/</url> </repository></repositories> <dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.pdf.free</artifactId> <version>2.6.3</version> </dependency></dependencies>
三、代码演示
示例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");
}
}
添加效果:
示例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();
}
}
修改效果:
示例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);
}
}
}
}
读取效果:
(本文完)
网友评论