Tôi có một tập tin pdf được tạo thành định dạng tập sách. Nó có nghĩa là để in trên giấy A4 theo hướng ngang; đây là hai trang trong pdf, tương ứng với bốn trang trong sách thực tế.
-------------------------------
| | |
| | |
| | |
| (1) | (3) |
| | |
| | |
| | |
-------------------------------
-------------------------------
| | |
| | |
| | |
| (4) | (2) |
| | |
| | |
| | |
-------------------------------
Các số được đặt trong ngoặc tương ứng với thứ tự của các trang riêng lẻ.
Tôi biết rằng có tất cả các loại lệnh (pdfbook, pdfnup, v.v.) trên linux (có lẽ được sử dụng để tạo tập sách này ở vị trí đầu tiên). Làm thế nào để tôi 'unbook' nó --- nghĩa là tôi muốn tạo một tài liệu pdf từ đây trong đó mỗi trang riêng lẻ của sản phẩm cuối cùng là một trang riêng của pdf, được đặt hàng theo cách thông thường.
Biên tập
Nhờ Gilles, tôi quản lý để sử dụng mã sau đây:
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)