Java PDF书签——添加、编辑、删除、读取书签

朱雀 2020-10-30 16:14 955阅读 0赞

概述

本文介绍通过Java程序来操作PDF书签,根据对书签的不同操作要求,分以下情况来介绍:

  1. 添加书签(包括添加一级书签、多级子书签)

  2. 编辑书签(包括重置书签标题、书签样式等)

  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包:

  1. <repositories>
  2. <repository>
  3. <id>com.e-iceblue</id>
  4. <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
  5. </repository>
  6. </repositories>
  7. <dependencies>
  8. <dependency>
  9. <groupId>e-iceblue</groupId>
  10. <artifactId>spire.pdf.free</artifactId>
  11. <version>2.6.3</version>
  12. </dependency>
  13. </dependencies>

(Ecllipse**的导入方法,参考这篇文章

jar导入结果如下图所示:

20200724161415417.png

代码示例

1. 添加书签到PDF

  1. import com.spire.pdf.*;
  2. import com.spire.pdf.actions.PdfGoToAction;
  3. import com.spire.pdf.bookmarks.PdfBookmark;
  4. import com.spire.pdf.bookmarks.PdfTextStyle;
  5. import com.spire.pdf.general.PdfDestination;
  6. import com.spire.pdf.graphics.PdfRGBColor;
  7. import java.awt.*;
  8. import java.awt.geom.Point2D;
  9. public class AddBookmark {
  10. public static void main(String[] args) {
  11. //创建PdfDocument实例
  12. PdfDocument pdf = new PdfDocument();
  13. //加载PDF文档
  14. pdf.loadFromFile("test.pdf");
  15. //获取第一页
  16. PdfPageBase page = pdf.getPages().get(0);
  17. //添加书签
  18. PdfBookmark bookmark = pdf.getBookmarks().add("第一部分 调查研究概述");
  19. bookmark.setDisplayStyle(PdfTextStyle.Bold);//设置字体样式
  20. bookmark.setColor(new PdfRGBColor(new Color(139, 69, 19)));//设置字体颜色
  21. PdfDestination destination = new PdfDestination(page, new Point2D.Float(0, 0));//设置书签的目标页面和位置
  22. bookmark.setAction(new PdfGoToAction(destination));
  23. //添加二级子书签
  24. PdfBookmark childBookmark = bookmark.add("第一节 菌种特性研究");
  25. childBookmark.setColor(new PdfRGBColor(new Color(255, 127, 80)));//设置字体颜色
  26. childBookmark.setDisplayStyle(PdfTextStyle.Italic);//设置字体样式
  27. PdfDestination childDestination = new PdfDestination(page, new Point2D.Float(0, 100));//设置子书签的目标页面和位置
  28. childBookmark.setAction(new PdfGoToAction(childDestination));
  29. //添加三级子书签
  30. PdfBookmark childBookmark1 = childBookmark.add("1. 菌种特性概念");
  31. childBookmark1.setColor(new PdfRGBColor(new Color(125, 152, 100)));//设置字体颜色
  32. childBookmark1.setDisplayStyle(PdfTextStyle.Italic);//设置字体样式
  33. PdfDestination childDestination1 = new PdfDestination(page, new Point2D.Float(50, 100));//设置子书签的目标页面和位置
  34. childBookmark1.setAction(new PdfGoToAction(childDestination1));
  35. //保存文档
  36. pdf.saveToFile("AddBookmarks.pdf");
  37. pdf.dispose();
  38. }
  39. }

书签添加结果:

20200724161553556.png

2. 编辑PDF**中已有的书签**

  1. import com.spire.pdf.*;
  2. import com.spire.pdf.bookmarks.PdfBookmark;
  3. import com.spire.pdf.bookmarks.PdfTextStyle;
  4. import com.spire.pdf.graphics.PdfRGBColor;
  5. import java.awt.*;
  6. public class ModifyBookmark {
  7. public static void main(String[] args) {
  8. //创建PdfDocument实例
  9. PdfDocument pdf = new PdfDocument();
  10. //加载PDF文档
  11. pdf.loadFromFile("AddBookmarks.pdf");
  12. //获取第一个书签,修改书签标题、字体颜色、字体样式
  13. PdfBookmark bookmark = pdf.getBookmarks().get(0);
  14. bookmark.setTitle("新标题");
  15. bookmark.setColor(new PdfRGBColor(new Color(255,20,147)));
  16. bookmark.setDisplayStyle(PdfTextStyle.Bold);
  17. //修改子书签的字体、颜色和字体样式等
  18. for (int i = 0 ; i< pdf.getBookmarks().getCount(); i++ ) {
  19. //修改二级子书签
  20. PdfBookmark childBookmark = bookmark.get(0);
  21. childBookmark.setColor(new PdfRGBColor(new Color(148,0,211)));
  22. childBookmark.setDisplayStyle(PdfTextStyle.Italic);
  23. //修改三级子书签
  24. PdfBookmark childBookmark1 = childBookmark.get(0);
  25. childBookmark1.setColor(new PdfRGBColor(new Color(255,215,0)) );
  26. childBookmark1.setDisplayStyle(PdfTextStyle.Italic);
  27. }
  28. //保存文档
  29. pdf.saveToFile("ModifyBookmarks.pdf");
  30. pdf.close();
  31. }
  32. }

书签编辑结果:

20200724161700297.png

3. 删除PDF**中的书签**

  1. import com.spire.pdf.*;
  2. public class DeleteBookmark {
  3. public static void main(String[] args) {
  4. //创建PdfDocument实例,加载PDF文档
  5. PdfDocument pdf = new PdfDocument();
  6. pdf.loadFromFile("AddBookmarks.pdf");
  7. //删除第一个书签(包括删除其包含的子书签)
  8. pdf.getBookmarks().removeAt(0);
  9. /*//仅删除子书签
  10. PdfBookmark childBookmark = pdf.getBookmarks().get(0);
  11. childBookmark.removeAt(0);*/
  12. //保存文档
  13. pdf.saveToFile("RemoveBookmark.pdf");
  14. pdf.dispose();
  15. }
  16. }

4. 读取PDF**中的书签**

  1. import com.spire.pdf.*;
  2. import com.spire.pdf.bookmarks.PdfBookmark;
  3. import com.spire.pdf.bookmarks.PdfBookmarkCollection;
  4. import java.io.FileWriter;
  5. import java.io.IOException;
  6. public class GetBookmark {
  7. public static void main(String[] args) {
  8. //加载包含书签的PDF文档
  9. PdfDocument pdf = new PdfDocument();
  10. pdf.loadFromFile("AddBookmarks.pdf");
  11. //获取书签集合
  12. PdfBookmarkCollection bookmarkCollection = pdf.getBookmarks();
  13. //实例化StringBuilder类
  14. StringBuilder stringbuilder = new StringBuilder();
  15. //定义方法获取书签
  16. GetBookmarkTitle(bookmarkCollection, stringbuilder);
  17. //声明txt文件,并将获得的多级书签写入到文件.txt
  18. FileWriter writer;
  19. try {
  20. writer = new FileWriter("读取的书签.txt");
  21. writer.write(stringbuilder.toString());
  22. writer.flush();
  23. } catch (IOException e) {
  24. e.printStackTrace();
  25. }
  26. pdf.dispose();
  27. }
  28. //定义方法获取书签标题
  29. static void GetBookmarkTitle(PdfBookmarkCollection bookmarkCollection, StringBuilder stringbuilder)
  30. {
  31. if (bookmarkCollection.getCount()> 0)
  32. {
  33. for(int i = 0 ; i< bookmarkCollection.getCount(); i++ )
  34. {
  35. PdfBookmark parentBookmark = bookmarkCollection.get(i);
  36. stringbuilder.append(parentBookmark.getTitle());
  37. //递归文档多级书签
  38. GetBookmarkTitle(parentBookmark, stringbuilder);
  39. }
  40. }
  41. }
  42. }

书签读取结果:

20200724161808902.png

发表评论

表情:
评论列表 (有 0 条评论,955人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Eclipse 添加书签

    关于书签 Eclipse 中可以在编辑器的任意一行添加书签。 您可以使用书签作为提示信息,或者使用书签快速定位到文件中的指定的行。 添加书签 如果你想设置书签,你

    相关 C# 读取PDF书签内容

    PDF书签常见于一些PDF格式的教程或文献等资料中,通过它,读者可以快速的知道每个章节讲述的内容,以此增加文档的可读性和结构性。本文将介绍如何使用C\快速读取一个PDF文档中的