在PyPDF2中pdfreader.getNumPages()
给出了pdf文件的总页数。
如何使用pdfminer获取此内容?
答案 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)
使用pdfminer
,import
必要的模块。
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 的替代品
感兴趣from pikepdf import Pdf
pdf_doc = Pdf.open('fourpages.pdf')
pdf_page_count = len(pdf_doc)