1ページ(右ページ)を空白のままにして、片面に複数ページを印刷するには?

1ページ(右ページ)を空白のままにして、片面に複数ページを印刷するには?

入力ファイルはPDF文書です。メモを書くための右側のスペースが欲しいです。

出力.pdfは次のとおりです。

ここに画像の説明を入力してください。

答え1

これを行うには、次のものを組み合わせることができます。pdftkそしてpdfnup:

まず、空白の空白ページ(LibreOffice / OpenOffice、inkscape、(La)TeX、scribusなどを使用)を含むPDFを作成します。

次に、シェルまたはシェルスクリプトを介して呼び出します。

INPUTPDF=input.pdf
NUMPAGES=$(pdftk "$INPUTPDF" dump_data | grep NumberOfPages | egrep -o '[0-9]*')
pdftk "A=$INPUTPDF" B=empty.pdf cat $(for i in $(seq $NUMPAGES) ; do echo A$i B1 ; done) output output.pdf
pdfnup output.pdf
mv output-nup.pdf output.pdf

コマンドpdftkラインは次に展開されます。

 pdftk A=input.pdf B=empty.pdf cat A1 B1 A2 B1 [...]

答え2

Joferの回答に加えて

pdfjamオプションをクリエイティブに使用している場合は、これを直接行うこともできます。

pdfjam --landscape --offset '-8cm 0cm' document.pdf

デフォルトでオプションを--landscape追加しないと、nupページは中央に配置されます。負のオフセットを使用すると、必要に応じてページを左に移動できます(最も良い値は入力によって異なります)。

答え3

これPyPdfライブラリPythonはPDFファイルのページを簡単に並べ替えることができます。以下は、すべてのページを回転させてサイズを半分に縮小する小さなスクリプトです。警告:テストされていません。

#!/usr/bin/env python
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for p in [input.getPage(i) for i in range(0,input.getNumPages())]:
    p.rotateClockwise(270)
    (w, h) = p.mediaBox.upperRight
    p.mediaBox.upperRight = (w/2, h/2)
    output.addPage(p)
output.write(sys.stdout)

関連情報