我听说 pdf 文件的书签以纯文本形式存储在文件中的某个位置。我想知道是否可以将 pdf 文件的书签导入和导出到文本文件,以进行批处理?
如果是,那么有没有关于编辑包含 pdf 文件书签的文本文件的语法的描述?
我希望有适用于 Ubuntu 10.10 和 Windows 7 的免费软件解决方案。
答案1
有多种工具可以将书签从 PDF 提取到纯文本文件,反之亦然。其中一些如下:
- pdftk
- iText 工具箱(仅限旧版本,获取itext-2.0.1.jar)
- pdf写书签我使用的工具
- JPdf书签它甚至有一个 GUI。
另外,我有一个脚本,可以在这些工具的多种格式之间进行转换: 转换工具。
另一个很好的方法是通过 pdflatex 为 pdf 添加书签。
答案2
你可以使用pdftk
它。更多信息:如何导出和导入 PDF 书签。
在命令行上导出 PDF 书签,如下所示:
pdftk C:\Users\Sid\Desktop\doc.pdf dump_data output C:\Users\Sid\Desktop\doc_data.txt
从数据文件导入 PDF 书签,如下所示:
pdftk C:\Users\Sid\Desktop\doc.pdf update_info C:\Users\Sid\Desktop\doc_data.txt output C:\Users\Sid\Desktop\updated.pdf
pdftk
书签格式写起来有点繁琐。相反,我使用、 和bash
编写sed
了自己的脚本。请查看此 repo:pdftk
python3
https://github.com/SiddharthPant/booky
所以现在我可以创建一个这样的文本文件(bkmrks.txt
),即使是 1000 页的 pdf 也只需 5 分钟即可写入。
{
Title1, 1
Title2, 2
{
Subtitle1, 3
Subtitle2, 4
{
SubSubtitle1, 5
...
}
}
}
然后使用我的脚本
./booky.sh pdf_file.pdf bkmrks.txt
pdf_file_new.pdf
这会自动创建一个包含我的书签的pdf( )。
如果您使用的是 Windows 计算机,这将在 *nix 系统中工作。然后首先安装python3
并pdftk
使用booky.py
repo 中的文件转换bkmrks.txt
为pdftk
兼容格式
python3 booky.py < bkmrks.txt > output.txt
然后使用导出命令生成转储数据文件。从该文件中删除以前的书签,然后output.txt
使用简单的复制粘贴插入内容。然后将该数据导入回来。
答案3
如果您拥有包含书签的文档版本并想将其复制过来,一种更简单的方法是使用 PDF-XChange Viewer(我使用的是 v2.5.211)。打开包含书签的 PDF(源 PDF),选择书签窗格中的所有书签,使用 Ctrl+C 复制它们,打开没有书签的 PDF(目标 PDF),然后将它们粘贴(Ctrl+V)到该 PDF 的书签窗格中。PDF-Xchange Viewer 会保留源 PDF 中的书签属性(包括书签文本上的任何粗体/斜体格式)。如果由于文档的修订导致目标 PDF 的某些部分较低或较高,您可以单击需要更正的书签,滚动到您希望书签打开的页面,再次右键单击书签并单击“设置目标”。根据需要对任何有问题的书签重复此最后一部分。完成后保存目标 PDF。
这对我来说非常有效,非常直观,几分钟就完成了。在我的特定场景中,一位同事使用 Word for Mac 制作了一个非常长的文档,但没有书签。由于文档很长,我希望书签与文档的大纲相对应。我可以让 Word for Windows 将文档保存为带有书签的 PDF,但 Word for Windows 和 Word for Mac 之间的一些格式差异导致页数相当不准确(特别是,页脚周围的空白存在差异,以及图形和标题之间的间距存在差异)。我能够调整页眉和页脚以及图形大小以在 Word for Windows 中获得正确的分页,然后将其保存为带有书签的 PDF。不幸的是,格式仍然存在一些差异,因此我希望只将书签应用于原始 PDF,就在那时,我想出了上述解决方案。
答案4
PDF 文件的规范可从 Adobe 免费下载,至少我上次查看时是这样的。但是,大多数 PDF 文件中的大多数可压缩数据都是压缩的。可能曾经有一个基本为纯文本的 PDF 版本,如果是这样,它现在仍然有效,但实际获取该格式的文件可能是一个问题。
虽然我还没有这样做,但一个非常可能的做法(如果你愿意付钱的话)是购买 Acrobat Pro,并使用该应用程序内置的 Javascript 脚本功能。为了帮助您入门...
http://acrobatusers.com/tutorials/2008/10/auto_bookmark_creation
本教程将介绍如何在 Acrobat 7.0 Pro(Creative Suite CS2 中包含的版本)中使用 Javascript 自动创建书签。虽然这个版本有点老了,但同样的技术应该适用于较新的版本。
Adobe 应用程序确实包含一个使用 Javascript 读取/写入文本文件的库(Javascript 标准中没有这个功能),因此您可以编写自己的导入/导出脚本,尽管让这些脚本变得健壮并不容易。