Извлечение размеров страницы из PDF в Python - PullRequest
11 голосов
/ 03 июня 2011

Я хочу прочитать PDF-файл и получить список его страниц и размер каждой страницы. Мне не нужно каким-либо образом манипулировать им, просто прочитайте его.

В настоящее время пробует pyPdf, и он делает все, что мне нужно, кроме способа получения размеров страницы. Понимание того, что мне, вероятно, придется перебирать, так как размеры страниц могут варьироваться в документе PDF. Есть ли другой библиотека или метод, который я могу использовать?

Я пытался использовать PIL, некоторые онлайн-рецепты даже используют d = Image (imagefilename), но он НИКОГДА не читает ни один из моих PDF-файлов - он читает все остальное, что я к нему добавляю - даже некоторые вещи, которые я не знал, мог сделать PIL .

Любое руководство приветствуется - я нахожусь на windows 7 64, python25 (потому что я тоже занимаюсь GAE), но я счастлив сделать это в Linux или более современных pythiis.

Ответы [ 4 ]

23 голосов
/ 03 июня 2011

Это можно сделать с помощью PyPDF2 :

>>> from PyPDF2 import PdfFileReader
>>> input1 = PdfFileReader(open('example.pdf', 'rb'))
>>> input1.getPage(0).mediaBox
RectangleObject([0, 0, 612, 792])

(Ранее известный как pyPdf и по-прежнему ссылается на его документацию.)

2 голосов
/ 17 мая 2018

С pdfrw :

>>> from pdfrw import PdfReader
>>> pdf = PdfReader('example.pdf')
>>> pdf.pages[0].MediaBox
['0', '0', '595.2756', '841.8898']

Длина дана в пунктах (1 пт = 1/72 дюйма). Формат ['0', '0', width, height] (спасибо, Astrophe !).

2 голосов
/ 20 февраля 2018

для pdfminer python 3.x (pdfminer.six) (не пробовал на python 2.7):

parser = PDFParser(open(pdfPath, 'rb'))
doc = PDFDocument(parser)
pageSizesList = []
for page in PDFPage.create_pages(doc):
    print(page.mediabox) # <- the media box that is the page size as list of 4 integers x0 y0 x1 y1
    pageSizesList.append(page.mediabox) # <- appending sizes to this list. eventually the pageSizesList will contain list of list corresponding to sizes of each page
0 голосов
/ 15 августа 2016

Другой способ - использовать popplerqt4

doc = popplerqt4.Poppler.Document.load('/path/to/my.pdf')
qsizedoc = doc.page(0).pageSize()
h = qsizedoc.height() # given in pt,  1pt = 1/72 in
w = qsizedoc.width() 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...