在Python中收缩和合并PDF

时间:2010-11-10 01:31:24

标签: python pdf pdf-generation

我正在尝试将两个A4 PDF页面缩小并合并为一个A4页面,以便我有;

 _____        _____        
|     |      |     |
| p1  |      | p2  | 
|     |      |     |
|_____|      |_____|

我会得到;

 _____             
| p1  |    
|.....| 
| p2  |  
|_____|      

作为一个新的PDF,在该页面上有两个A5大小的页面。与您在纸上每页打印两页的方式类似。

我已经研究了pyPDF(http://pybrary.net/pyPdf/)ReportLab(http://www.reportlab.com),但我似乎无法找到如何缩小和合并这样的方法。< / p>

任何提示?

谢谢!

2 个答案:

答案 0 :(得分:3)

pdfnup具有此功能(http://pypi.python.org/pypi/pdfnup)#

e.g。

from pyPdf import PdfFileWriter, PdfFileReader
from pdfnup import generateNup

output = PdfFileWriter()
input1 = PdfFileReader(file("in.pdf", "rb"))

page1 = input1.getPage(0)
page2 = input1.getPage(1)

output.addPage(page1)
output.addPage(page2)

outputStream = file("out.pdf", "wb")
output.write(outputStream)
outputStream.close()

generateNup("out.pdf", 2)

答案 1 :(得分:0)

我会这样做(不一定是最好的方式,但使用我可用的工具)将使用Ghostcript的pdf2ps转换为PostScript,然后附加N-up PostScript前导码(PS是一个完整的编程语言,您可以重新定义像“showpage”这样的内置函数,以便将N-up或posterization直接添加到文档中)然后我将使用ps2pdf转换回来。

Offhand我没有找到PostScript N-up实用程序的已发布版本,但您可以使用其他语言编写的几个用于操作PostScript文档本身的文档,例如{{ 3}}