drm*_*iod 7 pdf macos pdf-generation r
我正在搜索命令行工具以将书签添加到PDF文件.
我拥有的是a page number
和a label
.很想创建一个名为label
链接到页面的书签page number
.
有没有人知道这样做的命令行工具(最好是OSX)?
我有大约4000页的PDF文件和大约150个书签,并希望自动化它.
我的计划是在r脚本中使用系统调用.
编辑
我用图表创建了大约4000个单个PDF文件,我使用OSX系统命令/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py
将PDF连接在一起.以前我pdfjoin
从pdfjam
包中使用,但这太慢了.最后,这就是我获取PDF的方式,我现在用Adobe Acrobat Professional手工添加书签.
这是另一个答案。这一个使用 Ghostscript 处理 PDF 到 PDF 和pdfmark
PostScript 运算符来插入书签。
有关 pdfmark 主题的一些介绍,另请参阅:
该方法包括两个步骤:
pdfmark
命令,每行一个和您要添加的书签。文本文件上的内容应如下所示:
[/Page 1 /View [/XYZ null null null] /Title (This is page 1) /OUT pdfmark
[/Page 2 /View [/XYZ null null null] /Title (Dunno which page this is....) /OUT pdfmark
[/Page 3 /View [/XYZ null null null] /Title (Some other name) /OUT pdfmark
[/Page 4 /View [/XYZ null null null] /Title (File 4) /OUT pdfmark
[/Page 5 /View [/XYZ null null null] /Title (File 5) /OUT pdfmark
[/Page 6 /View [/XYZ null null null] /Title (File 6) /OUT pdfmark
[/Page 7 /View [/XYZ null null null] /Title (File 7) /OUT pdfmark
% more lines for more pages to bookmark...
[/Page 13 /View [/XYZ null null null] /Title (File 13) /OUT pdfmark
[/Page 14 /View [/XYZ null null null] /Title (Bookmark for page 14) /OUT pdfmark
% more lines for more pages to bookmark...
Run Code Online (Sandbox Code Playgroud)
将此文件命名为例如: addmybookmarks.txt
现在运行这个命令:
gs -o bookmarked.pdf \
-sDEVICE=pdfwrite \
addmybookmarks.txt \
-f original.pdf
Run Code Online (Sandbox Code Playgroud)
生成的 PDFbookmarked.pdf
现在包含书签。看这个截图:
你也可以使用pdftk
.它也可用于OS X.
我现在没有详细介绍所有细节,因为它已经在其他地方完成了很长时间.简单地说:
运行以下命令之一:
pdftk my.pdf dump_data output -
pdftk my.pdf dump_data output bookmarks+otherdata.txt
Run Code Online (Sandbox Code Playgroud)研究输出的格式.
再次运行PDFTK:
pdftk my.pdf update_info bookmarks.txt output bookmarked.pdf
Run Code Online (Sandbox Code Playgroud)附加信息
这是我在上面的步骤4中检查后注意到的书签格式.
BookmarkBegin
BookmarkTitle: -- Your Title 1 --
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
BookmarkTitle: -- Your Title 2 --
BookmarkLevel: 1
BookmarkPageNumber: 2
BookmarkBegin
BookmarkTitle: -- Your Title 3 --
...
...
and so on...
Run Code Online (Sandbox Code Playgroud)
并在适当的地方更换以上..