小冊子形式にしたpdfファイルがあります。A4用紙に横向きで印刷するためのものです。これはPDFの2ページであり、実際の本の4ページに対応しているはずです。
-------------------------------
| | |
| | |
| | |
| (1) | (3) |
| | |
| | |
| | |
-------------------------------
-------------------------------
| | |
| | |
| | |
| (4) | (2) |
| | |
| | |
| | |
-------------------------------
括弧で囲まれた番号は、個々のページの順序に対応しています。
Linuxにはあらゆる種類のコマンド(pdfbook、pdfnupなど)があることを知っています(おそらくこのブックレットを最初に作成するために使用されていました)。どうすれば「予約を解除」できますか?つまり、これから、最終製品の各ページが通常の方法で並べられたpdfの個別のページであるpdfドキュメントを作成します。
編集する
Gillesのおかげで、次のコードをなんとか使用できました。
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
second_half = []
for i in range(0,input.getNumPages()):
p = input.getPage(i)
q = copy.copy(p)
print >> sys.stderr, 'splitting page',i
print >> sys.stderr, '\tlowerLeft:',p.mediaBox.lowerLeft
print >> sys.stderr, '\tupperRight:',p.mediaBox.upperRight
p.mediaBox.upperRight = (ur[0], (bl[1]+ur[1])/2)
p.mediaBox.lowerLeft = bl
q.mediaBox.upperRight = ur
q.mediaBox.lowerLeft = (bl[0], (bl[1]+ur[1])/2)
if i % 2 == 0:
output.addPage(p)
qold = q
else:
output.addPage(q)
output.addPage(qold)
output.addPage(p)
output.write(sys.stdout)
1
これはsuperuser.comに
—
Adam Zalcman 2012年
@AdamZalcmanなんで?彼はLinuxプログラムを探しています
—
Michael Mrozek
この質問への回答(Gillesによる)を問題に適応させることができます。つまり、PyPdfスクリプトを作成します。
—
sr_ 2012年
3ページと4ページを入れ替えていませんか?私は印刷に携わってきました。そのレイアウトは意味をなさない....
—
ワイルドカード'10年