PDFBox - 如何创建目录

2024-03-17

有没有办法使用创建目录Java PDFBox图书馆?

目录应该是可点击的(跳转到右侧页面)

Thanks.


没有简单的方法可以做到这一点,但这里有一个方法。我还没有弄清楚如何将链接直接附加到文本,所以我的方法意味着您必须将注释分别绘制为矩形和文本。它的边缘有点粗糙,但它确实有效。

// there are other types of destinations, choose what is appropriate
PDPageXYZDestination dest = new PDPageXYZDestination();
// the indexing is odd here.  if you are doing this on the first page of the pdf
// that page is -1, the next is 0, the next is 1 and so on.  odd.
dest.setPageNumber(3);
dest.setLeft(0);
dest.setTop(0); // link to top of page, this is the XYZ part

PDActionGoTo action = new PDActionGoTo();
action.setDestination(dest);

PDAnnotationLink link = new PDAnnotationLink();
link.setAction(action);
link.setDestination(dest);

PDRectangle rect = new PDRectangle();
// just making these x,y coords up for sample
rect.setLowerLeftX(72);
rect.setLowerLeftY(600);
rect.setUpperRightX(144);
rect.setUpperRightY(620);

PDPage page = // however you are getting your table of contents page, eg new PDPage() or doc.getDocumentCatalog().getAllPages().get(0)

page.getAnnotations().add(link);

PDPageContentStream stream = new PDPageContentStream(doc, page, true, true);
stream.beginText();
stream.setTextTranslation(85, 600); // made these up, have to test to see if padding is correct
stream.drawString("Page 1");
stream.endText();
stream.close();

唷!这是一个很多代码。这应该能让你上路。如果您希望矩形看起来像他们只是单击链接,则可以将矩形设置为与文档背景相同的颜色,但这需要更多实验。

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

PDFBox - 如何创建目录 的相关文章

随机推荐

  • 为什么盒子阴影和元素之间有间隙?

    当将鼠标悬停在 Chrome 76 0 3809 100 64 位 中的按钮上时 框阴影和 img 之间会出现微弱的间隙 为什么会发生这种情况以及如何修复它 这是一张图片 以防您在代码片段中看不到它 body background colo
  • Java 中的空布局有什么问题? [复制]

    这个问题在这里已经有答案了 Bonjour 在花了无数时间在这个网站上寻找在屏幕上拖动组件的代码后 我注意到答案中出现了一个奇怪的趋势 每个人都对空布局的声音感到不寒而栗 所以我问 大家都有什么问题吗 我编写代码的时间不超过三个月 使用 S
  • 如何使用PHP处理多个文件上传

    我想使用 PHP 上传文件 但问题是我不知道要上传多少个文件 我的问题是如果我使用的话如何上传文件file
  • 如何在单个动画中缩放和旋转视图

    我试图通过使其从屏幕中心出现同时增长到其完整尺寸来呈现视图 同时以 3D 方式围绕 x 轴旋转它 当我创建视图时 我对其应用变换以确保它收缩并旋转以开始 它太小 实际上不可见 然后我尝试使用 CATransform3D 如下所示 CABas
  • 我如何知道golang中结构体的长度?

    我是 Golang 新手 我正在尝试从结构中获取许多属性 例如 type Client struct name string 1 lastName string 2 age uint 3 func main client Client na
  • 我希望“(int)null”返回0

    我怎样才能得到 0 作为整数值 int null EDIT 1 我想创建一个函数 它将返回各自数据类型中空表示的默认值 EDIT 2 我怎样才能从事这个工作scenario用于使用default 整数 值 Where 值可以为空或任何整数价
  • Angular ng-show / ng-hide 无法与 ng-bind-html 一起正常工作

    我想为 html 字符串中的元素设置 ng show 或 ng hide 并将其传递给 ng bind html 查看 但 ng show ng hide 不起作用 我的元素始终可见 这是我的控制器代码 scope my messageTr
  • jsch ChannelExec 和 ChannelShell 之间的确切区别是什么?

    有人可以告诉我之间的区别吗ChannelExec ChannelShell shell 和 exec 通道 http sourceforge net apps mediawiki jsch index php title Shell Exe
  • 使用 Sleep() 时 Perl 打印功能无法正常工作

    我有以下代码来打印 每秒模拟一个进度条 num 15 while num sleep 1 print 我现在遇到的问题是 每次循环后不打印字符 相反 所有 15 个 循环退出后立即打印 但是 如果我打印 n 它就可以正常工作 但 每次都会打
  • 阻止用户使用 jquery 或 javascript 重新加载页面 [重复]

    这个问题在这里已经有答案了 可能的重复 使用 jQuery Javascript 防止任何形式的页面刷新 https stackoverflow com questions 3527041 prevent any form of page
  • 如何摆脱“打印中的宽字符”?

    我有文件 tmp xxx与下一个内容 00000000 D0 BA D0 B8 D1 80 D0 B8 D0 BB D0 B8 D0 BA 当我读取文件内容并打印它时 出现错误 Wide character in print at 来源是
  • scikit-learn 中预计算内核的网格搜索中的嵌套交叉验证

    我有一个大小为 NxN 的预先计算的内核 我使用 GridSearchCV 来调整 SVM 的 C 参数 其中 kernel precompulated 如下 C range 10 np arange 2 9 param grid dict
  • PCL 上的 TPL,适用于 PCL 配置文件 78 的 MvvmCross

    尝试使用PCL for mvvmcross通过 Profile 78 与 TPL 合作 关于问题mvvmcross 的 PCL 上的 TPL https stackoverflow com questions 16914738 tpl on
  • Spring Boot + JPA2 + Hibernate - 启用二级缓存

    我使用 Spring Boot 1 2 5 和 JPA2 来注释实体 并将 hibernate 作为底层 JPA 实现 我想在该设置中使用二级缓存 因此实 体被注释为 javax persistence Cacheable 我还在 appl
  • Mac OS Xocks代理环境变量

    我知道可以通过网络应用程序设置袜子代理服务器 并且有一个 Mac 特定实用程序可以设置它 但如果可能的话 我更喜欢将袜子代理服务器设置为环境变量 有谁知道合适的export环境 如果有人想知道这对于 http 代理来说是可能的 例如 exp
  • NodeJS 和 C# 中的 AES256 加密/解密

    我对以下问题的结果采取了一些自由态度 NET 中的 AES 加密并使用 Node js 加密解密 https stackoverflow com questions 17306552 aes encrypt in net and decry
  • 图中轴标签隐藏了轴标签吗?

    我正在尝试制作极坐标 sypder 图 但轴标签存在一些问题 x 轴刻度标签似乎总是位于 y 轴网格下方的一层上 字母被网格线覆盖 如下图所示 我希望它们位于顶部 我尝试设置 zorder 但没有成功 如果我将绘制的线的 zorder 设置
  • 从后台进程重定向 stdout 和 stderr

    我有一个名为 foo 的脚本 它运行程序 a exe 并将计时统计信息发送到文件 time log bin bash date 1 gt gt time log time a exe 2 gt gt time log 如果我在终端后台运行脚
  • 将现有 SVN 项目导入 Eclipse

    我在 C 盘上有一个文件夹 该文件夹已从 SVN 中签出 在该文件夹的某个位置 我有一个 Eclipse 项目文件夹 它已经在 SVN 存储库中 我启动了 Eclipse 导入了该项目 但我不知道如何将它连接到 SVN 当我正在做一个CVS
  • PDFBox - 如何创建目录

    有没有办法使用创建目录Java PDFBox图书馆 目录应该是可点击的 跳转到右侧页面 Thanks 没有简单的方法可以做到这一点 但这里有一个方法 我还没有弄清楚如何将链接直接附加到文本 所以我的方法意味着您必须将注释分别绘制为矩形和文本