
多数のページで構成される PDF ファイル (A と呼ぶことにします) があります。次に、1 ページで構成される 2 つ目の 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 には私が受講したコースのスライドが含まれており、水平線で塗りつぶされた 1 ページのファイル B を作成しました。
結果の出力ファイルを使用すると、スライドの右側にメモを配置できます (1 枚のシートに 2 ページ印刷するため)。
LibreOffice のすべてのページをインポートすることでこれを行うことができますが、さまざまなファイルに対して簡単に実行できるスクリプト (おそらく pdftk?) を探しています。
答え1
これはページを照合するものであり、ここではBは奇数/直訳そしてAは平/裏面(OP の正確な要件を考慮すると) ただし、使用可能な B ページが十分ではありません。最初の操作で十分な回数複製する必要があります。
Aページの場合(つまり裏面)がBページの左側に表示される場合は、ガードが1つ必要です。直訳最初のページ: たとえば、追加の B ページ。
A のページ数を数えます。10 ページあるとします。
つまり、合計 10+1 = 11 (または、以下の 0 から 10 まで) になるには、B フロント ページが 1 つ追加される必要があります。このカウントを自動化する方法がある場合は、以下のループの上限値として使用する必要があります。そのような方法はわかりません。
シェルループで最初の
pdftk
コマンドから複製するのに十分なBページ(Bの固有ページB1)を生成し、それらを標準出力2番目の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
注: 明確でない場合は、シェル ループが展開されると、次のように解決されます。
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 のページの順序が逆になっている場合 (B ページではなく A ページから印刷を開始する場合)、おそらく B で 1 ページ少なく生成され (最後の B ページはおそらく不要)、最後のコマンドで にshuffle B A
変更されます。shuffle A B
ここではJavaの(再)実装pdftk
最近のディストリビューションにパッケージ化されている が使用されました。