您當前的位置:首頁 > 攝影

Python操作PDF全總結|pdfplumber&PyPDF2

作者:由 程式設計師吾非同 發表于 攝影時間:2021-01-14

持續分享Python入門、案例、工具教程。

Python在自動化辦公方面有很多實用的第三方庫,可以很方便的處理word、excel、ppt、pdf檔案,今天我們就學習一下Python處理PDF文件的知識,Python處理pdf有很多第三方庫,這裡先給大家介紹最常用的兩個庫

「pdfplumber」

「pypdf2」

「pdfplumber:」

pdfplumber庫按頁處理 pdf ,獲取頁面文字,提取表格等操作。

學習文件:

https://

github。com/jsvine/pdfpl

umber

「pypdf2:」

PyPDF2 是一個純 Python PDF 庫,可以讀取文件資訊(標題,作者等)、寫入、分割、合併PDF文件,它還可以對pdf文件進行新增水印、加密解密等。

官方文件:

https://

pythonhosted。org/PyPDF2

安裝:

pip install pypdf2

pip install pdfplumber

pdfplumber

提取PDF文字

「提取單頁pdf文字」

# 提取pdf文字

import pdfplumber

with pdfplumber。open(“D:\\pdffiles\\Python編碼規範中文版。pdf”) as pdf:

page01 = pdf。pages[0] #指定頁碼

text = page01。extract_text()#提取文字

print(text)

Python操作PDF全總結|pdfplumber&PyPDF2

「提取所有頁pdf文字」

import pdfplumber

with pdfplumber。open(“D:\\pdffiles\\Python編碼規範中文版。pdf”) as pdf:

for page in pdf。pages:

text = page。extract_text()#提取文字

print(text)

「提取所有pdf文字並寫入文字中」

import pdfplumber

with pdfplumber。open(“D:\\pdffiles\\Python編碼規範中文版。pdf”) as pdf:

for page in pdf。pages:

text = page。extract_text()#提取文字

txt_file = open(“D:\\pdffiles\\Python編碼規範中文版。txt”,mode=‘a’,encoding=‘utf-8’)

txt_file。write(text)

Python操作PDF全總結|pdfplumber&PyPDF2

提取PDF表格

「提取表格」

# 提取pdf表格

import pdfplumber

with pdfplumber。open(“D:\\pdffiles\\人力資源部崗位編制。pdf”) as pdf:

page01 = pdf。pages[0] #指定頁碼

table1 = page01。extract_table()#提取單個表格

# table2 = page01。extract_tables()#提取多個表格

print(table1)

Python操作PDF全總結|pdfplumber&PyPDF2

「提取表格,儲存為excel檔案」

import pdfplumber

from openpyxl import Workbook #儲存表格,需要安裝openpyxl

with pdfplumber。open(“D:\\pdffiles\\人力資源部崗位編制。pdf”) as pdf:

page01 = pdf。pages[0]

table = page01。extract_table()

workbook = Workbook()

sheet = workbook。active

for row in table:

sheet。append(row)

workbook。save(filename=“D:\\pdffiles\\人力資源部崗位編制。xlsx”)

Python操作PDF全總結|pdfplumber&PyPDF2

PyPDF2

PyPDF2 中有兩個最常用的類:

PdfFileReader

PdfFileWriter

,分別用於讀取 PDF 和寫入 PDF。其中

PdfFileReader

傳入引數可以是一個開啟的檔案物件,也可以是表示檔案路徑的字串。而

PdfFileWriter

則必須傳入一個以寫方式開啟的檔案物件。

「PdfFileReader 物件的屬性和方法」

Python操作PDF全總結|pdfplumber&PyPDF2

「PdfFileWriter 物件的屬性和方法」

Python操作PDF全總結|pdfplumber&PyPDF2

分割PDF

from PyPDF2 import PdfFileReader, PdfFileWriter

file_reader = PdfFileReader(“D:\\pdffiles\\Python編碼規範中文版。pdf”)

# getNumPages() 獲取總頁數

for page in range(file_reader。getNumPages()):

# 例項化物件

file_writer = PdfFileWriter()

# 將遍歷的每一頁新增到例項化物件中

file_writer。addPage(file_reader。getPage(page))

with open(“D:\\pdffiles\\{}。pdf”。format(page),‘wb’) as out:

file_writer。write(out)

Python操作PDF全總結|pdfplumber&PyPDF2

合併PDF

將上述分割的pdf合併成一個檔案

「示例程式碼」

from PyPDF2 import PdfFileReader, PdfFileWriter

file_writer = PdfFileWriter()

for page in range(34):

# 迴圈讀取需要合併pdf檔案

file_reader = PdfFileReader(“D:\\pdffiles\\{}。pdf”。format(page))

# 遍歷每個pdf的每一頁

for page in range(file_reader。getNumPages()):

# 寫入例項化物件中

file_writer。addPage(file_reader。getPage(page))

with open(“D:\\pdffiles\\合併。pdf”,‘wb’) as out:

file_writer。write(out)

PDF旋轉

# 旋轉pdf,只能按照90度的倍數旋轉

from PyPDF2 import PdfFileReader, PdfFileWriter

file_reader = PdfFileReader(“D:\\pdffiles\\Python編碼規範中文版。pdf”)

file_writer = PdfFileWriter()

page = file_reader。getPage(0)。rotateClockwise(90) # 第1頁順時針旋轉90度

file_writer。addPage(page) # 寫入

page = file_reader。getPage(1)。rotateCounterClockwise(90) # 第2頁逆時針旋轉90度

file_writer。addPage(page) # 寫入

with open(“D:\\pdffiles\\旋轉。pdf”,‘wb’) as out:

file_writer。write(out)

PDF加密解密

「新增密碼」

from PyPDF2 import PdfFileReader, PdfFileWriter

file_reader = PdfFileReader(“D:\\pdffiles\\Python編碼規範中文版。pdf”)

file_writer = PdfFileWriter()

for page in range(file_reader。getNumPages()):

file_writer。addPage(file_reader。getPage(page))

file_writer。encrypt(‘123456’) # 設定密碼

with open(“D:\\pdffiles\\加密後。pdf”,‘wb’) as out:

file_writer。write(out)

開啟檔案,提示輸入密碼

Python操作PDF全總結|pdfplumber&PyPDF2

「解除密碼」

from PyPDF2 import PdfFileReader, PdfFileWriter

file_reader = PdfFileReader(“D:\\pdffiles\\加密後。pdf”)

file_reader。decrypt(‘123456’)

file_writer = PdfFileWriter()

for page in range(file_reader。getNumPages()):

file_writer。addPage(file_reader。getPage(page))

with open(“D:\\pdffiles\\解密後。pdf”,‘wb’) as out:

file_writer。write(out)

PDF新增水印

首先準備一個水印文件,可以用空白word新增圖片或者文字轉成pdf檔案。

Python操作PDF全總結|pdfplumber&PyPDF2

「示例程式碼」

# 新增水印

from PyPDF2 import PdfFileReader, PdfFileWriter

from copy import copy

sy = PdfFileReader(“D:\\pdffiles\\水印。pdf”)

mark_page = sy。getPage(0) # 水印所在的頁數

# 讀取新增水印的檔案

file_reader = PdfFileReader(“D:\\pdffiles\\Python編碼規範中文版。pdf”)

file_writer = PdfFileWriter()

for page in range(file_reader。getNumPages()):

# 讀取需要新增水印每一頁pdf

source_page = file_reader。getPage(page)

new_page = copy(mark_page) #

new_page。mergePage(source_page) # new_page(水印)在下面,source_page原文在上面

file_writer。addPage(new_page)

with open(“D:\\pdffiles\\新增水印後。pdf”,‘wb’) as out:

file_writer。write(out)

新增水印後的文件:

Python操作PDF全總結|pdfplumber&PyPDF2

如果覺得有用,歡迎點贊、轉發、收藏!

人生不止,學習不止,一路同行!

標簽: PDF  file  page  pdffiles  writer