ฉันมีไฟล์ PDF ที่จัดทำเป็นรูปแบบหนังสือเล่มเล็ก มันหมายถึงการพิมพ์บนกระดาษ A4 ในแนวนอน; นี่คือสองหน้าใน pdf ซึ่งควรตรงกับสี่หน้าในหนังสือจริง
-------------------------------
| | |
| | |
| | |
| (1) | (3) |
| | |
| | |
| | |
-------------------------------
-------------------------------
| | |
| | |
| | |
| (4) | (2) |
| | |
| | |
| | |
-------------------------------
หมายเลขที่อยู่ในวงเล็บจะตรงกับลำดับของแต่ละหน้า
ฉันรู้ว่ามีคำสั่งทุกประเภท (pdfbook, pdfnup และอื่น ๆ ) บน linux (ซึ่งอาจใช้ในการทำหนังสือเล่มนี้ตั้งแต่แรก) ฉันจะ 'ยกเลิกการจอง' ได้อย่างไร - นั่นคือฉันต้องการทำเอกสาร 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)