【问题标题】:Reordering large PDF files using command line tools使用命令行工具重新排序大型 PDF 文件
【发布时间】:2017-07-08 23:07:26
【问题描述】:

我正在处理包含数百个表单的 PDF 文件。每个表单有 2 页长,因此在大多数文件中,第 1-2 页是第一个表单,第 3-4 页是第二个表单,依此类推。

但是,有几个 PDF 文件的表单页面顺序是颠倒的。在这些情况下,第 1 页是第一个表单的第二页,第 2 页是第一个表单的第一页,第 3 页是第二个表单的第二页,第 4 页是第二个表单的第一页,依此类推开。

我想重新排序这些文件中的页面顺序,以便页面按以下顺序排列:(2(1), 2(1)-2, 2(2), 2(2)-1, 2(3) ), 2(3)-1,...,2n,2n-1),其中 n= 总页数/2。

我一直在寻找一种使用命令行工具(如 cpdf、pdftk 等)执行此操作的方法,但无济于事。这些文件很大,所以我想使用命令行工具来完成。

任何建议将不胜感激!

【问题讨论】:

  • 我看到你已经标记了 iText。 iText 不是命令行工具,但您可以使用它以 Java 或 .NET 生态系统中的任何语言编写自己的命令行工具。

标签: pdf itext command-line-interface pdftk


【解决方案1】:

CIB (https://www.cib.de) 的 CIB pdf 工具箱有一个(非免费)命令行工具版本,它支持一次运行 PDF 合并的所有可能性。

您尝试过 poppler-utils 吗? 我认为使用命令行工具 pdfseparate 和 pdfunite 实用程序,您可以实现您想要的一切。

【讨论】:

    【解决方案2】:

    如果 PDF 中表格的顺序发生更改,对您有影响吗?例如,如果不是

     form1-reversed,
     form2-reversed,
     form3-reversed
    

    你的结果文件看起来像

     form3,
     form2,
     form1
    

    ?

    在这种情况下,您可以只运行 PDFtk 以便它完全反转 所有 原始文件的页面:

    pdftk in.pdf cat r1-1 output reversed.pdf
    

    (在页码前面加上字母r 以相反的顺序引用页面。这意味着r1 是最后一页...)

    【讨论】:

    • 亲爱的未知 StackOverflow 用户,为什么今天的连载对我的一些答案投了反对票?愿意解释他们有什么问题吗?
    【解决方案3】:

    如果您使用的是支持 shell 脚本的操作系统(如 Linux 或 macOS 上的 Bash),您可以通过以下方式输出您请求的页码(假设您的 n==10):

    for i in {1..10}; do
      echo -n "$(( 2 * ${i} )) ";
      echo -n "$(( 2 * ${i} -1 )) ";
    done
    

    这将输出2 1 4 3 6 5 8 7 10 9。现在您可以使用此 PDFtk 命令根据需要重新排序页面:

    pdftk in.pdf cat $(for i in {1..10};do echo -n "$((2 * ${i})) ";echo -n "$((2*${i}-1 )) ";done) output out.pdf
    

    【讨论】:

      猜你喜欢
      • 2013-11-14
      • 2010-11-08
      • 2014-05-09
      • 1970-01-01
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多