使用pdftk合并多个pdf效果良好。然而,有没有简单的方法为每个合并的pdf创建书签
我在pdftk文档中没有看到任何与此相关的内容,因此我认为pdftk不可能做到这一点
我们合并的所有文件都将是一页,所以想知道是否还有其他实用程序可以在以后添加书签
或者另一个基于linux的pdf实用程序,它允许在为每个pdf指定书签时进行合并
还可以使用Ghostscript合并多个PDF。此路线的最大优点是解决方案易于编写脚本,并且不需要真正的编程工作:
gswin32c.exe^
-dBATCH-dNOPAUSE^
-sDEVICE=pdfwrite^
-sOutputFile=merged.pdf^
[…根据需要提供更多重影脚本选项…]^
input1.pdf input2.pdf input3.pdf[…]
使用Ghostscript,您可以传递pdfmark语句,这些语句可以为生成的PDF中的每个附加源文件添加内容表和书签。例如:
gswin32c.exe^
-dBATCH-dNOPAUSE^
-sDEVICE=pdfwrite^
-sOutputFile=merged.pdf^
[…根据需要提供更多重影脚本选项…]^
文件-with-pdfmarks-to-generate-a-ToC.ps^
-f input1.pdf input2.pdf input3.pdf[…]
或
gswin32c.exe^
-dBATCH-dNOPAUSE^
-sDEVICE=pdfwrite^
-sOutputFile=merged.pdf^
[…根据需要提供更多重影脚本选项…]^
文件-with-pdfmarks-to-generate-a-ToC.ps^
-f input1.pdf^
input2.pdf^
input3.pdf[…]
有关pdfmark主题的一些介绍,请参见Thomas Merz的《pdfmark初级读本》
编辑:
我本想给大家举一个例子,介绍一下file-with-pdfmarks-to-generate-a-ToC.ps,但不知怎么忘了。这是:
[/Page 1/View[/XYZ null]/Title(文件1)/OUT pdfmark
[/Page 2/View[/XYZ null]/Title(文件2)/OUT pdfmark
[/Page 3/View[/XYZ null]/Title(文件3)/OUT pdfmark
[/Page 4/查看[/XYZ null]/Title(文件4)/OUT pdfmark
这将为前4个文件创建一个ToC==前4页(因为您保证合并输出PDF的每个成分文件都有1页)
[/XYZ null]部分确保当您跟随链接时,您的页面视口和缩放级别不会与当前视口和缩放级别发生更改。(如果您需要任意示例,可以使用[/XYZ 222 111 2]来执行此操作。)/Title(您想要的一些字符串)thingie确定ToC中的文本
您甚至可以直接将这些参数添加到Ghostscript命令行:
gswin32c.exe^
-o.pdf^
[…根据需要提供更多重影脚本选项…]^
-c“[/Page 1/View[/XYZ null]/Title(文件1)/OUT pdfmark”^
-c“[/Page 2/View[/XYZ null]/Title(文件2)/OUT pdfmark”^
-c“[/Page 3/View[/XYZ null]/Title(文件3)/OUT pdfmark”^
-c“[/Page 4/View[/XYZ null]/Title(文件4)/OUT pdfmark”^
-f input1.pdf^
input2.pdf^
input3.pdf^
input4.pdf[…]
其他编辑:
哦,顺便说一句:当您使用Ghostscript将两个PDF文件合并为一个文件时,它会保留书签–pdftk.exe不会。让我们使用我的第一次编辑命令生成的书签(有效地连接同一文件的两个副本):
gswin32c^
-sDEVICE=pdfwrite^
-o doublemerged.pdf^
merged.pdf^
merged.pdf
文件doublemerged.pdf现在将有2*4=8个书签
- 正如所料:书签1、2、3和4链接到第1、2、3和4页
- 问题是,书签5、6、7和8也链接到第1、2、3和4页
原因是,预先存在的书签确实通过绝对页码来寻址其链接目标。要解决这一问题(书签在合并的文件中工作),必须生成按指定目的地指向链接目标的书签(并确保这些书签在合并的文档中是uniq)
(这种方法也适用于linux,只需使用gs而不是gswin32c即可。)
附录
上面的命令行使用[…根据需要使用更多的Ghostscript选项…]作为更多选项的占位符
如果不使用其他选项,Ghostscript将为各种参数应用其内置默认值。但是,这可能会给您带来不喜欢的结果。由于Ghostscript会根据输入生成一个全新的PDF,这意味着某些原始对象可能会被更改。对于颜色空间和图像压缩,这是正确的回归水平
如何应用保持原始嵌入图像不变的参数可以在SuperUser上查看:“使用Ghostscript,但告诉它不要重新处理图像”