Redian新闻
>
使用 pdftk 为 PDF 文档创建书签 | Linux 中国

使用 pdftk 为 PDF 文档创建书签 | Linux 中国

科技
 
导读:充分利用现有的技术,提供书签以帮助用户。                                       
本文字数:2988,阅读时长大约:3分钟

充分利用现有的技术,提供书签以帮助用户。

在 介绍 pdftk-java🔗 opensource.com 中, 我展示了如何在脚本中使用 pdftk-java 来快速修改 PDF 文件。

但是,pdftk-java 最有用的场景是处理那种动辄几百页的没有目录的大 PDF 文件。这里所谓的目录不是指文档前面供打印的目录,而是指显示在 PDF 阅读器侧边栏里的目录,它在 PDF 格式中的正式叫法是“书签(bookmarks)”。

Screenshot of a sidebar table of contents next to a PDF

如果没有书签,就只能通过上下滚动或全局搜索文本来定位想要的章节,这非常麻烦。

PDF 文件的另一个恼人的小问题是缺乏元数据,比如标题和作者。如果你打开过一个标题栏上显示类似 “Microsoft Word - 04_Classics_Revisited.docx” 的 PDF 文件,你就能体会那种感觉了。

pdftk-java 让我能够创建自己的书签,我再也不面对这些问题了。

在 Linux 上安装 pdftk-java

正如 pdftk-java 的名称所示的,它是用 Java 编写的。它能够在所有主流操作系统上运行,只要你安装了 Java。

Linux 和 macOS 用户可以从 AdoptOpenJDK.net🔗 adoptopenjdk.net 安装 Java(LCTT 译注:原文为 Linux,应为笔误)。

Windows 用户可以安装 Red Hat's Windows build of OpenJDK🔗 developers.redhat.com

在 Linux 上安装 pdftk-java:

1. 从 Gitlab 仓库下载 pdftk-all.jar release🔗 gitlab.com,保存至 ~/.local/bin/ 或 其它路径🔗 opensource.com 下.
2. 用文本编辑器打开 ~/.bashrc,添加 alias pdftk='java -jar $HOME/.local/bin/pdftk-all.jar'
3. 运行 source ~/.bashrc 使新的 Bash 设置生效。

数据转储

修改元数据的第一步是抽取 PDF 当前的数据文件。

现在的数据文件可能并没包含多少内容,但这也是一个不错的开端。

  1. $ pdftk mybigfile.pdf \
  2. data_dump \
  3. output bookmarks.txt

生成的 bookmarks.txt 文件中包含了输入 PDF 文件 mybigfile.pdf 的所有元数据和一大堆无用数据。

编辑元数据

用文本编辑器(比如 Atom🔗 opensource.com 或 Gedit🔗 opensource.com)打开 bookmarks.txt 以编辑 PDF 元数据。

元数据的格式和数据项直观易懂:

  1. InfoBegin
  2. InfoKey: Creator
  3. InfoValue: Word
  4. InfoBegin
  5. InfoKey: ModDate
  6. InfoValue: D:20151221203353Z00'00'
  7. InfoBegin
  8. InfoKey: CreationDate
  9. InfoValue: D:20151221203353Z00'00'
  10. InfoBegin
  11. InfoKey: Producer
  12. InfoValue: Mac OS X 10.10.4 Quartz PDFContext
  13. InfoBegin
  14. InfoKey: Title
  15. InfoValue: Microsoft Word - 04_UA_Classics_Revisited.docx
  16. PdfID0: f049e63eaf3b4061ddad16b455ca780f
  17. PdfID1: f049e63eaf3b4061ddad16b455ca780f
  18. NumberOfPages: 42
  19. PageMediaBegin
  20. PageMediaNumber: 1
  21. PageMediaRotation: 0
  22. PageMediaRect: 0 0 612 792
  23. PageMediaDimensions: 612 792
  24. [...]

你可以将 InfoValue 的值修改为对当前 PDF 有意义的内容。比如可以将 Creator 字段从 Word 修改为实际的作者或出版社名称。比起使用导出程序自动生成的标题,使用书籍的实际标题会更好。

你也可以做一些清理工作。在 NumberOfPages 之后的行都不是必需的,可以删除这些行的内容。

添加书签

PDF 书签的格式如下:

  1. BookmarkBegin
  2. BookmarkTitle: My first bookmark
  3. BookmarkLevel: 1
  4. BookmarkPageNumber: 2
◈ BookmarkBegin 表示这是一个书签。
◈ BookmarkTitle 书签在 PDF 阅读器中显示的文本。
◈ BookmarkLevel 书签层级。如果书签层级为 2,它将出现在上一个书签的小三角下。如果设置为 3,它会显示在上一个 2 级书签的小三角下。这让你能为章以及其中的节设置书签。
◈ BookmarkPageNumber 点击书签时转到的页码。

为你需要的章节创建书签,然后保存文件。

更新书签信息

现在已经准备好了元数据和书签,你可以将它们导入到 PDF 文件中。实际上是将这些信息导入到一个新的 PDF 文件中,它的内容与原 PDF 文件相同:

  1. $ pdftk mybigfile.pdf \
  2. update_info bookmarks.txt \
  3. output mynewfile.pdf

生成的 mynewfile.pdf 包含了你设置的全部元数据和书签。

体现专业性

PDF 文件中是否包含定制化的元数据和书签可能并不会影响销售。

但是,关注元数据可以向用户表明你重视质量保证。增加书签可以为用户提供便利,同时亦是充分利用现有技术。

使用 pdftk-java 来简化这个过程,用户会感激不尽。

(题图:MJ/f8869a66-562d-4ee4-9f2d-1949944d6a9c)


via: https://opensource.com/article/22/1/pdf-metadata-pdftk

作者:Seth Kenlon 选题:lujun9972 译者:toknow-gh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LCTT 译者 :Xiangbin Ma
🌟🌟
翻译: 8.0 篇
|
贡献: 3292 天
2014-07-01
2023-07-06
https://linux.cn/lctt/toknow-gh
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
适用于 Linux 的 5 个最佳 PDF 编辑器 | Linux 中国为什么黑客更喜欢使用 Kali Linux? | Linux 中国15 个最佳 GTK 主题 | Linux 中国使用 Linux 让旧电脑焕发新颜 | Linux 中国测评适用于 Linux 中 Wayland 的最佳屏幕录制软件 | Linux 中国Zathura: 使用键盘操作的极简文档查看器 | Linux 中国为你的开源项目举办一场文档马拉松 | Linux 中国晨跑,小蝌蚪。爱美丽做的的video在 Linux 中使用 cd 命令 | Linux 中国570个常用的Linux命令,1349页Linux命令速查手册(附PDF)教师节国风书签礼盒,金属镂空书签,美的像艺术品,送老师超有心意[资源] 无痛学英语!朗文图解日常生活英语(PDF文档+音频+视频动画)花园记事2023-芍药花开Bash 基础知识系列 #1:创建并运行你的第一个 Bash Shell 脚本 | Linux 中国费城费尔蒙特公园(Fairmount Park 2013), 樱花节日在 Linux 中使用 cat 命令 | Linux 中国花园记事2023--玫瑰玫瑰 (1)8 款最佳的 Linux 远程桌面工具 | Linux 中国在 Linux 上用 Kdenlive 编辑视频 | Linux 中国Alpine Linux 3.18 发布 | Linux 中国终端基础:在 Linux 中删除文件和文件夹 | Linux 中国Voyager Linux 23.04:具有华丽外观且无 Snap 的 Ubuntu 体验 | Linux 中国你好,我是筚(bì)篥( lì)!创建你的第一个使用 OpenAI ChatGPT API 的程序 | Linux 中国7 个超轻量级 Linux 发行版 | Linux 中国risiOS:一个易于使用的基于 Fedora 的 Linux 发行版 | Linux 中国如何在 Rocky Linux 9 / AlmaLinux 9 上安装 KVM | Linux 中国胡夫金字塔之谜解开了没有?11 个不可变 Linux 发行版,适合那些想要拥抱未来的人们 | Linux 中国如何在 Linux 中注释 PDF | Linux 中国在 Linux 中使用 cp 命令 | Linux 中国如何入门 Linux Shell 脚本编写 | Linux 中国[资源] 无痛学英语!图解日常生活英语(PDF文档+音频+动画)如何安装和使用 GNOME Boxes 来创建虚拟机 | Linux 中国你的旧电脑是 “过时” 了,还是使用 Linux 的机会? | Linux 中国
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。