複数ページのPDFファイルをAと呼びます。次に、単一ページで構成される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には私が講義した講義のスライドが含まれており、ファイルBは1ページだけ水平線で埋められています。
結果の出力ファイルを使用すると、スライドの右側にメモを配置できます(それぞれ2ページを印刷するため)。
LibreOfficeは各ページをインポートできますが、他のファイルを簡単に実行できるスクリプト(おそらくpdftk?)を探しています。
答え1
これはページ構成に関するもので、ここでBは次のように使用されます。奇妙な/職場そしてAはでも/反対側(OPの正確な要件に応じて)利用可能なBページが不足している場合:最初のジョブから十分な回数だけコピーする必要があります。
ページA(だから反対側)がページBの左側に表示されている場合は、ガードが必要です。職場最初のページ:たとえば、追加のページBです。
Aのページ数を数えます。 10ページがあるとしましょう。
これは合計10 + 1 = 11(または以下のように0〜10)を意味し、追加のBページが必要です。この計算を自動化する方法がある場合は、下のループの上限値として使用する必要があります。私はそのような方法がわからない。
シェルループは、
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
最近のリリースに含まれているアイテムを使用しました。