一、序言

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

读取成果:

(本文完)