Java:使用itext读取PDF书签名称

2023-12-02

我正在处理包含多个文档的单个 PDF。每个文档都有一个书签。我需要读取我正在构建的调节应用程序的书签名称。下面的代码对我不起作用。我试图将书签名称放入title细绳。有人可以提供任何指导吗?非常感谢。

PdfReader reader = new PdfReader("C:\\Work\\Input.pdf");
List<HashMap<String,Object>> bookmarks = SimpleBookmark.getBookmark(reader);

for(int i = 0; i < bookmarks.size(); i++){

    HashMap<String, Object> bm = bookmarks.get(i);
    String title = ((String)bm.get("Title"));

}

您没有考虑到书签存储在具有分支和叶子的树结构中(在 PDF 规范中,它称为大纲树).

正如 @Todoy 在评论部分所说,你的代码适用于顶层,但如果你想看到all标题,您需要使用递归方法来查看"Kids".

看一眼这段代码示例:

public void inspectPdf(String filename) throws IOException, DocumentException {
    PdfReader reader = new PdfReader(filename);
    List<HashMap<String,Object>> bookmarks = SimpleBookmark.getBookmark(reader);
    for (int i = 0; i < bookmarks.size(); i++){
        showTitle(bookmarks.get(i));
    }
    reader.close();
}

public void showTitle(HashMap<String, Object> bm) {
    System.out.println((String)bm.get("Title"));
    List<HashMap<String,Object>> kids = (List<HashMap<String,Object>>)bm.get("Kids");
    if (kids != null) {
        for (int i = 0; i < kids.size(); i++) {
            showTitle(kids.get(i));
        }
    }
}

The showTitle()方法是递归的。如果检查的书签条目有子项,它会调用自己。通过此代码片段,您可以遍历大纲树的所有分支和叶子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java:使用itext读取PDF书签名称 的相关文章

随机推荐

  • 在两个可能的分隔符之一之前查找一个单词

    word 12335 anotherword 2323434 totallydifferentword 455 word 32 我需要抓取之前的字符串 or 仅使用基本 R 函数 我可以使用以下方法来做到这一点stringr但不想向我的包添
  • 如何在.net core项目中设置soapclient的超时

    我必须在 Net Core 2 0 项目中使用 SOAP 服务 我添加了服务参考 如以下链接所述 缺少链接 404 对于某些方法 服务运行良好 但是 某些方法需要很长时间 由于操作服务正在执行 在这种情况下程序会抛出异常 System Ne
  • 如何从我自己的网站更新 Facebook 状态?

    我有自己的网站 正在创建博客 新闻条目 但我希望在添加它们时将它们直接上传到我的 Facebook 页面 有没有一种简单的方法可以做到这一点 我的代码是这样的 是否有代码或 API 我可以用来更新我的 Facebook 页面 您需要注册成为
  • 带有post请求和参数作为Json对象android的HttpUrlConnection

    您好 我正在开发小型 Android 应用程序 我想在其中使用 HttpUrlConnection post 请求 并将 params 作为 json 对象 但它对我不起作用我是通过以下方式做到的 try URL url DataOutpu
  • 服务器端包含在expressjs中

    是否可以使用express js 生成服务器端包含 我正在尝试在不同页面上重用页眉和页脚标记 以便我可以在一处进行页眉 页脚更改 尝试使用部分 您必须在一些模板引擎之间进行选择 默认模板引擎是jade 因此为此您必须执行以下操作 创建一个文
  • 在.net 4.5项目中使用.net 2.0 dll(vshost在调试时崩溃)

    我正在尝试使用通过 dotnetbuilder 从 matlab 创建的 dll 文件 http www mathworks se help dotnetbuilder ug create a net component from matl
  • 在 OpenCV 中匹配相似图像

    我有两组图像 H 和 L H 由 512x512 图像组成 L 包含 H 中的所有图像 但缩小到 32x32 128x128 并带有有损压缩产生的压缩伪影 使用 OpenCV 将 H 中的图像与 L 中最接近的图像进行匹配的最佳方法是什么
  • 扑克牌翻转动画

    您知道有哪些免费组件 库可以实现 3D 翻转效果吗 演示在这里 斯诺克电视 这是一个尝试使用SetWorldTransform type TForm1 class TForm PaintBox1 TPaintBox Button1 TBut
  • 使所有按钮大小相同

    请看下面的代码 import javax swing import java awt event import java awt public class GUI extends JFrame private JButton open pr
  • 为什么整个系统事件溯源是反模式?

    我目前正在设计一个新的企业系统 该系统的目的是跟踪 显示客户与公司的互动 即事件 并通知员工 使用事件源模式来保存所收集的所有客户交互 事件的分类帐似乎非常合适 因为我们所有其他域对象都源自事件流 然而 我看到一篇文章说基于事件源的整个系统
  • 不想在 jqGrid 页面加载后第一次显示排序图标

    我正在使用 jqGrid 并通过 JSON 加载数据 当我第一次获取数据时 我使用自定义方法对其进行排序并将该数据传递到网格 但它总是在第一列上显示排序图标 我不想显示该图标 因为自定义方法使用多个计算对数据进行排序 但是当排序图标出现在第
  • 如何使用 linq 对列表及其子项及其子项进行排序?

    我有一个亲子关系 类似于 public class MyType public IList
  • 未捕获的错误:元素类型无效:需要一个字符串(对于内置组件)

    I am getting this error I have defined all components in index js and I am using react dom 网络打包机本身正在编译 没有错误或警告 错误 未捕获错误
  • 使用@PropertySource配置Spring属性

    在下面的 Spring 配置类中 我通过 PropertySource 加载 app properties 文件 并使用属性文件中的配置构造 2 个不同的 DBCP 数据源 尽管一切正常 但我不喜欢使用注释为每个配置属性声明一个变量以构造数
  • 获取具有明确标准的最新文档

    情况 我无法找到执行特定 MongoDb 查询的好方法 首先 这是我想要执行的查询类型 假设有一个简单的数据库 通过电子刷卡记录进入和退出事件 以及可能的其他操作 并不重要 所以有一个集合叫做swipelog简单的文档如下所示 id Obj
  • 即使驱动器存在,也无法检索用户的 mysite URL

    当使用 PHP 库查询给定驱动器的图表时 我收到400 Unable to retrieve user s mysite URL or 429 Too many requests 例如 当我打电话时https graph microsoft
  • SQL WHERE 子句中的聚合函数

    大学考试时有一道题 是否可以使用聚合函数SQL WHERE条款 我一直认为这是不可能的 而且我也找不到任何例子如何做到这一点 但我的答案被标记为错误 现在我想知道在哪些情况下可以在WHERE 另外 如果不可能的话 最好能获得描述它的规范的链
  • PDO - 将字段名称作为变量传递

    我只是将代码从 mysql query 样式命令迁移到 PDO 样式 但遇到了问题 旧代码如下所示 query list menu SELECT GET section name from myl menu hide show WHERE
  • Vagrant ssh 'private_key_path` 文件必须存在

    我在 vagrant up 期间收到此错误 There are errors in the configuration of this machine Please fix the following errors and try agai
  • Java:使用itext读取PDF书签名称

    我正在处理包含多个文档的单个 PDF 每个文档都有一个书签 我需要读取我正在构建的调节应用程序的书签名称 下面的代码对我不起作用 我试图将书签名称放入title细绳 有人可以提供任何指导吗 非常感谢 PdfReader reader new