Java

Java 添加、修改、读取PDF书签

2020-07-28  本文已影响0人  Tina_Tang

一、序言

在前文中,我曾介绍过如何使用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);

}

}

}

}

读取效果:

(本文完)

上一篇下一篇

猜你喜欢

热点阅读