Python利用PyPDF2庫(kù)處理PDF文件的基本操作
安裝PyPDF2
在開始之前,需要安裝PyPDF2庫(kù)。使用pip進(jìn)行安裝:
pip install PyPDF2
基本PDF操作
1. 合并PDF文件
使用PyPDF2合并多個(gè)PDF文件為一個(gè)文件。
以下是一個(gè)示例代碼:
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文件
分割一個(gè)PDF文件為多個(gè)文件。
以下是一個(gè)示例代碼:
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頁(yè)面
旋轉(zhuǎn)PDF頁(yè)面。
以下是一個(gè)示例代碼:
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中的文本。
以下是一個(gè)示例代碼:
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)
高級(jí)PDF操作
1. 添加水印
在PDF頁(yè)面上添加水印。
以下是一個(gè)示例代碼:
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來(lái)加密PDF文件。
以下是一個(gè)示例代碼:
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中的圖像。
以下是一個(gè)示例代碼:
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是一個(gè)功能豐富的Python庫(kù),用于處理PDF文件。無(wú)論是需要合并、分割、旋轉(zhuǎn)、提取文本,還是進(jìn)行更高級(jí)的操作如添加水印、加密、提取圖像,PyPDF2都能滿足需求。
通過(guò)本文的介紹和示例代碼,可以更好地掌握PyPDF2,將其應(yīng)用于各種PDF文件處理任務(wù)中,提高工作效率,簡(jiǎn)化操作。
以上就是Python利用PyPDF2庫(kù)處理PDF文件的基本操作的詳細(xì)內(nèi)容,更多關(guān)于Python PyPDF2處理PDF文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python?pyecharts案例超市4年數(shù)據(jù)可視化分析
這篇文章主要介紹了Python?pyecharts案例超市4年數(shù)據(jù)可視化分析,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08如何利用python在剪貼板上讀取/寫入數(shù)據(jù)
說(shuō)起處理數(shù)據(jù)就離不開導(dǎo)入導(dǎo)出,而我們使用Pandas時(shí)候最常用的就是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)境變量,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06Python matplotlib通過(guò)plt.scatter畫空心圓標(biāo)記出特定的點(diǎn)方法
今天小編就為大家分享一篇Python matplotlib通過(guò)plt.scatter畫空心圓標(biāo)記出特定的點(diǎn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12Python自動(dòng)錄入ERP系統(tǒng)數(shù)據(jù)
這篇文章主要介紹了Python如何自動(dòng)錄入ERP系統(tǒng)數(shù)據(jù),用Python解決Excel問(wèn)題的最佳方法,文章中有詳細(xì)的代碼示例,需要的朋友可以參考閱讀2023-04-04python pytest進(jìn)階之xunit fixture詳解
這篇文章主要介紹了python pytest進(jìn)階之xunit fixture詳解,了解unittest的同學(xué)應(yīng)該知道我們?cè)诔跏蓟h(huán)境和銷毀工作時(shí),unittest使用的是setUp,tearDown方法,那么在pytest框架中同樣存在類似的方法,今天我們就來(lái)具體說(shuō)明,需要的朋友可以參考下2019-06-06