更新:感谢stardt的脚本有效!pdf是另一个页面.我在另一个上尝试了脚本,它也正确地吐出每个pdf页面,但页码的顺序有时是正确的,有时是错误的.例如,在pdf文件的第25-28页,打印的页码是14,15,17,是16.我想知道为什么?整个pdf可以从http://download304.mediafire.com/u6ewhjt77lzg/bgf8uzvxatckycn/3.pdf下载.
原文:我有一个扫描的pdf,其中两个纸页并排放在pdf页面中.我想将pdf页面分成两部分,原来的左半部分成为两个新pdf页面中较早的一部分.pdf看起来像
.
这是我的un2up灵感来自Gilles的 Python脚本:
#!/usr/bin/env python
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for p in [input.getPage(i) for i in range(0,input.getNumPages())]:
q = copy.copy(p)
(w, h) = p.mediaBox.upperRight
p.mediaBox.upperLeft = (0, h/2)
p.mediaBox.upperRight = (w, h/2)
p.mediaBox.lowerRight = (w, 0)
p.mediaBox.lowerLeft = (0, 0)
q.mediaBox.upperLeft = (0, h)
q.mediaBox.upperRight = (w, h)
q.mediaBox.lowerRight = (w, h/2)
q.mediaBox.lowerLeft = (0, h/2)
output.addPage(q)
output.addPage(p)
output.write(sys.stdout)
Run Code Online (Sandbox Code Playgroud)
我在终端的pdf上尝试了脚本命令un2up < page.pdf > out.pdf,但输出out.pdf没有正确分割.
我还检查变量的值w和h,输出p.mediaBox.upperRight,他们是514和1224它的权利根据自己的实际比例不看.
该文件可以从http://download851.mediafire.com/bdr4sv7v5nzg/raci13ct5w4c86j/page.pdf下载.
你的代码假定p.mediaBox.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.mediaBox.lowerLeft
ur = p.mediaBox.upperRight
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(q)
output.addPage(p)
else:
output.addPage(p)
output.addPage(q)
output.write(sys.stdout)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2288 次 |
| 最近记录: |