日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2025/3/12 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python基础】python使用PyPDF2和pdfplumber操作pdf 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、PyPDF2和pdfplumber庫介紹

  • PyPDF2官網:PyPDF2官網 ,可以更好的讀取、寫入、分割、合并PDF文件;

  • pdfplumber官網:pdfplumber官網,可以更好地讀取PDF文件內容和提取PDF中的表格;

  • 這兩個庫不屬于python標準庫,都需要單獨安裝;

2、python提取PDF文字內容

1)利用pdfplumber提取文字
import PyPDF2 import pdfplumberwith pdfplumber.open("餐飲企業綜合分析.pdf") as p:page = p.pages[2]print(page.extract_text())

結果如下:

2)利用pdfplumber提取表格并寫入excel
  • extract_table():如果一頁有一個表格;

  • extract_tables():如果一頁有多個表格;

import PyPDF2 import pdfplumber from openpyxl import Workbookwith pdfplumber.open("餐飲企業綜合分析.pdf") as p:page = p.pages[4]table = page.extract_table()print(table)workbook = Workbook()sheet = workbook.activefor row in table:if not "".join() == ""sheet.append(row)workbook.save(filename = "新pdf.xlsx")

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

import PyPDF2 import pdfplumber from openpyxl import Workbookwith pdfplumber.open("餐飲企業綜合分析.pdf") as p:page = p.pages[4]table = page.extract_table()print(table)workbook = Workbook()sheet = workbook.activefor 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, PdfFileWriterpdf_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, PdfFileWriterpdf_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, PdfFileWriterpdf_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, PdfFileWriterpdf_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, PdfFileWriter from copy import copywater = 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, PdfFileWriterpdf_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, PdfFileWriterpdf_reader = PdfFileReader(r"G:\6Tipdm\7python辦公自動化\concat_pdf\時間序列.pdf") # 解密pdf pdf_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)

結果如下:

作者 :Huang Supreme

往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯 本站qq群704220115,加入微信群請掃碼:

總結

以上是生活随笔為你收集整理的【Python基础】python使用PyPDF2和pdfplumber操作pdf的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。