一旦不再可用,替代 pdftk multistamp 到 pdftk ?

Alternative `pdftk multistamp` to `pdftk` once it's no longer available?

我在服务器上使用 pdftk multistamp 为大型(500-1200 页)PDF 文件添加自定义页码、页眉和页脚。为此,我计算输入中的页数,使用 LaTeX 创建带有页码、页眉和页脚的合适的空白页,然后使用 pdftk multistamp 将原始 PDF 和带有页面、页眉和页脚的 PDF 合并。

然而,pdftk 基于 libgcj(和 gcj)并且 gcj 不再维护并且已经从 GCC 7.1 中删除。因此,pdftk 没有任何未来。

以后如何merge/combinePDF文件?我真的很想尽可能多地在生成的 PDF 文件和元数据中保留页面之间的超链接。

几个月前,我开始 Java 移植 pdftk;此时它应该具有与 C++ 版本相同的功能,但还需要进行更多测试。如果您想尝试一下,请检查 https://gitlab.com/pdftk-java/pdftk 并在它出现故障时提交错误报告。

我 运行 遇到了完全相同的问题,并最终使用 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 (which requires 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