【Python基礎】python使用PyPDF2和pdfplumber操作pdf

2021-03-02 機器學習初學者
1、PyPDF2和pdfplumber庫介紹PyPDF2官網:PyPDF2官網 ,可以更好的讀取、寫入、分割、合併PDF文件;pdfplumber官網:pdfplumber官網,可以更好地讀取PDF文件內容和提取PDF中的表格;這兩個庫不屬於python標準庫,都需要單獨安裝;2、python提取PDF文字內容1)利用pdfplumber提取文字
import PyPDF2import pdfplumber
with pdfplumber.open("餐飲企業綜合分析.pdf") as p: page = p.pages[2] print(page.extract_text())

結果如下:

2)利用pdfplumber提取表格並寫入excelextract_table():如果一頁有一個表格;extract_tables():如果一頁有多個表格;
import PyPDF2import pdfplumberfrom openpyxl import Workbook
with pdfplumber.open("餐飲企業綜合分析.pdf") as p: page = p.pages[4] table = page.extract_table() print(table) workbook = Workbook() sheet = workbook.active for row in table: if not "".join() == "" sheet.append(row) workbook.save(filename = "新pdf.xlsx")

結果如下:缺陷:可以看到,這裡提取出來的表格有很多空行,怎麼去掉這些空行呢?判斷:將列表中每個元素都連接成一個字符串,如果還是一個空字符串那麼肯定就是空行。

import PyPDF2import pdfplumberfrom openpyxl import Workbook
with pdfplumber.open("餐飲企業綜合分析.pdf") as p: page = p.pages[4] table = page.extract_table() print(table) workbook = Workbook() sheet = workbook.active for row in table: if not "".join([str(i) for i in row]) == "": sheet.append(row) workbook.save(filename = "新pdf.xlsx")

結果如下:

3、PDF合併及頁面的排序和旋轉1)分割及合併pdf① 合併pdf

首先,我們有如下幾個文件,可以發現這裡共有三個PDF文件需要我們合併。同時可以發現他們的文件名都是有規律的(如果文件名,沒有先後順序,我們合併起來就沒有意義了。)代碼如下:

from PyPDF2 import PdfFileReader, PdfFileWriter
pdf_writer = PdfFileWriter()for i in range(1,len(os.listdir(r"G:\6Tipdm\7python辦公自動化\concat_pdf"))+1): print(i*50+1,(i+1)*50) pdf_reader = PdfFileReader("G:\\6Tipdm\\7python辦公自動化\\concat_pdf\{}-{}.pdf".format(i*50+1,(i+1)*50)) for page in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page)) with open("G:\\6Tipdm\\7python辦公自動化\\concat_pdf\merge.pdf", "wb") as out: pdf_writer.write(out)

結果如下:

② 拆分pdf

這裡有一個「時間序列.pdf」的文件,共3頁,我們將其每一頁存為一個PDF文件。代碼如下:

from PyPDF2 import PdfFileReader, PdfFileWriter
pdf_reader = PdfFileReader(r"G:\6Tipdm\7python辦公自動化\concat_pdf\時間序列.pdf")for page in range(pdf_reader.getNumPages()): pdf_writer = PdfFileWriter() pdf_writer.addPage(pdf_reader.getPage(page)) with open(f"G:\\6Tipdm\\7python辦公自動化\\concat_pdf\\{page}.pdf", "wb") as out: pdf_writer.write(out)

結果如下:

2)旋轉及排序pdf① 旋轉pdf.rotateClockwise(90的倍數):順時針旋轉90度.rotateCounterClockwise(90的倍數):逆時針旋轉90度
from PyPDF2 import PdfFileReader, PdfFileWriter
pdf_reader = PdfFileReader(r"G:\6Tipdm\7python辦公自動化\concat_pdf\時間序列.pdf")pdf_writer = PdfFileWriter()for page in range(pdf_reader.getNumPages()): if page % 2 == 0: rotation_page = pdf_reader.getPage(page).rotateCounterClockwise(90) else: rotation_page = pdf_reader.getPage(page).rotateClockwise(90) pdf_writer.addPage(rotation_page) with open("G:\\6Tipdm\\7python辦公自動化\\concat_pdf\\旋轉.pdf", "wb") as out: pdf_writer.write(out)"""上述代碼中,我們循環遍歷了這個pdf,對於偶數頁我們逆時針旋轉90°,對於奇數頁我們順時針旋轉90°;注意:旋轉的角度只能是90的倍數;"""

其中一頁效果展示如下:

② 排序pdf

需求:我們有一個PDF文件,我們需要倒序排列,應該怎麼做呢?首先,我們來看python中,怎麼倒敘列印一串數字,如下圖所示。那麼倒序排列一個pdf,思路同上,代碼如下:

from PyPDF2 import PdfFileReader, PdfFileWriter
pdf_reader = PdfFileReader(r"G:\6Tipdm\7python辦公自動化\concat_pdf\時間序列.pdf")pdf_writer = PdfFileWriter()for page in range(pdf_reader.getNumPages()-1, -1, -1): pdf_writer.addPage(pdf_reader.getPage(page))with open("G:\\6Tipdm\\7python辦公自動化\\concat_pdf\\倒序.pdf", "wb") as out: pdf_writer.write(out)

結果如下:

4、pdf批量加水印及加密、解密1)批量加水印
from PyPDF2 import PdfFileReader, PdfFileWriterfrom copy import copy
water = PdfFileReader(r"G:\6Tipdm\7python辦公自動化\concat_pdf\水印.pdf")water_page = water.getPage(0)
pdf_reader = PdfFileReader(r"G:\6Tipdm\7python辦公自動化\concat_pdf\aa.pdf")pdf_writer = PdfFileWriter()
for page in range(pdf_reader.getNumPages()): my_page = pdf_reader.getPage(page) new_page = copy(water_page) new_page.mergePage(my_page) pdf_writer.addPage(new_page)with open("G:\\6Tipdm\\7python辦公自動化\\concat_pdf\\添加水印後的aa.pdf", "wb") as out: pdf_writer.write(out) """這裡有一點需要注意:進行pdf合併的時候,我們希望「水印」在下面,文字在上面,因此是「水印」.mergePage(「圖片頁」)"""

結果如下:

2)批量加密、解密這裡所說的「解密」,是在知道pdf的密碼下,去打開pdf,而不是暴力破解;① 加密pdf
from PyPDF2 import PdfFileReader, PdfFileWriter
pdf_reader = PdfFileReader(r"G:\6Tipdm\7python辦公自動化\concat_pdf\時間序列.pdf")pdf_writer = PdfFileWriter()for page in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page))# 添加密碼pdf_writer.encrypt("a123456")with open("G:\\6Tipdm\\7python辦公自動化\\concat_pdf\\時間序列.pdf", "wb") as out: pdf_writer.write(out)

結果如下:

② 解密pdf並保存為未加密的pdf
from PyPDF2 import PdfFileReader, PdfFileWriter
pdf_reader = PdfFileReader(r"G:\6Tipdm\7python辦公自動化\concat_pdf\時間序列.pdf")# 解密pdfpdf_reader.decrypt("a123456")pdf_writer = PdfFileWriter()for page in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page))with open("G:\\6Tipdm\\7python辦公自動化\\concat_pdf\\未加密的時間序列.pdf", "wb") as out: pdf_writer.write(out)

結果如下:

相關焦點

  • pdfplumber、pypdf2 常用方法總結
    若處理對象是 PDF 文檔本身,則推薦使用 pypdf2,如對 PDF 文檔進行分割, 合併, 插入等操作.若處理對象是 PDF 文檔中的文本,表格等內容,則推薦使用 pdfplumber.pypdf2PdfFileMerger。
  • Python操作PDF全總結|處理PDF文檔不得不知道的兩個庫
    Python在自動化辦公方面有很多實用的第三方庫,可以很方便的處理word、excel、ppt、pdf文件,今天我們就學習一下Python處理PDF文檔的兩個常用庫「pdfplumber」、「pypdf2」。
  • Python 操作 PDF,這兩個庫必須會!
    >「pypdf2」pdfplumber庫按頁處理 pdf ,獲取頁面文字,提取表格等操作文檔:https://github.com/jsvine/pdfplumberPyPDF2 是一個純 Python PDF
  • PDF轉EXCEL,python的這個技能知道嗎?
    1.使用的庫簡單介紹一下要使用的庫:pdfplumber 和xlwt1.pdfplumberpdfplumber使用來解析pdf的文字與表格。python辦公自動化——PDF轉Word所使用的pdfminer庫類似,都是從pdf裡面提取信息。
  • 【Python】解析PDF文本和表格的四大方法介紹
    pypdf2讀取PDF文件import PyPDF2path = r"****.pdf"#使用open的『rb』方法打開pdf文件(這裡必須得使用二進位rb的讀取方式)mypdf = open(path,mode='rb')#調用PdfFileReader函數pdf_document = PyPDF2.PdfFileReader
  • Pdf轉Excel收費?Python幾行幫你搞定!
    如何挑選Python包我們經常在網上看到一些python包,雖然功能都是一樣的,但是包名卻各不同。例如解析pdf的包就有好幾種,那麼我們該如何挑選呢?愛尚實訓小編在這裡告訴大家一個小方法,利用python官方文檔來決定,看看用哪個比較好呢。
  • python用PyPDF2庫解決pdf合併拆分問題
    pdf拆分合併專業戶PyPDF2庫還是先對PyPDF2庫簡單介紹一下,PyPDF2是一個純python的PDF庫,能夠拆分、合併、裁剪和轉換PDF文件的頁面,它還可以向PDF文件添加自定義數據、查看選項和密碼。
  • 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
  • Python | 看得到,取得到,才是數據(二):幾行代碼搞定PDF文件中表格數據讀取
    Python整合平臺Anaconda的安裝和使用如何批量在多個word文檔中查找線索關鍵詞?看得到,取得到,才是數據:pandas 也可爬蟲?用Python鏈路預測算法挖掘企業間的隱性關聯關係需要解決的問題在《看得到,取得到,才是數據(一):pandas 也可爬蟲?》中分析過,在做招標情況分析和檢查時,有些招標結果公示文件是PDF格式的文件。
  • 使用pyttsx3和pdfminer.six讀取PDF文件轉音頻Python腳本
    背景是讀一些PDF文件時,會耽誤做其他事,想著寫個Python腳本來聽多好,使用Python3編寫。
  • Python 操作 PDF 的幾種方法
    ,並沒有太多講解原理,其中涉及的就是 PDF 處理很實用的模塊 PyPDF2 ,本文就好好剖析一下這個模塊,主要將涉及os 模塊綜合應用glob 模塊綜合應用PyPDF2 模塊操作基本操作PyPDF2 導入模塊的代碼常常是:from PyPDF2 import PdfFileReader,
  • python必備書籍pdf下載
    7013Python庫參考手冊.pdf"7014Python精要參考(第二版)_翻譯.pdf"7015Python技術手冊(第2版).pdf"連結: 7016python基礎教程(第二版).pdf"本書內容涉及的範圍較廣,既能為初學者夯實基礎,又能幫助程式設計師提升技能,適合各個層次的Python開發人員閱讀參考。7017 "python核心筆記.pdf"7018 "Python高級編程.pdf"
  • 我50行Python代碼讓小姐姐給你讀Pdf
    對於PDF文檔中文字的提取,這裡我們採用的是pdfplumber庫進行提取,pdfplumber可以處理PDF中,包括文本、表格、格式在內的各種信息,小巧但是功能十分的強大。但是需要注意版本的使用,這裡我們使用的python3.5環境下的版本號為0.5.25的pdfplumber。
  • 利用python自動為PDF添加書籤目錄
    本文主要教大家如何使用PyPDF2自動給PDF文檔添加書籤目錄。 1 PyPDF2 簡介 PyPDF2是python用來處理PDF文檔的第三方包,PyPDF2包可以提出PDF文檔數據,也可以對PDF文檔進行處理,它支持的python版本為2.6、2.7或python3。
  • python 實用程序 | PDF 轉 Word
    因為 pdf 文檔裡面的內容有很多,如果全部列印的話,費用還是挺高的。所以她想把裡面的內容格式修改下,比如行間距,字間距等等。通過這樣的修改,可以把文檔的頁數減少很多,這樣就省下不少的錢。於是乎我就想到了利用 python 來寫個程序,把 pdf 轉成 word 文檔。秉承著不要重複造輪子的想法,我首先在網上搜索了下。果然已經有人寫好了,我們直接拿來用就行。
  • Python實現一鍵翻譯英文論文,實現了pdf文檔英譯漢,pdf格式不變
    支持谷歌、必應、有道的免費翻譯接口,基於Django、PyMuPDF實現了pdf文檔英譯漢的功能,翻譯後的pdf格式基本保持不變,可以下載docx和pdf格式的翻譯文檔,基本解決複製caj中文論文時的格式問題,簡單的滿足看論文以及寫總結的需求。
  • 教你用Python 操作 PDF 的幾種方法
    glob 模塊綜合應用PyPDF2 模塊操作02基本操作PyPDF2 導入模塊的代碼常常是:from PyPDF2 import PdfFileReader, PdfFileWriter因此,邏輯中第1步和第2步實際上不是彼此獨立的步驟,而是讀取器讀取完一個pdf後,就將這個pdf全部頁循環一遍,挨頁交給寫入器。最後等讀取工作全部結束後再輸出。
  • PDF文件解析&拆分在SAP憑證列印場景中的運用(二)
    這篇文章,緊接著上一篇,重點談談如何用python來做到高效的PDF文件解析&拆分。  小爬使用了python第三方庫PyPDF2,它可以輕鬆的處理pdf文件,它提供了讀、寫、分割、合併、文件轉換等多種操作。小爬試了下,PyPDF2分割和合併的工作能輕鬆搞定,但是提取文本這塊,它只擅長英文。如果PDF內容涉及大量中文,則PYPDF2提取到的文本是大量的亂碼。
  • python自動化辦公手冊之python操作PPT
    基於此,我花了整整一周時間真理出來的python自動化文檔手冊,涉及到五個章節(如下圖所示),① python使用openpyxl操作excel;② python使用PyPDF2和pdfplumber操作pdf;③ python使用python-docx操作word;④ python使用python-pptx操作PPT;⑤ python如何自動收發郵件;⑥ python製作電話號碼歸屬地查詢工具。
  • 使用Python為PDF文件批量添加水印的方法及進一步思考
    網上資料也很多,思路是使用PyPDF2擴展包,參考網址http://www.blog.pythonlibrary.org/2018/06/07/an-intro-to-pypdf2/給出的代碼,寫出Python程序addwatermark1.py: