Сжатие и объединение PDF-файлов в Python - PullRequest
2 голосов
/ 10 ноября 2010

Я пытаюсь сжать и объединить две страницы PDF формата A4 в одну страницу A4, чтобы, если бы у меня было;

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

Я бы получил;

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

Как новый PDF, с двумя страницами формата A5 на одной странице. Аналогично тому, как вы можете напечатать две страницы на странице на бумаге.

Я посмотрел в pyPDF (http://pybrary.net/pyPdf/) ReportLab (http://www.reportlab.com)), но я не могу найти способ сжатия и слияния таким образом.

Любые намеки?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 10 ноября 2010

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)
0 голосов
/ 10 ноября 2010

Я бы сделал это (не обязательно наилучшим образом, но используя инструменты, которые у меня есть), чтобы использовать pdf2ps Ghostcript для преобразования в PostScript, а затем добавить преамбулу PostScript N-up (PS - полное программированиеязык, и вы можете переопределить встроенные функции, такие как "showpage", чтобы добавить N-Up или постеризацию непосредственно в документ), а затем я бы преобразовал обратно с ps2pdf.

Offhand Я не нахожу опубликованную версиюутилита PostScript N-up, но вы можете использовать несколько языков, написанных на других языках, которые управляют самим документом PostScript, например на http://www.tardis.ed.ac.uk/~ajcd/psutils/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...