PyPDF2详解

PyPDF2详解工作中可能会涉及处理pdf文件,PyPDF2就是这样一个库,使用它可以轻松的处理pdf文件,它提供了读、写、分割、合并、文件转换等多种操作。官方地址:http://mstamy2.github.io/PyPDF2/安装1.RPM式系统(Redhat、CentOS)1pipinstallpypdf22.DEB式系统(Deb…

大家好,又见面了,我是你们的朋友全栈君。

工作中可能会涉及处理pdf文件,PyPDF2就是这样一个库, 使用它可以轻松的处理pdf文件,它提供了读、写、分割、合并、文件转换等多种操作。官方地址:http://mstamy2.github.io/PyPDF2/

安装

1. RPM式系统(Redhat、CentOS)

1
pip 
install 
pypdf2

2. DEB式系统(Debian、Ubuntu)以下任一

1
2
pip 
install 
pypdf2
apt 
install 
python-pypdf2

3. Windows

1
pip 
install 
pypdf2

使用

PyPDF2 包含了 PdfFileReader PdfFileMerger PageObject PdfFileWriter 四个常用的主要 Class。

简单读写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from 
PyPDF2 
import 
PdfFileReader, PdfFileWriter
readFile 
= 
'read.pdf'
writeFile 
= 
'write.pdf'
# 获取一个 PdfFileReader 对象
pdfReader 
= 
PdfFileReader(
open
(readFile, 
'rb'
))
# 获取 PDF 的页数
pageCount 
= 
pdfReader.getNumPages()
print
(pageCount)
# 返回一个 PageObject
page 
= 
pdfReader.getPage(i)
# 获取一个 PdfFileWriter 对象
pdfWriter 
= 
PdfFileWriter()
# 将一个 PageObject 加入到 PdfFileWriter 中
pdfWriter.addPage(page)
# 输出到文件中
pdfWriter.write(
open
(writeFile, 
'wb'
))

 

合并分割 PDF

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from 
PyPDF2 
import 
PdfFileReader, PdfFileWriter
def 
split_pdf(infn, outfn):
    
pdf_output 
= 
PdfFileWriter()
    
pdf_input 
= 
PdfFileReader(
open
(infn, 
'rb'
))
    
# 获取 pdf 共用多少页
    
page_count 
= 
pdf_input.getNumPages()
    
print
(page_count)
    
# 将 pdf 第五页之后的页面,输出到一个新的文件
    
for 

in 
range
(
5
, page_count):
        
pdf_output.addPage(pdf_input.getPage(i))
    
pdf_output.write(
open
(outfn, 
'wb'
))
def 
merge_pdf(infnList, outfn):
    
pdf_output 
= 
PdfFileWriter()
    
for 
infn 
in 
infnList:
        
pdf_input 
= 
PdfFileReader(
open
(infn, 
'rb'
))
        
# 获取 pdf 共用多少页
        
page_count 
= 
pdf_input.getNumPages()
        
print
(page_count)
        
for 

in 
range
(page_count):
            
pdf_output.addPage(pdf_input.getPage(i))
    
pdf_output.write(
open
(outfn, 
'wb'
))
if 
__name__ 
=
= 
'__main__'
:
    
infn 
= 
'infn.pdf'
    
outfn 
= 
'outfn.pdf'
    
split_pdf(infn, outfn)

其他命令

如果是要修改一个已有的 pdf 文件,可以将 reader 的页面添加到 writer 中:

pdfWriter.appendPagesFromReader(reader)

添加书签:

pdfWriter.addBookmark(title, pagenum, parent=parent)

转载于:https://www.cnblogs.com/pyxiaomangshe/p/7918839.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152385.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android跳转到相册需要权限,Android打开相册获取图片路径[通俗易懂]

    android跳转到相册需要权限,Android打开相册获取图片路径[通俗易懂]一.获得图片路径当我们通过Intent打开相册,获取图片后,在onActivityResult回调中会得到图片的Uri。但是Uri无法直接获得图片的路径。如果你曾经直接操作过android里的数据库的话,应该明白,Uri可以通过ContentResolver获得数据库表里的数据。例如:content://com.android.providers.media.documents/document/…

    2022年9月22日
    6
  • 世界一级行政区划图_世界行政区划图册

    世界一级行政区划图_世界行政区划图册序号 国家 省 城市 8168 波兰 下西里西亚省   8169 波兰 下西里西亚省 下布热格 8170 波兰 下西里西亚省 佩希采 8171 波兰 下西里西亚省 克沃兹科 8172 波兰 下西里西亚省 兹戈热莱茨 8173 波兰 下西里西亚省 兹沃托雷亚 8174 波兰 下西里西亚省 博莱斯瓦维茨 8175 波兰 下西里

    2022年9月29日
    4
  • cmd从c盘切换到d盘_cmd怎样切换到d盘

    cmd从c盘切换到d盘_cmd怎样切换到d盘1、按WIN+R键打开运行,输入cmd并回车;2、默认路径为用户文档路径,如果想要切换到C盘中的某个文件夹,比如AppData,可以执行命令cdAppData;3、但如果想切换到D盘,输入cd

    2022年8月2日
    16
  • centos安装mysql客户端安装_CENTOS安装MYSQL

    centos安装mysql客户端安装_CENTOS安装MYSQL1[root@localhost~]#yuminstallmysql-server注意:此处错误提示为安装失败。原因:CentOS7自带有MariaDB而不是MySQL,MariaDB和MySQL一样也是开元的数据库解决方案:如果必须要安装MySQL,首先必须添加mysql社区repo通过输入命令:sudorpm-Uvhhttp://dev.mysql.com/get/mysql-c…

    2022年6月26日
    28
  • 是否可以将频谱分析仪当做网络分析仪使用?[通俗易懂]

    是否可以将频谱分析仪当做网络分析仪使用?[通俗易懂]PSD测量值通常以Vrms2/Hz或Vrms/rtHz为单位(这里的rtHz指的是平方根赫兹)。或者,PSD也可以采用dBm/Hz为单位。PSA、ESA、856XE/EC或859XE等频谱分析仪均可通过噪声标记对功率谱密度进行测量。矢量信号分析仪比如89600S或89400,直接就有PSD测量数据类型。 在频谱分析仪上最简便的测量方法(测量结果以Vrms/rtHz为单位)就是: 在振幅菜单中选择以伏特为单位的振幅(AMPLITUDE[硬键]>More>YAxis

    2022年8月11日
    5
  • 面试被问selenium自动化模型,你了解多少?

    面试被问selenium自动化模型,你了解多少?

    2021年5月24日
    144

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号