通过命令行将书签创建为PDF文件

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连接在一起.以前我pdfjoinpdfjam包中使用,但这太慢了.最后,这就是我获取PDF的方式,我现在用Adobe Acrobat Professional手工添加书签.

Kur*_*fle 7

这是另一个答案。这一个使用 Ghostscript 处理 PDF 到 PDF 和pdfmarkPostScript 运算符来插入书签。

有关 pdfmark 主题的一些介绍,另请参阅:

该方法包括两个步骤:

  1. 创建一个文本文件(实际上是 PostScript 文件),其中包含一组有限的pdfmark命令,每行一个和您要添加的书签。
  2. 运行 Ghostscript 命令,在处理文本文件的同时处理当前的 PDF 文件。

1.

文本文件上的内容应如下所示:

[/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

2.

现在运行这个命令:

gs -o bookmarked.pdf   \
   -sDEVICE=pdfwrite   \
    addmybookmarks.txt \
   -f original.pdf
Run Code Online (Sandbox Code Playgroud)

生成的 PDFbookmarked.pdf现在包含书签。看这个截图:

在 Ghostscript 和 <code>pdfmark</code> 的帮助下添加的书签的屏幕截图


Kur*_*fle 7

你也可以使用pdftk.它也可用于OS X.

我现在没有详细介绍所有细节,因为它已经在其他地方完成了很长时间.简单地说:

  1. 从原始文件创建示例PDF(无书签).
  2. 使用Adobe Acrobat(您似乎有权访问)添加一些书签.
  3. 运行以下命令之一:

    pdftk my.pdf dump_data output -
    pdftk my.pdf dump_data output bookmarks+otherdata.txt
    
    Run Code Online (Sandbox Code Playgroud)
  4. 研究输出的格式.

  5. 通过添加所需的所有条目来修改输出.txt文件.
  6. 再次运行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)

并在适当的地方更换以上..

  • 使用“dump_data_utf8”和“update_info_utf8”以便正确显示拉丁语以外的脚本中的字符(例如日语)。 (3认同)
  • 实际上,我真的很喜欢这个解决方案,语法非常清晰,并且非常容易编写脚本...谢谢 (2认同)
  • 我最喜欢这个解决方案,这是我能理解的最好和最简单的。因为我已经有了 pdftk。 (2认同)