Notes Vulgaris
Обрезаем PDF при помощи Python и pyPdf
2011-08-03 15:50
Tags: python, linux

Задача: есть PDF, в котором очень широкие поля, плюс куча мусора на них типа «Украдено в Хилтоне», поэтому нужно поля по максимум отрезать. Можно, конечно, рыть интернеты в поисках подходящей программы, но за короткий срок этого сделать не удалось.

Всё решилось совершенно неожиданным путём: ставим пакет python-pypdf, пишем простейший питоновский скрипт и получаем ровно что нужно.

Вот полный текст скрипта. Однако учтите — таким образом меняется лишь ограничивающий прямоугольник каждой страницы, сам текст на полях не исчезает насовсем, а только скрывается.

#!/usr/bin/env python2.6

from pyPdf import PdfFileWriter, PdfFileReader

# crop in_file
in_file = 'GettingReal.pdf'
out_file = 'GettingReal-crop.pdf'

out_pdf = PdfFileWriter()
in_pdf = PdfFileReader(file(in_file, 'rb'))

np = in_pdf.getNumPages()

for p in range(np):
    page = in_pdf.getPage(p)
    # [0, 0, 612, 792]
    mb = page.mediaBox
    mb.setUpperLeft( (119, 100) )
    mb.setLowerRight( (494, 692) )

    out_pdf.addPage(page)

outputStream = file(out_file, 'wb')
out_pdf.write(outputStream)

Comments

Comment text (Markdown is allowed).
Your name (required, 50 characters or less)
Your email (won't be published, required if you want to receive answers)
Your website
© 2006—2011 Sergei Stolyarov | Powered by Pyrone