Python操作PDF全總結|處理PDF文檔不得不知道的兩個庫

2021-02-13 吾非同

Python在自動化辦公方面有很多實用的第三方庫,可以很方便的處理word、excel、ppt、pdf文件,今天我們就學習一下Python處理PDF文檔的兩個常用庫「pdfplumber」「pypdf2」

「pdfplumber:」

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

學習文檔:https://github.com/jsvine/pdfplumber

「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)


「提取所有頁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)


提取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)



「提取表格,保存為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")


PyPDF2

PyPDF2 中有兩個最常用的類:PdfFileReader和PdfFileWriter,分別用於讀取 PDF 和寫入 PDF。其中PdfFileReader傳入參數可以是一個打開的文件對象,也可以是表示文件路徑的字符串。而PdfFileWriter則必須傳入一個以寫方式打開的文件對象。

「PdfFileReader 對象的屬性和方法」

「PdfFileWriter 對象的屬性和方法」

分割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)


合併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)

打開文件,提示輸入密碼

「解除密碼」

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文件。

「示例代碼」

# 添加水印
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)

添加水印後的文檔:

案例中用到的文檔我已經打包,關注公眾號,回復「pdf」獲取。

相關焦點

  • Python 操作 PDF,這兩個庫必須會!
    Python在自動化辦公方面有很多實用的第三方庫,可以很方便的處理word、excel、ppt、pdf文件今天我們就學習一下Python處理PDF文檔的兩個常用庫「pdfplumber」、>「pypdf2」pdfplumber庫按頁處理 pdf ,獲取頁面文字,提取表格等操作文檔:https://github.com/jsvine/pdfplumberPyPDF2 是一個純 Python PDF
  • python用PyPDF2庫解決pdf合併拆分問題
    pdf拆分合併是現在辦公中比較常用的功能,它能省去辦公中許多不必要的麻煩。PyPDF是一個處理PDF的庫,今天就用它實戰操作一番,完成拆分合併PDF。pdf拆分合併專業戶PyPDF2庫還是先對PyPDF2庫簡單介紹一下,PyPDF2是一個純python的PDF庫,能夠拆分、合併、裁剪和轉換
  • 【Python基礎】python使用PyPDF2和pdfplumber操作pdf
    1、PyPDF2和pdfplumber庫介紹PyPDF2官網:PyPDF2官網 ,可以更好的讀取、寫入、分割、合併PDF文件;pdfplumber官網:pdfplumber官網,可以更好地讀取PDF文件內容和提取PDF中的表格;這兩個庫不屬於python標準庫,都需要單獨安裝;2、python提取PDF文字內容1)利用pdfplumber提取文字
  • 一個函數實現PDF文檔合併與拆分
    最近小編一直使用的pymupdf庫真的是一個寶藏庫,各種有關PDF的操作,只要你想得到,沒有它做不到。這不,最近小編需要合併一些PDF文檔,果真有合適的函數。二、合併文檔目的:將兩個文檔合併為一個新的文檔。
  • python使用PyPDF2和pdfplumber操作pdf
    1、PyPDF2和pdfplumber庫介紹PyPDF2官網:PyPDF2官網 ,可以更好的讀取、寫入、分割、合併PDF文件;pdfplumber官網:pdfplumber官網,可以更好地讀取PDF文件內容和提取PDF中的表格;這兩個庫不屬於python標準庫,都需要單獨安裝;2、python提取PDF文字內容1)利用pdfplumber提取文字
  • PDF轉EXCEL,python的這個技能知道嗎?
    1.使用的庫簡單介紹一下要使用的庫:pdfplumber 和xlwt1.pdfplumberpdfplumber使用來解析pdf的文字與表格。python辦公自動化——PDF轉Word所使用的pdfminer庫類似,都是從pdf裡面提取信息。
  • Python 操作 PDF 的幾種方法
    來源 | 早起Python(ID:zaoqi-python),並沒有太多講解原理,其中涉及的就是 PDF 處理很實用的模塊 PyPDF2 ,本文就好好剖析一下這個模塊,主要將涉及os 模塊綜合應用glob 模塊綜合應用PyPDF2 模塊操作
  • Python實現一鍵翻譯英文論文,實現了pdf文檔英譯漢,pdf格式不變
    支持谷歌、必應、有道的免費翻譯接口,基於Django、PyMuPDF實現了pdf文檔英譯漢的功能,翻譯後的pdf格式基本保持不變,可以下載docx和pdf格式的翻譯文檔,基本解決複製caj中文論文時的格式問題,簡單的滿足看論文以及寫總結的需求。
  • python自動化辦公系列 | python操作pdf—— PyPDF2 和 pdfplumber模塊(2)
    第一個的系統化的分享專題——python辦公自動化。代碼後面的#所表示的是注釋,對本行代碼進行解釋的內容,用#號開頭是讓程序理解這是注釋不需要運行的意思。本模板旨在分享和解讀完整代碼,只要你有安裝配置好python環境,在pycharm裡安裝相應的第三方文件庫,黏貼代碼即可運行,我會儘量在代碼後面都進行標註解讀。我們以實用型為目的學習。編程類學習,從模仿中掌握突破。
  • Python 辦公自動化之 PDF 的詳細操作
    相關介紹Python 操作 PDF 會用到兩個庫,分別是:PyPDF2 和 pdfplumber其中 PyPDF2 可以更好的讀取、寫入、分割、合併PDF文件,而 pdfplumber 可以更好的讀取 PDF 文件中內容和提取
  • 用python這個第三方庫、幫你輕鬆搞定pdf收費功能
    我是風一; 眾所周知、pdf文件很多功能都是需要會員才可以操作的:比如將pdf文件轉換為word文件、又比如將pdf文本內容導出、亦或將pdf表格內容導入excel文件等等,這些都是人民幣玩家才可以輕易實現的;這個時候、就到了我們的python登場了,無需會員、也能便捷的實現以上的功能;只需要你會 pdfplumber 這個第三方庫:他可以按頁處理pdf文件,獲取頁面文字,提取表格等;那麼就開始我們這個第三方庫的學習
  • pdf文檔解析之pdfbox
    同樣python-pdfbox是基於PDFBox封裝python庫,本文主要介紹pdfbox安裝、使用等。以Ubuntu為例,其他系統可自行查找:sudo apt install openjdk-8-jdk-headlesspip install python-pdfboximport pdfboxp = pdfbox.PDFBox
  • 利用python自動為PDF添加書籤目錄
    本次給大家介紹一個用於處理PDF文檔的python包——PyPDF2。
  • 教你用Python 操作 PDF 的幾種方法
    來源 | 早起Python(ID:zaoqi-python)01前言
  • 利用Python將PDF文檔轉為MP3音頻
    去Github查了下,這個庫叫:pyttsx3簡單來說,pyttsx3可以文字轉語音,且是離線工作的,這一點就很實用。Python中操作PDF的工具庫主要是PyPDF2,但發現編碼實在有點繁瑣,我就換了另一個庫pdfplumber,與PyPDF2語法類似,用起來還算流暢。pdfplumber可以處理PDF包括文本、表格、格式在內的各種信息,小而強大。
  • pdfplumber、pypdf2 常用方法總結
    這兩天學習了一些處理 PDF 文檔的方法,網上查找資料的過程中發現很多處理 PDF 文件的庫,多方嘗試後推薦兩個比較好用的。
  • python必備書籍pdf下載
    7013Python庫參考手冊.pdf"7014Python精要參考(第二版)_翻譯.pdf"7015Python技術手冊(第2版).pdf"連結: 7016python基礎教程(第二版).pdf"7017 "python核心筆記.pdf"7018 "Python高級編程.pdf"本書基於Python 3.5版本進行講解,通過13
  • PDF文檔怎麼轉換成excel格式?教你兩個把PDF轉excel的方法
    PDF文檔格式不容易修改,因此很多人在預覽或傳遞excel文檔時會將其轉換成PDF格式。這樣下來傳遞和預覽是方便了,但是接收方卻要開始犯難了,想要編輯文件但卻又無從下手。那這時該怎麼去處理,放任不管嗎?
  • 如何利用Python將PDF文檔轉為MP3音頻
    去Github查了下,這個庫叫:pyttsx3簡單來說,pyttsx3可以文字轉語音,且是離線工作的,這一點就很實用。Python中操作PDF的工具庫主要是PyPDF2,但發現編碼實在有點繁瑣,我就換了另一個庫pdfplumber,與PyPDF2語法類似,用起來還算流暢。pdfplumber可以處理PDF包括文本、表格、格式在內的各種信息,小而強大。
  • 用手機pdf怎麼轉換成word文檔?APP可以轉換pdf為word嗎?
    用手機pdf怎麼轉換成word文檔?把pdf格式文件轉換成為word,是日常文件處理操作之一。使用迅捷PDF轉換器APP,在手機上就能實現格式轉換pdf為word哦。繼續往下看,下面分享了手機轉pdf為word的方法步驟,有需要的小夥伴別錯過了哦。