Expertus metuit
Обрезаем PDF при помощи Python и pyPdf
Опубликовано 2011-08-03 в 15:50

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

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

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/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)

Комментарии

Текст комментария (допустимая разметка: *курсив*, **полужирная**, [ссылка](http://example.com) или <http://example.com>) Посетители-анонимы, обратите внимение, что более чем одна гиперссылка в тексте (включая оную из поля «веб-сайт») приведёт к блокировке комментария для модерации. Зайдите на сайта с использованием аккаунта на twitter, например, чтобы посылать комментарии без этого ограничения.
Имя (обязательно, 50 символов или меньше)
Опциональный email, на который получать ответы (не будет опубликован)
Веб-сайт
© 2006—2024 Sergey Stolyarov | Работает на pyrengine