【Python】用于在 Python 中处理 PDF 文件的 PyPDF2 库
作者?| megha152
編譯 | Flin
來源 | analyticsvidhya
介紹
PDF 代表便攜式文檔格式。它使用 .pdf 擴展名。這種類型的文件主要用于共享目的。它們不能被修改,從而完整地保留了文件的格式。
因此,它們可以輕松共享和下載。它們用于閱讀而不是編輯。它們在獨立于硬件、軟件和操作系統打開的任何設備上看起來都相似。因此,它們是最廣泛使用的格式。它是由Adobe發明的。現在是國際標準化組織 (ISO)的開放標準。
在本教程中,我們將學習如何在 Python 中處理 PDF 文件。將涵蓋以下主題:
如何從 PDF 文件中提取文本。
如何旋轉 PDF 文件的頁面。
如何從 PDF 文件中提取文檔信息。
如何從 PDF 文件中拆分頁面。
如何合并 PDF 文件的頁面。
如何加密PDF文件。
如何為 PDF 文件添加水印。
Python 中 PDF 的一些常用庫
有許多庫可免費用于處理 PDF:
PDFMiner:它是一個用于從PDF中提取文本的開源工具。它用于對數據進行分析。它也可以用作 PDF 轉換器或 PDF 解析器。
PDFQuery:它是一個圍繞 PDFMiner、Ixml 和 PyQuery 的輕量級 Python 包裝器。它是一個快速、用戶友好的 PDF 抓取庫。
Tabula.py:它是tabula.java的 Python 包裝器。它將 PDF 文件轉換為 Pandas 的數據框,并且所有數據操作都可以在數據框上執行。
Xpdf : 它允許將 PDF 轉換為文本。
pdflib:它是 poppler 庫的擴展,其中包含 python 綁定。
Slate:它是一個基于PDFMiner 的Python 包,用于從PDF 中提取文本。
PyPDF2:它是一個 Python 庫,用于對 PDF 文件執行主要任務,例如提取文檔特定信息、合并 PDF 文件、拆分 PDF 文件的頁面、為文件添加水印、加密和解密 PDF文件等。
我們將在本教程中使用 PyPDF2 庫。它是一個純 python 庫,因此它可以在任何平臺上運行,而無需對任何外部庫產生任何與平臺相關的依賴。
安裝 PyPDF2 庫
要安裝 PyPDF2,請在命令提示符中復制以下命令并運行:
pip?install?PyPDF2獲取文檔詳細信息
PyPDF2 提供有關 PDF 文檔的元數據。這可能是有關 PDF 文件的有用信息。可以直接獲得文檔作者、標題、制作人、主題等信息。
.jpg)
要提取上述信息,請運行以下代碼:
from?PyPDF2?import?PdfFileReader pdf_path=r"C:UsersDellDesktopTesting?Tesseractexample.pdf" with?open(pdf_path,?'rb')?as?f:pdf?=?PdfFileReader(f)information?=?pdf.getDocumentInfo()number_of_pages?=?pdf.getNumPages()print(information)上述代碼的輸出如下:
讓我們格式化輸出:
print("Author"?+':?'?+?information.author) print("Creator"?+':?'?+?information.creator) print("Producer"?+':?'?+?information.producer)從 PDF 中提取文本
為了提取文本,我們將讀取文件并創建文件的 PDF 對象。
#?creating?a?pdf?file?object pdfFileObject?=?open(pdf_path,?'rb')然后我們將創建一個 PDFReader 類對象并將 PDF 文件對象傳遞給它。
# 創建一個pdf閱讀器對象
pdfReader?=?PyPDF2.PdfFileReader(pdfFileObject)最后,我們將提取每個頁面并連接每個頁面的文本。
text='' for?i?in?range(0,pdfReader.numPages):#?creating?a?page?objectpageObj?=?pdfReader.getPage(i)#?extracting?text?from?pagetext=text+pageObj.extractText() print(text)輸出文本如下:
旋轉 PDF 的頁面
要旋轉 PDF 文件的頁面并將其另存為另一個文件,請復制以下代碼并運行它。
pdf_read?=?PdfFileReader(r"C:UsersDellDesktopstory.pdf") pdf_write?=?PdfFileWriter() #?Rotate?page?90?degrees?to?the?right page1?=?pdf_read.getPage(0).rotateClockwise(90) pdf_write.addPage(page1) with?open(r'C:UsersDellDesktoprotate_pages.pdf',?'wb')?as?fh:pdf_write.write(fh)在 Python 中合并 PDF 文件
我們還可以使用以下命令合并兩個或多個 PDF 文件:
pdf_read = PdfFileReader(r”C:UsersDellDesktopstory.pdf”)
pdf_write?=?PdfFileWriter() #?Rotate?page?90?degrees?to?the?right page1?=?pdf_read.getPage(0).rotateClockwise(90) pdf_write.addPage(page1) with?open(r'C:UsersDellDesktoprotate_pages.pdf',?'wb')?as?fh:pdf_write.write(fh)輸出PDF如下所示:
拆分PDF頁面
我們可以將 PDF 拆分為單獨的頁面,然后將它們再次保存為 PDF。
fname?=?os.path.splitext(os.path.basename(pdf_path))[0]for?page?in?range(pdf.getNumPages()):pdfwrite?=?PdfFileWriter()pdfwrite.addPage(pdf.getPage(page))outputfilename?=?'{}_page_{}.pdf'.format(fname,?page+1)with?open(outputfilename,?'wb')?as?out:pdfwrite.write(out)print('Created:?{}'.format(outputfilename))pdf?=?PdfFileReader(pdf_path)加密 PDF 文件
加密 PDF 文件意味著向文件添加密碼。每次打開文件時,它都會提示輸入文件的密碼。它允許對內容進行密碼保護。出現以下彈出窗口:
我們可以使用以下代碼:
for?page?in?range(pdf.getNumPages()):pdfwrite.addPage(pdf.getPage(page))pdfwrite.encrypt(user_pwd=password,?owner_pwd=None,use_128bit=True)with?open(outputpdf,?'wb')?as?fh:pdfwrite.write(fh)為 PDF 文件添加水印
水印是出現在每一頁上的識別圖像或圖案。它可以是公司徽標或任何要反映在每個頁面上的重要信息。
要為 PDF 的每一頁添加水印,請復制以下代碼并運行。
originalfile?=?r"C:UsersDellDesktopTesting?Tesseractexample.pdf" watermark?=?r"C:UsersDellDesktopTesting?Tesseractwatermark.pdf" watermarkedfile?=?r"C:UsersDellDesktopTesting?Tesseractwatermarkedfile.pdf" watermark?=?PdfFileReader(watermark) watermarkpage?=?watermark.getPage(0) pdf?=?PdfFileReader(originalfile) pdfwrite?=?PdfFileWriter() for?page?in?range(pdf.getNumPages()):pdfpage?=?pdf.getPage(page)pdfpage.mergePage(watermarkpage)pdfwrite.addPage(pdfpage) with?open(watermarkedfile,?'wb')?as?fh:pdfwrite.write(fh)上面的代碼讀取兩個文件——輸入文件和水印。然后在閱讀每一頁后,它將水印附加到每一頁并將新文件保存在同一位置。
尾注
正如我們在上面看到的,所有可以在 PDF 文件中想到的操作都可以使用 PyPDF2 庫在 Python 中輕松執行。它純粹是用 Python 編寫的。因此它是完全獨立于平臺的。它易于使用并提供了極大的靈活性。
圖片來源
圖 1:https://monkeypen.com/pages/free-childrens-books
本站qq群554839127,加入微信群請掃碼:
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的【Python】用于在 Python 中处理 PDF 文件的 PyPDF2 库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NLP精选10个实现项目推荐-涉及预训练
- 下一篇: 注意大小写