在Python中缩小并合并PDF文件

2 投票
2 回答
2543 浏览
提问于 2025-04-16 06:49

我想把两页A4的PDF缩小并合并成一页A4,这样如果我有:

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

我希望得到:

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

作为一个新的PDF,里面有两页A5大小的内容,就像你在纸上打印两页内容在一页上一样。

我查过了pypdfReportLab,但是我找不到如何像这样缩小和合并的方法。

有没有什么提示?

谢谢!

2 个回答

1

我会这样做(这不一定是最好的方法,但这是我能用的工具):首先用Ghostscript的pdf2ps把PDF文件转换成PostScript格式。接着,我会在这个PostScript文件前面加上一个N-up的开头部分(PostScript其实是一种完整的编程语言,你可以重新定义一些内置的功能,比如“showpage”,这样就能直接在文档中添加N-up或者海报化的效果)。最后,我会用ps2pdf把它再转换回PDF。

目前我没有找到一个现成的PostScript N-up工具,但你可以在网上搜索一些用其他语言写的工具,它们可以直接处理PostScript文档,比如在http://www.tardis.ed.ac.uk/~ajcd/psutils/上找到的那些。

4

pdfnup这个工具有这个功能(http://pypi.python.org/pypi/pdfnup)#

比如说:

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)

撰写回答