您的代码假定p.media@R_976_2419@.lowerLeft
为(0,0),但实际上为(0,497)
这适用于您提供的文件:
#!/usr/bin/env python
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for i in range(input.getNumPages()):
p = input.getPage(i)
q = copy.copy(p)
bl = p.media@R_976_2419@.lowerLeft
ur = p.media@R_976_2419@.upperRight
print >> sys.stderr, 'splitting page',i
print >> sys.stderr, '\tlowerLeft:',p.media@R_976_2419@.lowerLeft
print >> sys.stderr, '\tupperRight:',p.media@R_976_2419@.upperRight
p.media@R_976_2419@.upperRight = (ur[0], (bl[1]+ur[1])/2)
p.media@R_976_2419@.lowerLeft = bl
q.media@R_976_2419@.upperRight = ur
q.media@R_976_2419@.lowerLeft = (bl[0], (bl[1]+ur[1])/2)
if i%2==0:
output.addPage(q)
output.addPage(p)
else:
output.addPage(p)
output.addPage(q)
output.write(sys.stdout)