python读写pdf_Python读写PDF
PDF的基本操作主要是读取、创建,合并等操作。使用Python的第三方包PyPDF2.读写合并PDF文件变得非常简单。本文最后给出PDF合并的程序,供参考使用。
欢迎关注我的个人公众号:数学编程,以及
安装依赖包
使用Python的pip进行安装,安装包名称大小写不敏感。
pip install PyPDF2
查看基本的类和方法
进入包的__init__.py文件可以看到主要的几个类和方法
from .pdf import PdfFileReader, PdfFileWriter
from .merger import PdfFileMerger
from .pagerange import PageRange, parse_filename_page_ranges
from ._version import __version__
__all__ = ["pdf", "PdfFileMerger"]
从名称上可以看出提供了基本的操作方法,分别是读取,写入和合并,其中合并可以认为是读取然后 再写入的操作。
读取和写入PDF
读取PDF非常简单,直接使用PdfFileReader这个类,先来看看这个类的参数
class PdfFileReader(object):
"""
Initializes a PdfFileReader object. This operation can take some time, as
the PDF stream's cross-reference tables are read into memory.
:param stream: A File object or an object that supports the standard read
and seek methods similar to a File object. Could also be a
string representing a path to a PDF file.
:param bool strict: Determines whether user should be warned of all
problems and also causes some correctable problems to be fatal.
Defaults to ``True``.
:param warndest: Destination for logging warnings (defaults to
``sys.stderr``).
:param bool overwriteWarnings: Determines whether to override Python's
``warnings.py`` module with a custom implementation (defaults to
``True``).
"""
def __init__(self, stream, strict=True, warndest = None, overwriteWarnings = True):
其中必须传入的参数是stream,文件流而不是文件名称。 而PDF的创建不需要传入参数。
from PyPDF2 import PdfFileReader, PdfFileWriter
infn = 'infn.pdf'
outfn = 'outfn.pdf'
# 获取一个 PdfFileReader 对象
pdf_input = PdfFileReader(open(infn, 'rb'))
# 获取 PDF 的页数
page_count = pdf_input.getNumPages()
print(page_count)
# 返回一个 PageObject
page = pdf_input.getPage(i)
# 获取一个 PdfFileWriter 对象
pdf_output = PdfFileWriter()
# 将一个 PageObject 加入到 PdfFileWriter 中
pdf_output.addPage(page)
# 输出到文件中
pdf_output.write(open(outfn, 'wb'))
合并多个PDF
合并多个PDF就读取多个文件,然后写入一个文件中。不过这样需要计算页面数,不如直接用PdfFileMerger,提供了append方法
from PyPDF2 import PdfFileReader, PdfFileMerger
def read_pdf(pdf_name):
stream = open(pdf_name, "rb")
reader = None
try:
reader = PdfFileReader(stream)
except Exception as e:
print(e)
return reader
def merge_pdf(pdfs, output_name = "merge.pdf"):
merge = PdfFileMerger()
for pdf_name in pdfs:
pdf_obj = read_pdf(pdf_name)
print("开始合并 《%s》 页面数: %s" % (pdf_name, pdf_obj.getNumPages()))
merge.append(pdf_obj)
merge.write(open(output_name, "wb"))
print("合并后总页面数:", merge.id_count)
print("写入当前目录", output_name)
if __name__ == '__main__':
pdfs = [
"file1.pdf", "file2.pdf", "file3.pdf"
]
merge_pdf(pdfs)
输出结果:
开始合并 《file1.pdf》 页面数: 28
开始合并 《file2.pdf》 页面数: 34
开始合并 《file3.pdf》 页面数: 38
合并后总页面数: 100
写入当前目录 merge.pdf
总结
PDF文件的合并是很常用的操作,Python在处理PDF文件方面非常简单,主要原因是别人已经封装好了包,只需要简单的调用就能满足基本需求。文章的最后给出了一个简单合并多个PDF的程序用例,供参考使用。
python读写pdf_Python读写PDF相关推荐
- python filetype pdf_Python整合pdf【新手必学】
在下载课件时往往会分成很多个小的pdf,一个也就几页,想要整合成一整个大pdf,于是百度了一下,网上有很多在线的pdf整合器,但是由于这蛋疼的网速,流量还要花钱,还是想要本地搞. 说python是万能 ...
- io python 读取pdf_Python读取PDF文件--pdfminer
作者使用的是Python3.6版本. pdfminer在Python2和Python3中的安装和使用有一定的区别,本文以Python为例. 首先安装pdfminer pip install pdfmi ...
- python数据处理pdf_Python数据处理pdf (中文版带书签)、原书代码、数据集
原博文 2018-08-08 16:02 − Python数据处理 前言 xiii第1 章 Python 简介 11.1 为什么选择Python 41.2 开始使用Python 41.2.1 Pyth ...
- python txt文件读写(追加、覆盖)
python txt文件读写(追加.覆盖) 读取文件每一行 # 读取文件每一行 with open(r"C:\Users\xiahuadong\Desktop\数字人代码\文件行数.txt& ...
- 以下不是python文件读写方法的是-使用Python进行二进制文件读写的简单方法(推荐)...
总的感觉,python本身并没有对二进制进行支持,不过提供了一个模块来弥补,就是struct模块. python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据 ...
- python写文件读文件-Python 实例:读写文件
原标题:Python 实例:读写文件 读写文件是最常见的IO操作.内置了读写文件的函数,用法和的读写文件非常类似.在磁盘上读写文件的功能都是由提供的,现代不允许普通的程序直接操作磁盘,所以,读写文件就 ...
- Python使用openpyxl读写excel文件
Python使用openpyxl读写excel文件 Python使用openpyxl读取excel文件中数据 Python使用openpyxl往excel文件中写入数据 Python使用openpyx ...
- python 二进制文件_使用Python进行二进制文件读写的简单方法(推荐)
总的感觉,python本身并没有对二进制进行支持,不过提供了一个模块来弥补,就是struct模块. python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据 ...
- excel python插件_利用 Python 插件 xlwings 读写 Excel
Python 通过 xlwings 读取 Excel 数据 去年底公司让我做设备管理,多次委婉拒绝,最终还是做了.其实我比较喜欢技术.做管理后发现现场没有停机率统计,而原始数据有,每次要自己在Exce ...
- python 读取geotiff_科学网—利用python GDAL库读写geotiff格式的遥感影像方法 - 张伟的博文...
(1)利用python GDAL库读写geotiff格式的遥感影像方法,具有很好的参考价值,不错! from osgeo import gdal import numpy as np def read ...
最新文章
- 看看人家 SpringBoot 的全局异常处理,多么优雅...
- linux shell 判断文件 修改时间和系统时间差
- python基础05
- 程序员下班后收到工作信息怎么办?
- vue图片压缩不失真_图片压缩会失真?快试试这几个无损压缩神器。
- 关于黑名单和白名单的一些思考
- linux系统下安装和配置redis(2021版)
- (14)FPGA面试题线与逻辑
- 深入浅出Docker(四):Docker的集成测试部署之道
- html 文本框 获取焦点事件,JS的文本输入框获得焦点与失去焦点的事件
- Python3 字节码详解
- 简单三个步骤网站建设
- 手机怎么识别图片上的文字
- minui点击分页控件后滚动条置顶
- 了解Nape 2d物理引擎 第一天
- python 恶搞(仿粽子写的)
- 桌面文件夹不见了怎么恢复?4招教你找回消失的文件夹
- C++ Cstring类型使用
- win10 + Ubuntu 20.04 LTS 双系统安装 (UEFI + GPT)(图文,多图预警)
- 如何快捷得去除代码中的行号?