最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python使用PyPDF2 和 pdfplumber操作PDF文件

 更新時間:2025年01月05日 09:32:32   作者:禿了也弱了。  
本文主要介紹了Python中用于操作PDF的兩個庫:PyPDF2和pdfplumber,下面就來具體介紹一下兩個庫的使用方法,具有一定的參考價值,感興趣的可以了解一下

一、第三方庫介紹

Python 操作 PDF 會用到兩個庫,分別是:PyPDF2 和 pdfplumber。

PyPDF2 可以更好的讀取、寫入、分割、合并PDF文件;
pdfplumber 可以更好的讀取 PDF 文件中內(nèi)容和提取 PDF 中的表格,主要應(yīng)用于機(jī)器生成的PDF,而非掃描的PDF文檔。

對應(yīng)的官網(wǎng)分別是:

PyPDF2:https://pythonhosted.org/PyPDF2/

pdfplumber:https://github.com/jsvine/pdfplumber

由于這兩個庫都不是 Python 的標(biāo)準(zhǔn)庫,所以在使用之前都需要單獨安裝,在終端中依次輸入如下命令進(jìn)行安裝:
pip install PyPDF2pip install pdfplumber

二、基本使用

1、拆分pdf

拆分的大概思路如下:
讀取 PDF 的整體信息、總頁數(shù)等
按照頁數(shù)每頁拆分為一個PDF
將小的文件塊重新保存為新的 PDF 文件

import os.path
from PyPDF2 import PdfFileReader, PdfFileWriter

pdf_path = r"D:\自動化\pdf.pdf"
out_dir = r"D:\自動化\pdf\拆分"

if not os.path.exists(out_dir):
	os.makedirs(out_dir)
	
# 獲取 PdfFileReader 對象
pdf_reader = PdfFileReader(pdf_path)

# 獲取 pdf 文件頁數(shù)
pageCount = pdf_reader.getNumPages()
for page in range(pageCount):
	pdf_writer = PdfFileWriter()
	pdf_writer.addPage(pdf_reader.getPage(page))
	out_path = out_dir + "\\%s.pdf" % page
	with open(out_path, "wb") as out:
		pdf_writer.write(out)
import os
from PyPDF2 import PdfFileWriter, PdfFileReader

"""
	拆分PDF為多個小的PDF文件,
	@param filename:拆分后的文件名
	@param filepath:文件路徑
	@param save_dir:保存小的PDF的文件路徑
	@param step: 每step間隔的頁面生成一個文件,例如step=3,表示0-2頁、2-5頁...為一個文件
	@return:
"""
def 拆分PDF(file_name, file_path, save_dir, step=3):
	if not os.path.exists(save_dir):
		os.mkdir(save_dir)

	if step < 1:
		print("輸入的拆分間隔不能小于1")
		return

	pdf_reader = PdfFileReader(file_path)
	# 獲取文件總頁數(shù)
	pageCount = pdf_reader.getNumPages()
	# 讀取每一頁的數(shù)據(jù)
	for page in range(0, pageCount, step):
		pdf_writer = PdfFileWriter()
		# 拆分pdf,每 step 頁的拆分成一個文件
		for index in range(page, page + step):
			if index < pageCount:
				pdf_writer.addPage(pdf_reader.getPage(index))
		# 保存拆分后的小文件
		childName = '%s%s.pdf' % (file_name, int(page / step) + 1)
		save_path = os.path.join(save_dir, childName)
		print(save_path)
		with open(save_path, "wb") as out:
			pdf_writer.write(out)
	print("文件已成功拆分,保存路徑為:" + save_dir)

if __name__ == '__main__':
	拆分PDF('拆分PDF', 'D:\自動化\pdf\二期第1講.pdf', 'D:\自動化\pdf\拆分2', 4)

2、合并pdf

比起拆分來,合并的思路更加簡單:
確定要合并的 文件順序
循環(huán)追加到一個文件塊中
保存成一個新的文件

from PyPDF2 import PdfFileReader, PdfFileWriter
import os

pdf_dir = r"D:\自動化\pdf\拆分"
out_path = r"D:\自動化\pdf\merge.pdf"

pdfList = os.listdir(pdf_dir)
pdf_writer = PdfFileWriter()
for i in range(len(pdfList)):
	path = pdf_dir + "\\%s.pdf" % i
	pdf_reader = PdfFileReader(path)
	for page in range(pdf_reader.getNumPages()):
		pdf_writer.addPage(pdf_reader.getPage(page))

with open(out_path, "wb") as out:
	pdf_writer.write(out)

3、提取文字內(nèi)容

import pdfplumber

pdf_path = r"D:\自動化\pdf\道德經(jīng).pdf"
with pdfplumber.open(pdf_path) as pdf:
	# 讀取所有內(nèi)容
	for page in pdf.pages:
		print(page.extract_text())

# 讀取第一頁的文字內(nèi)容
# page = pdf.pages[0]
# print(page.extract_text())

4、提取表格內(nèi)容

extract_table():獲取page頁的第一個表格數(shù)據(jù),表格數(shù)據(jù)為一個二維列表
extract_tables():獲取page頁的所有表格數(shù)據(jù),表格數(shù)據(jù)為一個三維列表

import pdfplumber
pdf_path = r"D:\自動化\pdf\道德經(jīng).pdf"
with pdfplumber.open(pdf_path) as pdf:
	# 獲取第2頁數(shù)據(jù)
	page = pdf.pages[1]
	# 獲取第2頁的第一個表格的內(nèi)容
	table = page.extract_table()
	print(type(table), table)
	
	# 獲取第2頁所有表格的內(nèi)容
	tables = page.extract_tables()
	print(type(tables), tables)

5、PDF加密

PDF 文件加密需要使用 encrypt 函數(shù),對應(yīng)的加密代碼也比較簡單:

from PyPDF2 import PdfFileReader, PdfFileWriter

pdf_path = r"D:\自動化\pdf\道德經(jīng).pdf"
sava_path = r"D:\自動化\pdf\加密后.pdf"

pdf_reader = PdfFileReader(pdf_path)
pdf_writer = PdfFileWriter()
for page in range(pdf_reader.getNumPages()):
	pdf_writer.addPage(pdf_reader.getPage(page))

# 添加密碼
pdf_writer.encrypt("mima")

with open(sava_path, "wb") as out:
	pdf_writer.write(out)

6、PDF解密

PDF 文件加密需要使用 encrypt 函數(shù),解密則是使用decrypt 函數(shù),代碼如下:

from PyPDF2 import PdfFileReader, PdfFileWriter

pdf_path = r"D:\自動化\pdf\加密后.pdf"
sava_path = r"D:\自動化\pdf\解密后.pdf"

pdf_reader = PdfFileReader(pdf_path)

# 利用密碼解密
pdf_reader.decrypt('mima')
pdf_writer = PdfFileWriter()
for page in range(pdf_reader.getNumPages()):
	pdf_writer.addPage(pdf_reader.getPage(page))
with open(sava_path, "wb") as out:
	pdf_writer.write(out)

到此這篇關(guān)于python使用PyPDF2 和 pdfplumber操作PDF文件的文章就介紹到這了,更多相關(guān)PyPDF2 和 pdfplumber操作PDF內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Python安裝模塊的常見問題及解決方法

    Python安裝模塊的常見問題及解決方法

    下面小編就為大家分享一篇Python安裝模塊的常見問題及解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Python之兩種模式的生產(chǎn)者消費者模型詳解

    Python之兩種模式的生產(chǎn)者消費者模型詳解

    今天小編就為大家分享一篇Python之兩種模式的生產(chǎn)者消費者模型詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Mysql數(shù)據(jù)庫反向生成Django里面的models指令方式

    Mysql數(shù)據(jù)庫反向生成Django里面的models指令方式

    這篇文章主要介紹了Mysql數(shù)據(jù)庫反向生成Django里面的models指令方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Django中URL視圖函數(shù)的一些高級概念介紹

    Django中URL視圖函數(shù)的一些高級概念介紹

    這篇文章主要介紹了Django中URL視圖函數(shù)的一些高級概念,Django是Python重多人氣框架中最為著名的一個,需要的朋友可以參考下
    2015-07-07
  • 深入了解Python的繼承

    深入了解Python的繼承

    這篇文章主要為大家介紹了Python 繼承,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • python通過pil為png圖片填充上背景顏色的方法

    python通過pil為png圖片填充上背景顏色的方法

    這篇文章主要介紹了python通過pil為png圖片填充上背景顏色的方法,實例分析了Python使用pil模塊操作png圖片的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-03-03
  • Python?Pandas中布爾索引的用法詳解

    Python?Pandas中布爾索引的用法詳解

    布爾索引是一種使用?DataFrame?中數(shù)據(jù)的實際值的索引。本文將通過一些示例為大家詳細(xì)講講Python中布爾索引的用法,需要的可以參考一下
    2022-08-08
  • python中的測試框架

    python中的測試框架

    這篇文章主要介紹了python中測試框架的相關(guān)資料,幫助大家更好的理解和使用python進(jìn)行測試,感興趣的朋友可以了解下
    2020-11-11
  • 使用python寫一個自動瀏覽文章的腳本實例

    使用python寫一個自動瀏覽文章的腳本實例

    今天小編就為大家分享一篇使用python寫一個自動瀏覽文章的腳本實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python實現(xiàn)將pdf文檔保存成圖片格式

    Python實現(xiàn)將pdf文檔保存成圖片格式

    有時候我們會碰到只支持圖片上傳的場景,如何編程快速將pdf轉(zhuǎn)成圖片呢?可以使用 Python 的 pdf2image 庫僅10行代碼就能將 PDF 文檔保存為圖片格式,所以本文給大家介紹了如何使用Python實現(xiàn)將pdf文檔保存成圖片格式,需要的朋友可以參考下
    2024-10-10

最新評論

大足县| 济南市| 冀州市| 罗城| 铜梁县| 集安市| 改则县| 龙海市| 苍溪县| 稷山县| 宜丰县| 长沙市| 文昌市| 卓尼县| 南投县| 河东区| 武强县| 台湾省| 娱乐| 淳安县| 玉环县| 宁化县| 东兰县| 云安县| 广德县| 彝良县| 贺州市| 长汀县| 嘉峪关市| 贡嘎县| 柳江县| 平陆县| 元阳县| 武胜县| 江山市| 临潭县| 瓦房店市| 射阳县| 靖边县| 松滋市| 延长县|