python pdf获取页面大小(高度、宽度)

本文介绍了如何使用Python的pdfplumber和PyPDF2库获取PDF页面的高度和宽度。针对PDF首页,提供了两种解决方案,并提到pdfplumber方法虽然简单但效率较低,而PyPDF2方法效率高但需要处理可能的加密问题。
部署运行你感兴趣的模型镜像

问题描述

如题,获取PDF页面的高度和宽度,这里仅获取首页的高度和宽度

解决方案

两种解决方案,分别通过 pdfplumber 和 PyPDF2 两个包来实现

方案1
import time
import pdfplumber

path = 'E:/data/DT_test/PDF_test/all_type.pdf'

def run(path):
    with pdfplumber.open(path) as pdf:
        page_1 = pdf.pages[0]
        return page_1.height, page_1.width 
    
start = time.time()
height, width = run(path)
print('height: %s, width: %s'%(height, width)) #height: 841.920, width: 595.200
print('cost time:', time.time()-start) #cost time: 0.07300710678100586
方案2
import time
from PyPDF2 import PdfFileReader

path = 'E:/data/DT_test/PDF_test/all_type.pdf'

def run(path):
    pdf = PdfFileReader(open(path, 'rb'))
    page_1 = pdf.getPage(0)
    if page_1.get('/Rotate', 0) in [90, 270]:
        return page_1['/MediaBox'][2], page_1['/MediaBox'][3]
    else:
        return page_1['/MediaBox'][3], page_1['/MediaBox'][2]

start = time.time()
height, width = run(path)
print('height: %s, width: %s'%(height, width)) #height: 841.92, width: 595.2
print('cost time:', time.time()-start) #cost time: 0.007000923156738281

通过 PyPDF2 解析PDF文档可能会遇到文件加密无法解析的情况,可通过 pdf.isEncrypted 判断文件是否加密,加密为True,未加密为False,加密文件可通过以下命令先解密再提取

qpdf --decrypt file_path new_file_path

结论

暂且找到这两种提取方法,pdfplumber方法简单,但效率低,文件越大耗时越大;PyPDF2 方法稍显复杂,但效率较高,文件增大对提取时间影响不大。

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值