首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyPdf如何理解文档边界?

pyPdf如何理解文档边界?
EN

Stack Overflow用户
提问于 2015-11-15 00:07:45
回答 1查看 1.3K关注 0票数 2

这里我找到了这个分割pdf页面的代码。

代码语言:javascript
复制
#!/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.upperRight = (w/2, h)
    q.mediaBox.upperLeft = (w/2, h)
    output.addPage(p)
    output.addPage(q)
output.write(sys.stdout)

如果一页包含四页,如下所示:

代码语言:javascript
复制
+-------+-------+
|   1   |   2   |
|-------+-------|
|   3   |   4   |
+-------+-------+

然后,代码将它分成两页(按此顺序),其中包含另外两页:

代码语言:javascript
复制
+-------+-------+
|   3   |   4   |
+-------+-------+

+-------+-------+
|   1   |   2   |
+-------+-------+

您可以在下面是文档上进行测试。如果我正确地理解了代码中提到的upperRightupperLeft (和其他)变量,那么这就是pyPdf所看到的文档表示:

代码语言:javascript
复制
UL(0,10)        UR(10,10)
+-------+-------+
|   1   |   2   |
|-------+-------|
|   3   |   4   |
+-------+-------+
LL(0,0)         LR(10,0)

UL(x,y) = UpperLeft
UR(x,y) = UpperRight
LL(x,y) = LowerLeft
LR(x,y) = LowerRight

根据上述守则:

代码语言:javascript
复制
(w, h) = p.mediaBox.upperRight
p.mediaBox.upperRight = (w/2, h)
q.mediaBox.upperLeft = (w/2, h)

我期待着这个输出:

代码语言:javascript
复制
p:
+-------+
|   1   |
|-------+
|   3   |
+-------+

q:
+-------+
|   2   |
|-------+
|   4   |
+-------+

我在这里错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-15 11:39:51

在PDF中,有两种获取景观页面的方法:

  1. 定义宽度>高度的页面。
  2. 定义肖像页面(宽度<高度)和旋转(90度、270度等)。

您的PDF示例使用了第二种方法:所有页面都是595x842,旋转270度。不考虑旋转会导致垂直解释为水平的,反之亦然。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33714894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档