一旦`pdftk`不再可用,是否有替代品`pdftk multistamp`?

6
我在服务器上使用pdftk multistamp为大型(500-1200页)PDF文件添加自定义页面编号、页面头和页面脚。我通过计算输入中的页面数,使用LaTeX创建适当的空白页面,并使用pdftk multistamp将原始PDF和带有页面、页眉和页脚的PDF组合起来。但是,pdftk基于libgcj(和gcj),而gcj已不再维护,并已从GCC 7.1中删除。因此,pdftk没有未来。

如何在未来合并/组合PDF文件?我真的希望在结果PDF文件中保持页面之间的超链接以及尽可能多的元数据。

2个回答

4

几个月前我开始了pdftk的Java版本移植,目前它应该具有与C++版本相同的功能,但需要进行更多的测试。如果您想尝试,请查看https://gitlab.com/pdftk-java/pdftk并在崩溃时提交bug报告。


请注意,Ubuntu 20.04 LTS已将此打包在官方仓库中。 - Mikko Rantalainen

0
我遇到了完全相同的问题,最终选择使用combine_pdf Ruby gem,它具有非常简单的API并且运行良好。(虽然我不知道它对你提到的超链接和元数据的支持情况如何。)如果这对你是一个选项,我强烈推荐使用它。你可以使用类似下面这样的简短脚本来完成:
require "combine_pdf"
stamp_pages = CombinePDF.new(stamp_filename).pages
pdf = CombinePDF.new(base_filename)
pdf.pages.each_with_index do |page, index|
  page << stamp_pages[index > stamp_pages.size ? -1 : index]
end
pdf.save(output_filename)

在那之前,我使用的是ImageMagick(需要GhostScript进行PDF操作),但是在从PDF转换为图像再转换回去的过程中失去了很多细节:

# Increase the `-density` number for higher quality.
# Add `+antialias` to stop ImageMagick from antialiasing your images.
convert -density 300 base_filename null: stamp_filename -compose multiply -layers composite output_filename

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接