使用命令行工具重新排序大型PDF文件

时间:2017-07-08 23:07:27

标签: pdf itext command-line-interface pdftk

我正在使用包含数百种表单的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等)来实现此目的的方法,但无济于事。文件非常大,所以我想通过命令行工具来实现。

任何建议将不胜感激!

3 个答案:

答案 0 :(得分:0)

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

你尝试过poppler-utils吗? 我认为使用命令行工具pdfseparate和pdfunite实用程序,您可以实现所有目标。

答案 1 :(得分:0)

如果PDF中的表单顺序发生变化,对您来说是否重要?例如,如果不是

 form1-reversed,
 form2-reversed,
 form3-reversed

您生成的文件看起来像

 form3,
 form2,
 form1

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

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

(以相反的顺序添加带有r字母的页码前缀。这意味着r1是最后一页......)

答案 2 :(得分:0)

如果您使用的是支持shell脚本的操作系统(如Linux或MacOS上的Bash),您可以通过类似的方式实现所请求页码的输出(假设您的n==10):< / p>

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