Обрезаем PDF при помощи Python и pyPdf
2011-08-03 15:50
Задача: есть 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)