これは、Ghostscript を使用して解決できます。 pdftk
それだけではできません(私の知る限り)。これを手動で行うためのコマンドライン手順を示します。これを手順としてスクリプト化するのは簡単で、ページ サイズとページ番号のパラメーターも異なります。しかし、あなたはそれを自分でできると言った;-)
Ghostscript を使用してこれを解決するには...
...そして、それを楽しむために、私は最近それをしました ない 「ダブルアップ」ページを特徴とする入力ファイルを使用しますが、「トレブルアップ」を備えた入力ファイルを使用します。このケースの回答はこちらでご覧いただけます .
あなたのケースはさらに簡単です。あなたはこれに似たものを持っているようです:
+------------+------------+ ^
| | | |
| 1 | 2 | |
| | | 595 pt
| | | |
| | | |
| | | |
+------------+------------+ v
^
fold
v
+------------+------------+ ^
| | | |
| 3 | 4 | |
| | | 595 pt
| | | |
| | | |
| | | |
+------------+------------+ v
<---------- 842 pt -------->
それぞれのサイズが 421 pt x 595 pt の 4 ページからなる 1 つの PDF を作成したいと考えています。
最初のステップ
まず、各入力ページから左側のセクションを抽出しましょう:
gs \
-o left-sections.pdf \
-sDEVICE=pdfwrite \
-g4210x5950 \
-c "<</PageOffset [0 0]>> setpagedevice" \
-f double-page-input.pdf
これらのパラメータは何をしましたか?
まず、PDF では 1 インチ ==72 ポイント .残りは次のとおりです。
-o ...............:
名前の出力ファイル。暗黙的に-dBATCH -dNOPAUSE -dSAFER
も使用します .-sDEVICE=pdfwrite :
出力形式として PDF が必要です。-g................:
出力メディア サイズをピクセル単位で設定します。 pdfwrite のデフォルトの解像度は 720 dpi です。したがって、PageOffset と一致するように 10 を掛けます。-c "..............:
メイン入力ファイルの直前に指定された PostScript コード スニペットを処理するように Ghostscript に要求します (-f
を続ける必要があります)。 ).<</PageOffset ....:
媒体上のページ画像のシフトを設定します。 (もちろん、左ページのシフトは[0 0]
実際の効果はありません)-f ...............:
この入力ファイルを処理します。
最後のコマンドが達成した結果は?
これ:
Output file: left-sections.pdf, page 1
+------------+ ^
| | |
| 1 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
Output file: left-sections.pdf, page 2
+------------+ ^
| | |
| 3 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
<-- 421 pt -->
第 2 ステップ
次に、右側のセクション:
gs \
-o right-sections.pdf \
-sDEVICE=pdfwrite \
-g4210x5950 \
-c "<</PageOffset [-421 0]>> setpagedevice" \
-f double-page-input.pdf
表示領域を固定したままページを左にシフトしているため、負のオフセットに注意してください。
結果:
Output file: right-sections.pdf, page 1
+------------+ ^
| | |
| 2 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
Output file: right-sections.pdf, page 2
+------------+ ^
| | |
| 4 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
<-- 421 pt -->
最後のステップ
次に、ページを 1 つのファイルに結合します。 Ghostscript でも同じことができますが、pdftk
を使用します。 代わりに、このジョブの方が高速であるため:
pdftk \
A=right-sections.pdf \
B=left-sections.pdf \
shuffle \
output single-pages-output.pdf
verbose
終わり。これが望ましい結果です。 4 つの異なるページ、サイズ 421x595 pt.
結果:
+------------+ +------------+ +------------+ +------------+ ^
| | | | | | | | |
| 1 | | 2 | | 3 | | 4 | |
| | | | | | | |5595 pt
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
+------------+ +------------+ +------------+ +------------+ v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->
1 つの入力ページに対して複数のページを含む PDF を作成するために使用できるツール pdfposter があります (ページのタイリングまたはチョッピング)。ツール poster
に似ています 、これは PostScript ファイルに対して同じことを行います。
そこで、さらに多くの検索を行った後 (「PDF カット ページ」がはるかに優れた検索のようです)、unpnup
という小さなスクリプトを見つけました。 poster
を使用する 、PDF/PS 変換、および pdftk
私が必要とすることを正確に行うために。少し遠回りですが、吐き出す前にページをラスタライズしないため、私が見つけた他の方法 (imagemagick の使用など) よりもはるかに優れています。
なんらかの理由で mobileread がなくなった場合に備えて、スクリプトのコア (GPLv2 またはそれ以降で Harald Hackenberg によってライセンスされています <hackenberggmx.at>
) は次のとおりです:
pdftk "$1" burst
for file in pg*.pdf;
do
pdftops -eps $file
poster -v -pA4 -mA5 -c0% `basename $file .pdf`.eps > `basename $file .pdf`.tps
epstopdf `basename $file .pdf`.tps
done
pdftk pg*.pdf cat output ../`basename $1 .pdf`_unpnuped.pdf