创建 pdf 输出文件在两个文件之间交替页面

创建 pdf 输出文件在两个文件之间交替页面

我有一个pdf文件,我们称之为A,由很多页面组成。然后我有第二个 pdf 文件,我们称之为 B,由单页组成。

我的目标是拥有一个输出文件,我们称之为 O,具有以下模式:

O[1] = A[1]
O[2] = B[1]
O[3] = A[2]
O[4] = B[1]
O[5] = A[3]
O[6] = B[1]
O[7] = A[4]
O[8] = B[1]
...

换句话说,我想将 A 页面与 B 页面交错。为了给您提供背景信息,文件 A 包含我参加过的课程的幻灯片,我创建了文件 B,其中只有一个页面由水平线填充。

生成的输出文件将允许我将笔记放在幻灯片的右侧(因为我要每张打印两页)。

我可以在 LibreOffice 中导入每个页面,但我正在寻找一个脚本(也许是 pdftk?)来轻松运行不同的文件。

答案1

这是关于整理页面的,这里用 B 作为奇怪的/直肠和 A 作为甚至/反面(考虑到OP的确切要求),除非没有足够的B页可用:它们必须在第一次操作中复制足够的次数。

如果 A 页面(因此反面)是在B页左边看到的,那么应该有一个守卫直肠第一页:例如附加 B 页。

  • 数一下 A 中的页数。假设有 10 页。

    这意味着总共需要 10+1 = 11(或如下所示的 0 到 10),需要额外的 B 页。如果有一种方法可以自动执行此计数,则应将其用作下面循环的上限值。我不知道这样的方式。

  • 在 shell 循环中生成足够的 B 页(B 的唯一页 B1)以从第一个pdftk命令复制,并将它们提供给标准输出到第二个pdftk命令将使用标准输入对于 B 部分,并将沿着 A 整理它们。

    pdftk B=B.pdf cat $(for page in $(seq 0 10); do echo B1; done) output - | pdftk A=A.pdf B=- shuffle B A output O.pdf
    

    或者以更易读的形式进行相同的分割:

    pdftk B=B.pdf \
          cat $(for page in $(seq 0 10); do echo B1; done) \
          output - | \
    pdftk A=A.pdf \
          B=- \
          shuffle B A \
          output O.pdf
    

    注意:如果不清楚,一旦展开 shell 循环,就会解析为:

    pdftk B=B.pdf cat B1 B1 B1 B1 B1 B1 B1 B1 B1 B1 B1 output - | pdftk A=A.pdf B=- shuffle B A output O.pdf
    

如果页面顺序在 A 和 B 之间颠倒(从 A 页面开始打印,而不是 B 页面),可能会在 B 中少生成一页(可能不需要最后一个 B 页)并更改shuffle B Ashuffle A B最后一页命令。

这里的java(重新)实现pdftk使用了最近发行版中打包的 。

相关内容