如何在python中使用pdfminer获取pdf总页数的总数

时间:2017-08-23 13:23:25

标签: python pdfminer

在PyPDF2中pdfreader.getNumPages()给出了pdf文件的总页数。

如何使用pdfminer获取此内容?

5 个答案:

答案 0 :(得分:9)

我讨厌留下一段代码片段。对于上下文,这里有一个link to the current pdfminer.six repo,您可以在其中了解有关resolve1方法的更多信息。

当您使用pdfminer时,您可能会打印并遇到一些PDFObjRef个对象。基本上,您可以使用resolve1来扩展这些对象(它们通常是字典)。

from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfinterp import resolve1

file = open('some_file.pdf', 'rb')
parser = PDFParser(file)
document = PDFDocument(parser)

# This will give you the count of pages
print(resolve1(document.catalog['Pages'])['Count'])

答案 1 :(得分:2)

使用pdfminer.six只需导入高级函数extract_pages,将生成器转换为列表并获取其长度。

from pdfminer.high_level import extract_pages

print(len(list(extract_pages(pdf_file))))

答案 2 :(得分:1)

我发现pdfminer获取页面总数非常慢。找到了一个更干净,更快的解决方案:

pip3 install PyPDF2

from PyPDF2 import PdfFileReader
def get_pdf_page_count(path):
  with open(path, 'rb') as fl:
    reader = PdfFileReader(fl)
    return reader.getNumPages()

答案 3 :(得分:0)

使用pdfminerimport必要的模块。

from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage

创建与文件对象关联的PDF解析器对象。

fp = open('your_file.pdf', 'rb')
parser = PDFParser(fp)

创建一个存储文档结构的PDF文档对象。

document = PDFDocument(parser)

每次有页面时,迭代create_pages()函数递增。

num_pages = 0
for page in PDFPage.create_pages(document):
    num_pages += 1
print(num_pages)

答案 4 :(得分:0)

我知道您要的是 pdfminer。但是,通过 Google 来回答这个问题的人可能也对 pdfminer 的替代品

感兴趣

派克

Docs

from pikepdf import Pdf
pdf_doc = Pdf.open('fourpages.pdf')
pdf_page_count = len(pdf_doc)