这是一个去年写的自用小工具。有些 PDF 文件没有目录,所以想自己加上,还有的分章节的小文件想合并为一个文件,就有了这个软件。
这几天又看了下几个 PDF, 发现在 Firefox 里目录不能正常跳转,于是修复了一下软件。
为什么用 Firefox 看 PDF 呢,之前用 Windows 的话,都是用 Sumatra PDF 的,Mac 上用则一般用预览。但是有时晚上看的话,白花花的背景太刺眼了,正好浏览器也可以打开 PDF, 于是想着在浏览器里打开,可以用反色把白色背景变成黑色~ 就是使用 filter: invert(.8)
这条 CSS 规则进行反色
我先在 Edge 里试了下效果,还可以:
但是发现不显示目录……
又换 Chrome:
发现这个可以显示目录,不过隐藏在二级菜单里。
最后试了试 Firefox:
这个更方便,可以作为侧栏一直显示呢。
但是,之前做的目录在 Chrome, Sumatra PDF, 预览里都可以正常跳转,唯独在 Firefox 里不能,于是我找了个原本带目录的 PDF 在 Firefox 打开,发现人家的跳转链接是这样的:#[{"num":3,"gen":0},{"name":"XYZ"},69,784,0]
,而我的文件目录的链接却没有后面的三个数字。
看了下 itextpdf 文档 SimpleBookmark
这个类:
- “Action” = “GoTo” – “Page” | “Named”
- “Page” = “3 XYZ 70 400 null” – page number followed by a destination (/XYZ is also accepted)
- “Named” = “named_destination”
- “Action” = “GoToR” – “Page” | “Named” | “NamedN”, “File”, [“NewWindow”]
- “Page” = “3 XYZ 70 400 null” – page number followed by a destination (/XYZ is also accepted)
- “Named” = “named_destination_as_a_string”
- “NamedN” = “named_destination_as_a_name”
- “File” – “the_file_to_open”
- “NewWindow” – “true” or “false”
- “Action” = “URI” – “URI”
- “URI” = “http://sf.net” – URI to jump to
- “Action” = “Launch” – “File”
- “File” – “the_file_to_open_or_execute”
原来那三个数字是 X, Y, Z
,表示跳到目标页面的 (X,Y)
处,Z 好像是缩放的参数,一般不填。注意这里坐标的原点是页面左下角,所以要跳转到某个页面,XYZ 应该写成 0, height, 0
, height 表示页面高度。应该需要加上 XYZ 吧,改了一版再用 Firefox 打开,果然就好了。
我发现 Firefox 打开 PDF 不像 Chrome 那样是在一个 embed
标签里,而是使用内嵌到 pdf.js 将整个文档每个页面都渲染为 HTML 页面,所以在 Firefox 里反色时,需要找到页面到父节点进行反色,因为它的工具栏、侧栏本来就是黑色的,不需要反色。
本软件源代码在 GitHub: YouthLin/pdf-utils 可执行 jar 包也可以在 Release 页面下载,运行需要 Java 8 环境(因为高版本的 Java 不带 JavaFx 了)
声明
- 本作品采用署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。除非特别注明, 霖博客文章均为原创。
- 转载请保留本文(《[JavaFx] PDF 工具:目录、合并、密码》)链接地址: https://youthlin.com/?p=1702
- 订阅本站:https://youthlin.com/feed/