Saya memiliki file pdf yang dibuat menjadi format buklet. Ini dimaksudkan untuk mencetak pada kertas A4 dalam orientasi lanskap; di sini ada dua halaman di pdf, yang harus sesuai dengan empat halaman di buku yang sebenarnya.
-------------------------------
| | |
| | |
| | |
| (1) | (3) |
| | |
| | |
| | |
-------------------------------
-------------------------------
| | |
| | |
| | |
| (4) | (2) |
| | |
| | |
| | |
-------------------------------
Nomor kurung sesuai dengan urutan masing-masing halaman.
Saya tahu bahwa ada segala macam perintah (pdfbook, pdfnup, dll.) Di linux (yang mungkin digunakan untuk membuat buklet ini sejak awal). Bagaimana saya 'menghapusnya' --- yaitu, saya ingin membuat dokumen pdf dari sini di mana setiap halaman individu dari produk akhir adalah halaman individual pdf, dipesan dengan cara biasa.
Edit
Berkat Gilles, saya berhasil menggunakan kode berikut:
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)
command-line
pdf
pdftk
TSGM
sumber
sumber
Jawaban:
Berikut skrip Python kecil menggunakan pustaka PyPdf yang melakukan pekerjaan. (Berasal dari
un2up
.) Simpan di skrip bernamaunbook
, buat itu dapat dieksekusi (chmod +x unbook
), dan jalankan sebagai filter (unbook <book.pdf >1up.pdf
).Saya menguji skrip ini pada output dari
pdfbook --signature=N
. Untuk metode lain, Anda mungkin tidak perlu membalik setiap halaman input lainnya, dan urutan halaman mungkin berbeda (tergantung pada orientasi halaman lanskap). Disposisi halaman tidak cocok dengan pertanyaan Anda; 13,42 tidak masuk akal bagi saya (dalam buku 4 halaman, 3 harus di sebelah 2, bukan di sebelah 1).Abaikan peringatan penghentian apa pun; hanya pengelola PyPdf yang perlu memperhatikan hal ini.
sumber
<
sebelum file input. Jika Anda benar-benar yakin bahwa Anda menulis perintah dengan benar, itu bisa menjadi bug di pustaka PyPdf (itu belum gagal saya, tetapi itu bisa terjadi).python
adalah kesalahan saya: saya harus meletakkan garis shebang, ditambahkan.