Python 操作 PDF,這兩個庫必須會!

2021-03-02 AirPython

Python在自動化辦公方面有很多實用的第三方庫,可以很方便的處理word、excel、ppt、pdf文件

今天我們就學習一下Python處理PDF文檔的兩個常用庫「pdfplumber」「pypdf2」

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

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

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)

添加水印後的文檔:


🧐分享、點讚、在看,給個三連擊唄!

相關焦點

  • Python操作PDF全總結|處理PDF文檔不得不知道的兩個庫
    Python在自動化辦公方面有很多實用的第三方庫,可以很方便的處理word、excel、ppt、pdf文件,今天我們就學習一下Python處理PDF文檔的兩個常用庫「pdfplumber」、「pypdf2」。
  • 【Python基礎】python使用PyPDF2和pdfplumber操作pdf
    1、PyPDF2和pdfplumber庫介紹PyPDF2官網:PyPDF2官網 ,可以更好的讀取、寫入、分割、合併PDF文件;pdfplumber官網:pdfplumber官網,可以更好地讀取PDF文件內容和提取PDF中的表格;這兩個庫不屬於python標準庫,都需要單獨安裝;2、python提取PDF文字內容1)利用pdfplumber提取文字
  • python用PyPDF2庫解決pdf合併拆分問題
    pdf拆分合併是現在辦公中比較常用的功能,它能省去辦公中許多不必要的麻煩。PyPDF是一個處理PDF的庫,今天就用它實戰操作一番,完成拆分合併PDF。pdf拆分合併專業戶PyPDF2庫還是先對PyPDF2庫簡單介紹一下,PyPDF2是一個純python的PDF庫,能夠拆分、合併、裁剪和轉換
  • PDF轉EXCEL,python的這個技能知道嗎?
    當在pdf上看到自己想用的表格,卻無法將其複製下來的時候,只能默默地打開excel對照著pdf表格的形式敲打出來,既費時又費力!這裡介紹如何用python程序將pdf上的表格自動轉化為excel表!1.使用的庫簡單介紹一下要使用的庫:pdfplumber 和xlwt1.pdfplumberpdfplumber使用來解析pdf的文字與表格。
  • Python 操作 PDF 的幾種方法
    來源 | 早起Python(ID:zaoqi-python)PdfFileWriter這裡導入了兩個方法:PdfFileReader 可以理解為讀取器PdfFileWriter 可以理解為寫入器接下來通過幾個案例進一步認識這兩個工具的奇妙之處,用到的示例文件是5個發票的 pdf
  • 教你用Python 操作 PDF 的幾種方法
    來源 | 早起Python(ID:zaoqi-python)01前言
  • python必備書籍pdf下載
    如果你是熟悉一兩門語言、想要快速掌握Python的程式設計師,可以大致瀏覽前幾章,然後直接跳到10章學習Python標準庫。即使你已經是一名專家,也可以在後面的10個項目中找到值得參考之處。7013Python庫參考手冊.pdf"7014Python精要參考(第二版)_翻譯.pdf"7015Python技術手冊(第2版).pdf"連結: 7016python基礎教程(第二版).pdf"
  • python自動化辦公手冊之python操作PPT
    基於此,我花了整整一周時間真理出來的python自動化文檔手冊,涉及到五個章節(如下圖所示),① python使用openpyxl操作excel;② python使用PyPDF2和pdfplumber操作pdf;③ python使用python-docx操作word;④ python使用python-pptx操作PPT;⑤ python如何自動收發郵件;⑥ python製作電話號碼歸屬地查詢工具。
  • Python自動化辦公(內容)
    python自動化辦公(python操作Excel、Word、PDF、PPT)python使用openpyxl操作excel;python使用PyPDF2和pdfplumber操作pdf;python使用python-docx操作word;python使用python-pptx操作PPT;python如何自動收發郵件;python製作電話號碼歸屬地查詢工具;一:python
  • 7個最佳的學習Python編程的開源庫
    它涵蓋了字符串和條件之類的基礎知識,然後討論了面向對象編程,以及如何處理異常和一些Python標準庫的特性等。每一個主題都有一個「notebook」連結,它會向你介紹該主題和一些示例代碼,當你完成這些內容之後,還有一個練習連結,點擊後你就可以做一些測試題。
  • 十二、Python 第三方庫
    這一講,主要簡單的介紹:第三方庫的獲取和安裝考綱:更廣泛的 Python 計算生態,只要求了解第三方庫的名稱,不限於以下領域:網絡爬蟲、數據分析、文本處理、數據可視化、用戶圖形界面、機器學習三、文本處理方向,4個最常用的生態庫:pdfminer、openpyxl、python-docx、beautifulsoup4pdfminer 是一個可以 從 PDF 文檔中提取各類信息的第三方庫。與其他 PDF 相關的工具不同,它能夠完全獲取並分析 PDF 的文本數據 。
  • Python3操作pdf文件之ReportLab
    好吧,言歸正傳,咱說一下Python3處理pdf相關的內容。Python3處理pdf的第3庫挺多的,當然,處理其它文件的庫也多。這次咱就說下耳熟能詳、久經戰場並被最、最、最被看好的ReportLab。1若要想要獲得ReportLab的支持,得先安裝它的開發包。
  • 爬取《The Hitchhiker's Guide to Python!》python進階書並製成pdf
    所以我來爬個與python相關的內容,恰好前幾天我又看到別人推薦的一本python進階書,這本書的作者是我們的python大神kennethreitz徵集各路愛好python的人所寫的,下面是地址:中文版:http://pythonguidecn.readthedocs.io/zh/latest/英文版:http://docs.python-guide.org
  • 一個函數實現PDF文檔合併與拆分
    最近小編一直使用的pymupdf庫真的是一個寶藏庫,各種有關PDF的操作,只要你想得到,沒有它做不到。這不,最近小編需要合併一些PDF文檔,果真有合適的函數。二、合併文檔目的:將兩個文檔合併為一個新的文檔。
  • 利用python自動為PDF添加書籤目錄
    1 PyPDF2 簡介 PyPDF2是python用來處理PDF文檔的第三方包,PyPDF2包可以提出PDF文檔數據,也可以對PDF文檔進行處理,它支持的python版本為2.6、2.7或python3。
  • 基於Python實現對各種數據文件的操作
    網頁數據的爬取和解析常會用到的工具包:requests, https://2.python-requests.org//zh_CN/latest/user/quickstart.htmlBeautifulSoup, https://www.crummy.com/software/BeautifulSoup
  • 第105天: Python 操作 Word
    寫入 Word平時我們在操作 Word 寫文檔的時候,一般分為幾部分:標題、章節、段落、圖片、表格、引用以及項目符號編號等。下面我們就按這幾部分如何用 Python 操作來一一介紹。……')# 創建一級標題doc1.add_heading('安裝 python-docx 庫',1)# 創建段落描述doc1.add_paragraph('現在開始我們來介紹如何安裝 python-docx 庫,具體需要以下兩步操作:')# 創建二級標題doc1.add_heading('第一步:安裝 Python',2)# 保存文件doc1.save('word1.
  • Python常用庫大全
    when.py – 提供用戶友好的函數來幫助用戶進行常用的日期和時間操作。 文本處理用於解析和操作文本的庫。 python-tesseract – Google Tesseract OCR 的一個包裝類。 音頻用來操作音頻的庫audiolazy -Python 的數位訊號處理包。
  • 10個被嚴重忽視的Python自帶庫
    python 的過程中,都會了解到 python 的一個強大的功能在於各種強大的第三方庫函數,大家只需要通過 pip install 即可安裝我們需要的庫函數。但通常我們更關注自己安裝的 python 庫,卻忽略了python自帶的庫或者內置函數。今天就來為大家介紹一下,十大被低估的 python 自帶庫/函數。1.
  • 一文看懂Python對文件和文件夾的操作: 含os, shutil和glob模塊.Python學習面試必讀.
    在利用Python或Django從事Web開發時除了必須要了解Python面向對象的編程思想,還必須熟練掌握對文件夾和文件的操作。小編我精心準備了個小結,教你如何利用python進行基本的文件和文件夾操作,並重點介紹了如何使用os, shutil和glob模塊進行常見的文件和文件夾操作,如遍歷,刪除文件和查找文件。