美文网首页Java
Java 添加、修改、读取PDF书签

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

作者: Tina_Tang | 来源:发表于2020-07-28 09:30 被阅读0次

    一、序言

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

    }

    }

    }

    }

    读取效果:

    (本文完)

    相关文章

      网友评论

        本文标题:Java 添加、修改、读取PDF书签

        本文链接:https://www.haomeiwen.com/subject/edixrktx.html