【问题标题】:Alternative `pdftk multistamp` to `pdftk` once it's no longer available?一旦不再可用,将 pdftk multistamp 替换为 pdftk?
【发布时间】:2018-11-18 05:45:36
【问题描述】:

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

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

以后如何合并/合并PDF文件?我真的希望在生成的 PDF 文件和元数据中尽可能多地保持页面之间的超链接。

【问题讨论】:

    标签: pdf ghostscript pdftk gcj


    【解决方案1】:

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

    【讨论】:

    • 请注意,Ubuntu 20.04 LTS 已将其打包在官方存储库中。
    【解决方案2】:

    我遇到了完全相同的问题,最终决定使用 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      • 2014-08-15
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      相关资源
      最近更新 更多