Python利用PyPDF2庫處理PDF文件的基本操作
安裝PyPDF2
在開始之前,需要安裝PyPDF2庫。使用pip進行安裝:
pip install PyPDF2
基本PDF操作
1. 合并PDF文件
使用PyPDF2合并多個PDF文件為一個文件。
以下是一個示例代碼:
import PyPDF2 pdf1 = open("file1.pdf", "rb") pdf2 = open("file2.pdf", "rb") output = open("merged.pdf", "wb") pdf_reader1 = PyPDF2.PdfFileReader(pdf1) pdf_reader2 = PyPDF2.PdfFileReader(pdf2) pdf_writer = PyPDF2.PdfFileWriter() for page_num in range(pdf_reader1.numPages): page = pdf_reader1.getPage(page_num) pdf_writer.addPage(page) for page_num in range(pdf_reader2.numPages): page = pdf_reader2.getPage(page_num) pdf_writer.addPage(page) pdf_writer.write(output) pdf1.close() pdf2.close() output.close()
2. 分割PDF文件
分割一個PDF文件為多個文件。
以下是一個示例代碼:
import PyPDF2 pdf = open("source.pdf", "rb") pdf_reader = PyPDF2.PdfFileReader(pdf) for page_num in range(pdf_reader.numPages): pdf_writer = PyPDF2.PdfFileWriter() pdf_writer.addPage(pdf_reader.getPage(page_num)) output = open(f"page_{page_num + 1}.pdf", "wb") pdf_writer.write(output) output.close() pdf.close()
3. 旋轉(zhuǎn)PDF頁面
旋轉(zhuǎn)PDF頁面。
以下是一個示例代碼:
import PyPDF2 pdf = open("file.pdf", "rb") pdf_reader = PyPDF2.PdfFileReader(pdf) pdf_writer = PyPDF2.PdfFileWriter() for page_num in range(pdf_reader.numPages): page = pdf_reader.getPage(page_num) page.rotateClockwise(90) # 旋轉(zhuǎn)90度 pdf_writer.addPage(page) output = open("rotated.pdf", "wb") pdf_writer.write(output) pdf.close() output.close()
4. 提取PDF文本
提取PDF中的文本。
以下是一個示例代碼:
import PyPDF2 pdf = open("file.pdf", "rb") pdf_reader = PyPDF2.PdfFileReader(pdf) text = "" for page_num in range(pdf_reader.numPages): page = pdf_reader.getPage(page_num) text += page.extractText() print(text)
高級PDF操作
1. 添加水印
在PDF頁面上添加水印。
以下是一個示例代碼:
import PyPDF2 pdf = open("file.pdf", "rb") pdf_reader = PyPDF2.PdfFileReader(pdf) pdf_writer = PyPDF2.PdfFileWriter() watermark = PyPDF2.PdfFileReader(open("watermark.pdf", "rb")) for page_num in range(pdf_reader.numPages): page = pdf_reader.getPage(page_num) page.mergePage(watermark.getPage(0)) pdf_writer.addPage(page) output = open("watermarked.pdf", "wb") pdf_writer.write(output) pdf.close() output.close()
2. 加密PDF文件
使用PyPDF2來加密PDF文件。
以下是一個示例代碼:
import PyPDF2 pdf = open("file.pdf", "rb") pdf_reader = PyPDF2.PdfFileReader(pdf) pdf_writer = PyPDF2.PdfFileWriter() for page_num in range(pdf_reader.numPages): page = pdf_reader.getPage(page_num) pdf_writer.addPage(page) pdf_writer.encrypt("password", "owner_password") output = open("encrypted.pdf", "wb") pdf_writer.write(output) pdf.close() output.close()
3. 提取圖像
使用PyPDF2提取PDF中的圖像。
以下是一個示例代碼:
import PyPDF2 pdf = open("file.pdf", "rb") pdf_reader = PyPDF2.PdfFileReader(pdf) for page_num in range(pdf_reader.numPages): page = pdf_reader.getPage(page_num) xObject = page['/Resources']['/XObject'].get_object() for obj in xObject: if xObject[obj]['/Subtype'] == '/Image': img = xObject[obj] data = img.get_data() with open(f"image_{page_num + 1}.jpg", "wb") as f: f.write(data) pdf.close()
總結(jié)
PyPDF2是一個功能豐富的Python庫,用于處理PDF文件。無論是需要合并、分割、旋轉(zhuǎn)、提取文本,還是進行更高級的操作如添加水印、加密、提取圖像,PyPDF2都能滿足需求。
通過本文的介紹和示例代碼,可以更好地掌握PyPDF2,將其應(yīng)用于各種PDF文件處理任務(wù)中,提高工作效率,簡化操作。
以上就是Python利用PyPDF2庫處理PDF文件的基本操作的詳細內(nèi)容,更多關(guān)于Python PyPDF2處理PDF文件的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python?pyecharts案例超市4年數(shù)據(jù)可視化分析
這篇文章主要介紹了Python?pyecharts案例超市4年數(shù)據(jù)可視化分析,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08如何利用python在剪貼板上讀取/寫入數(shù)據(jù)
說起處理數(shù)據(jù)就離不開導(dǎo)入導(dǎo)出,而我們使用Pandas時候最常用的就是read_excel、read_csv了,下面這篇文章主要給大家介紹了關(guān)于如何利用python在剪貼板上讀取/寫入數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-07-07Python基于os.environ從windows獲取環(huán)境變量
這篇文章主要介紹了Python基于os.environ從windows獲取環(huán)境變量,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-06-06Python matplotlib通過plt.scatter畫空心圓標記出特定的點方法
今天小編就為大家分享一篇Python matplotlib通過plt.scatter畫空心圓標記出特定的點方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12Python自動錄入ERP系統(tǒng)數(shù)據(jù)
這篇文章主要介紹了Python如何自動錄入ERP系統(tǒng)數(shù)據(jù),用Python解決Excel問題的最佳方法,文章中有詳細的代碼示例,需要的朋友可以參考閱讀2023-04-04python pytest進階之xunit fixture詳解
這篇文章主要介紹了python pytest進階之xunit fixture詳解,了解unittest的同學應(yīng)該知道我們在初始化環(huán)境和銷毀工作時,unittest使用的是setUp,tearDown方法,那么在pytest框架中同樣存在類似的方法,今天我們就來具體說明,需要的朋友可以參考下2019-06-06