我有一个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 A
为shuffle A B
最后一页命令。
这里的java(重新)实现pdftk
使用了最近发行版中打包的 。