Извлечение размеров страниц из PDF в Python

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

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

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

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

Ответ 1

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

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

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

Ответ 2

для 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

Ответ 3

С 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!).

Ответ 4

Другой способ - использовать 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() 

Ответ 5

С PyMuPDF:

>>> import fitz
>>> doc = fitz.open("example.pdf")
>>> page = doc.loadPage(0)
>>> print(page.MediaBox)
Rect(0.0, 0.0, 595.0, 842.0) #format is (0.0, 0.0, width, height) if page is not rotated