使用python對(duì)pdf文件進(jìn)行加密等操作
利用python對(duì)pdf文件進(jìn)行操作
讀取pdf-源碼
import PyPDF2
# 讀取pdf格式的文件
reader = PyPDF2.PdfFileReader('示例文件/aaa.pdf')
print(reader)
# 讀取指定頁(yè)面的文件
page = reader.getPage(0)
# 輸出當(dāng)前頁(yè)面的文本數(shù)據(jù)
print(page.extractText())
讀取pdf-源碼解析
這段代碼使用了PyPDF2庫(kù)來(lái)讀取和處理PDF文件。以下是對(duì)這段代碼的詳細(xì)分析:
1. 導(dǎo)入庫(kù)
import PyPDF2
這行代碼導(dǎo)入了PyPDF2庫(kù),該庫(kù)提供了處理PDF文件的功能。
2. 讀取PDF文件
reader = PyPDF2.PdfFileReader('示例文件/aaa.pdf')
print(reader)
PyPDF2.PdfFileReader('示例文件/aaa.pdf'):創(chuàng)建一個(gè)PdfFileReader對(duì)象,用于讀取指定的PDF文件。這里的文件路徑是'示例文件/aaa.pdf'。
print(reader):打印reader對(duì)象。這個(gè)對(duì)象包含了PDF文件的元數(shù)據(jù)和頁(yè)面信息。
3. 讀取指定頁(yè)面
page = reader.getPage(0)
reader.getPage(0):從PDF文件中獲取第一頁(yè)(索引為0)。getPage方法返回一個(gè)PageObject對(duì)象,表示PDF文件中的一頁(yè)。
4. 提取并輸出文本數(shù)據(jù)
print(page.extractText())
page.extractText():從當(dāng)前頁(yè)面(page對(duì)象)中提取文本數(shù)據(jù)。這個(gè)方法會(huì)嘗試解析頁(yè)面中的文本并返回一個(gè)字符串。
print(page.extractText()):打印提取到的文本數(shù)據(jù)。
代碼執(zhí)行流程
導(dǎo)入庫(kù):導(dǎo)入PyPDF2庫(kù)。
創(chuàng)建讀取器對(duì)象:使用PdfFileReader讀取指定的PDF文件。
獲取頁(yè)面對(duì)象:使用getPage方法獲取PDF文件的第一頁(yè)。
提取文本:使用extractText方法從頁(yè)面對(duì)象中提取文本數(shù)據(jù)。
輸出文本:打印提取到的文本數(shù)據(jù)。
注意事項(xiàng)
確保PDF文件路徑正確,并且文件存在。
PyPDF2庫(kù)可能無(wú)法完美提取所有PDF文件中的文本,特別是那些包含復(fù)雜格式或圖像的PDF文件。
如果PDF文件受密碼保護(hù),需要先解密文件才能讀取內(nèi)容。
示例輸出
假設(shè)PDF文件'示例文件/aaa.pdf'的第一頁(yè)包含文本“Hello, World!”,那么代碼的輸出將是:
<PyPDF2.pdf.PageObject object at 0x...>
Hello, World!
其中<PyPDF2.pdf.PageObject object at 0x...>是PageObject對(duì)象的表示,后面的文本是提取到的內(nèi)容。
通過(guò)這段代碼,你可以讀取PDF文件的指定頁(yè)面并提取其中的文本內(nèi)容。
旋轉(zhuǎn)和創(chuàng)建空白pdf-源碼
import PyPDF2
# 創(chuàng)建讀取pdf文件的對(duì)象
reader = PyPDF2.PdfFileReader(r'示例文件/aaa.pdf')
# 創(chuàng)建寫(xiě)入pdf文件的對(duì)象
writer = PyPDF2.PdfFileWriter()
# print(reader,writer)
# 獲取pdf文件中所有頁(yè)碼
# print(reader.numPages)
# 對(duì)pdf文件中的所有頁(yè)碼進(jìn)行遍歷
for page_num in range(reader.numPages):
# print(page_num)
# 獲取當(dāng)前頁(yè)面對(duì)象
current_page = reader.getPage(page_num)
# 若是奇數(shù)頁(yè)順時(shí)針旋轉(zhuǎn)90°
if page_num % 2 == 0:
current_page.rotateClockwise(90)
else:
# 若是奇數(shù)頁(yè)逆時(shí)針旋轉(zhuǎn)90°
current_page.rotateCounterClockwise(90)
writer.addPage(current_page)
# 添加空白頁(yè),并且旋轉(zhuǎn)90°
page = writer.addBlankPage()
page.rotateClockwise(90)
# 通過(guò)writer對(duì)象里面的write方法,將pdf文件做的調(diào)整保存到新的文件中
with open(r'示例文件/旋轉(zhuǎn)和創(chuàng)建空白pdf文件.pdf', 'wb') as file:
writer.write(file)旋轉(zhuǎn)和創(chuàng)建空白pdf-源碼解析
這段代碼使用了PyPDF2庫(kù)來(lái)讀取一個(gè)PDF文件,對(duì)每一頁(yè)進(jìn)行旋轉(zhuǎn)操作,并添加一個(gè)空白頁(yè),最后將修改后的內(nèi)容保存到一個(gè)新的PDF文件中。以下是對(duì)這段代碼的詳細(xì)解析:
1. 導(dǎo)入庫(kù)
import PyPDF2
這行代碼導(dǎo)入了PyPDF2庫(kù),該庫(kù)提供了處理PDF文件的功能。
2. 創(chuàng)建讀取和寫(xiě)入PDF文件的對(duì)象
reader = PyPDF2.PdfFileReader(r'示例文件/aaa.pdf') writer = PyPDF2.PdfFileWriter()
reader = PyPDF2.PdfFileReader(r'示例文件/aaa.pdf'):創(chuàng)建一個(gè)PdfFileReader對(duì)象,用于讀取指定的PDF文件。這里的文件路徑是'示例文件/aaa.pdf'。
writer = PyPDF2.PdfFileWriter():創(chuàng)建一個(gè)PdfFileWriter對(duì)象,用于寫(xiě)入新的PDF文件。
3. 獲取PDF文件中所有頁(yè)碼
num_pages = reader.numPages
reader.numPages:獲取PDF文件中的總頁(yè)數(shù)。
4. 對(duì)PDF文件中的所有頁(yè)碼進(jìn)行遍歷
for page_num in range(num_pages):
current_page = reader.getPage(page_num)
if page_num % 2 == 0:
current_page.rotateClockwise(90)
else:
current_page.rotateCounterClockwise(90)
writer.addPage(current_page)
for page_num in range(num_pages):遍歷PDF文件中的每一頁(yè)。
current_page = reader.getPage(page_num):獲取當(dāng)前頁(yè)碼對(duì)應(yīng)的頁(yè)面對(duì)象。
if page_num % 2 == 0:判斷當(dāng)前頁(yè)碼是否為偶數(shù)。
current_page.rotateClockwise(90):如果是偶數(shù)頁(yè),順時(shí)針旋轉(zhuǎn)90度。
current_page.rotateCounterClockwise(90):如果是奇數(shù)頁(yè),逆時(shí)針旋轉(zhuǎn)90度。
writer.addPage(current_page):將旋轉(zhuǎn)后的頁(yè)面添加到writer對(duì)象中。
5. 添加空白頁(yè)并旋轉(zhuǎn)
page = writer.addBlankPage() page.rotateClockwise(90)
page = writer.addBlankPage():在writer對(duì)象中添加一個(gè)空白頁(yè)。
page.rotateClockwise(90):將空白頁(yè)順時(shí)針旋轉(zhuǎn)90度。
6. 保存修改后的PDF文件
with open(r'示例文件/旋轉(zhuǎn)和創(chuàng)建空白pdf文件.pdf', 'wb') as file:
writer.write(file)
with open(r'示例文件/旋轉(zhuǎn)和創(chuàng)建空白pdf文件.pdf', 'wb') as file:以二進(jìn)制寫(xiě)模式打開(kāi)一個(gè)新文件,用于保存修改后的PDF文件。
writer.write(file):將writer對(duì)象中的內(nèi)容寫(xiě)入到新文件中。
代碼執(zhí)行流程
導(dǎo)入庫(kù):導(dǎo)入PyPDF2庫(kù)。
創(chuàng)建讀取器和寫(xiě)入器對(duì)象:分別創(chuàng)建用于讀取和寫(xiě)入PDF文件的對(duì)象。
獲取總頁(yè)數(shù):獲取PDF文件中的總頁(yè)數(shù)。
遍歷每一頁(yè):對(duì)每一頁(yè)進(jìn)行旋轉(zhuǎn)操作,并將旋轉(zhuǎn)后的頁(yè)面添加到寫(xiě)入器對(duì)象中。
添加空白頁(yè)并旋轉(zhuǎn):在寫(xiě)入器對(duì)象中添加一個(gè)空白頁(yè),并將其旋轉(zhuǎn)90度。
保存文件:將修改后的內(nèi)容保存到一個(gè)新的PDF文件中。
示例輸出
假設(shè)原始PDF文件'示例文件/aaa.pdf'有3頁(yè),經(jīng)過(guò)上述代碼處理后,將會(huì)生成一個(gè)新的PDF文件'示例文件/旋轉(zhuǎn)和創(chuàng)建空白pdf文件.pdf',其中:
第1頁(yè)(原第1頁(yè))順時(shí)針旋轉(zhuǎn)90度。
第2頁(yè)(原第2頁(yè))逆時(shí)針旋轉(zhuǎn)90度。
第3頁(yè)(原第3頁(yè))順時(shí)針旋轉(zhuǎn)90度。
添加了一個(gè)空白頁(yè),并且該空白頁(yè)順時(shí)針旋轉(zhuǎn)90度。
通過(guò)這段代碼,你可以對(duì)PDF文件的每一頁(yè)進(jìn)行旋轉(zhuǎn)操作,并添加一個(gè)空白頁(yè),最后將修改后的內(nèi)容保存到一個(gè)新的PDF文件中。
對(duì)pdf文件加密-源碼
import PyPDF2
# 創(chuàng)建讀取pdf文件對(duì)象
reader = PyPDF2.PdfFileReader('示例文件/旋轉(zhuǎn)和創(chuàng)建空白pdf文件.pdf')
# 創(chuàng)建寫(xiě)入pdf文件的對(duì)象
writer = PyPDF2.PdfFileWriter()
for page_num in range(reader.numPages):
# 將原文的每一頁(yè)追加到writer對(duì)象中
writer.addPage(reader.getPage(page_num))
# 給writer對(duì)象設(shè)置密碼
writer.encrypt("123456")
# 將加密后的文件寫(xiě)入到新文件中
with open(r'示例文件/旋轉(zhuǎn)和創(chuàng)建空白pdf文件_加密.pdf', 'wb') as file:
writer.write(file)對(duì)pdf文件加密-源碼解析
這段代碼使用了PyPDF2庫(kù)來(lái)讀取一個(gè)已有的PDF文件,將其內(nèi)容復(fù)制到一個(gè)新的PDF文件中,并給新的PDF文件設(shè)置密碼進(jìn)行加密,最后將加密后的文件保存到新的文件中。以下是對(duì)這段代碼的詳細(xì)解析:
1. 導(dǎo)入庫(kù)
import PyPDF2
這行代碼導(dǎo)入了PyPDF2庫(kù),該庫(kù)提供了處理PDF文件的功能。
2. 創(chuàng)建讀取PDF文件對(duì)象
reader = PyPDF2.PdfFileReader('示例文件/旋轉(zhuǎn)和創(chuàng)建空白pdf文件.pdf')
reader = PyPDF2.PdfFileReader('示例文件/旋轉(zhuǎn)和創(chuàng)建空白pdf文件.pdf'):創(chuàng)建一個(gè)PdfFileReader對(duì)象,用于讀取指定的PDF文件。這里的文件路徑是'示例文件/旋轉(zhuǎn)和創(chuàng)建空白pdf文件.pdf'。
3. 創(chuàng)建寫(xiě)入PDF文件的對(duì)象
writer = PyPDF2.PdfFileWriter()
writer = PyPDF2.PdfFileWriter():創(chuàng)建一個(gè)PdfFileWriter對(duì)象,用于寫(xiě)入新的PDF文件。
4. 遍歷原文的每一頁(yè)并追加到writer對(duì)象中
for page_num in range(reader.numPages):
writer.addPage(reader.getPage(page_num))
for page_num in range(reader.numPages):遍歷PDF文件中的每一頁(yè)。
writer.addPage(reader.getPage(page_num)):將當(dāng)前頁(yè)碼對(duì)應(yīng)的頁(yè)面對(duì)象添加到writer對(duì)象中。
5. 給writer對(duì)象設(shè)置密碼
writer.encrypt("123456")
writer.encrypt("123456"):給writer對(duì)象設(shè)置密碼,密碼為"123456"。加密后的PDF文件需要使用這個(gè)密碼才能打開(kāi)。
6. 將加密后的文件寫(xiě)入到新文件中
with open(r'示例文件/旋轉(zhuǎn)和創(chuàng)建空白pdf文件_加密.pdf', 'wb') as file:
writer.write(file)
with open(r'示例文件/旋轉(zhuǎn)和創(chuàng)建空白pdf文件_加密.pdf', 'wb') as file:以二進(jìn)制寫(xiě)模式打開(kāi)一個(gè)新文件,用于保存加密后的PDF文件。
writer.write(file):將writer對(duì)象中的內(nèi)容寫(xiě)入到新文件中。
代碼執(zhí)行流程
導(dǎo)入庫(kù):導(dǎo)入PyPDF2庫(kù)。
創(chuàng)建讀取器對(duì)象:創(chuàng)建用于讀取PDF文件的對(duì)象。
創(chuàng)建寫(xiě)入器對(duì)象:創(chuàng)建用于寫(xiě)入新的PDF文件的對(duì)象。
遍歷每一頁(yè):將原文的每一頁(yè)追加到寫(xiě)入器對(duì)象中。
設(shè)置密碼:給寫(xiě)入器對(duì)象設(shè)置密碼。
保存文件:將加密后的內(nèi)容保存到一個(gè)新的PDF文件中。
示例輸出
假設(shè)原始PDF文件'示例文件/旋轉(zhuǎn)和創(chuàng)建空白pdf文件.pdf'有3頁(yè),經(jīng)過(guò)上述代碼處理后,將會(huì)生成一個(gè)新的PDF文件'示例文件/旋轉(zhuǎn)和創(chuàng)建空白pdf文件_加密.pdf',其中:
內(nèi)容與原始PDF文件相同。
文件被加密,需要使用密碼"123456"才能打開(kāi)。
通過(guò)這段代碼,你可以讀取一個(gè)PDF文件的內(nèi)容,將其復(fù)制到一個(gè)新的PDF文件中,并給新的PDF文件設(shè)置密碼進(jìn)行加密,最后將加密后的文件保存到新的文件中。
對(duì)pdf文件添加水印-源碼
import PyPDF2
# 讀取源文件
reader = PyPDF2.PdfFileReader(r'示例文件/aaa.pdf')
# 讀取水印文件
water = PyPDF2.PdfFileReader(r'示例文件/watermark.pdf')
# 寫(xiě)入pdf文件對(duì)象
writer = PyPDF2.PdfFileWriter()
# 獲取水印頁(yè)
water_page = water.getPage(0)
# 通過(guò)循環(huán)給原文件添加水印
for page_num in range(reader.numPages):
# 獲取當(dāng)前頁(yè)對(duì)象
current_page = reader.getPage(page_num)
# 將源文件的每一頁(yè)與水印頁(yè)合并
current_page.mergePage(water_page)
writer.addPage(current_page)
# 將添加完水印頁(yè)的文件寫(xiě)入到新文件當(dāng)中
with open(r'示例文件/aaa.pdf','wb') as file:
writer.write(file)對(duì)pdf文件添加水印-源碼解析
這段代碼使用了PyPDF2庫(kù)來(lái)讀取一個(gè)源PDF文件和一個(gè)水印PDF文件,然后將水印添加到源文件的每一頁(yè),最后將添加完水印的文件保存到一個(gè)新的文件中。以下是對(duì)這段代碼的詳細(xì)解析:
1. 導(dǎo)入庫(kù)
import PyPDF2
這行代碼導(dǎo)入了PyPDF2庫(kù),該庫(kù)提供了處理PDF文件的功能。
2. 讀取源文件和水印文件
reader = PyPDF2.PdfFileReader(r'示例文件/aaa.pdf') water = PyPDF2.PdfFileReader(r'示例文件/watermark.pdf')
reader = PyPDF2.PdfFileReader(r'示例文件/aaa.pdf'):創(chuàng)建一個(gè)PdfFileReader對(duì)象,用于讀取源PDF文件。這里的文件路徑是'示例文件/aaa.pdf'。
water = PyPDF2.PdfFileReader(r'示例文件/watermark.pdf'):創(chuàng)建一個(gè)PdfFileReader對(duì)象,用于讀取水印PDF文件。這里的文件路徑是'示例文件/watermark.pdf'。
3. 創(chuàng)建寫(xiě)入PDF文件的對(duì)象
writer = PyPDF2.PdfFileWriter()
writer = PyPDF2.PdfFileWriter():創(chuàng)建一個(gè)PdfFileWriter對(duì)象,用于寫(xiě)入新的PDF文件。
4. 獲取水印頁(yè)
water_page = water.getPage(0)
water_page = water.getPage(0):獲取水印PDF文件的第一頁(yè)(索引為0),作為水印頁(yè)。
5. 通過(guò)循環(huán)給原文件添加水印
for page_num in range(reader.numPages):
current_page = reader.getPage(page_num)
current_page.mergePage(water_page)
writer.addPage(current_page)
for page_num in range(reader.num頁(yè)面):遍歷源PDF文件中的每一頁(yè)。
current_page = reader.getPage(page_num):獲取當(dāng)前頁(yè)碼對(duì)應(yīng)的頁(yè)面對(duì)象。
current_page.mergePage(water_page):將水印頁(yè)合并到當(dāng)前頁(yè)上。
writer.addPage(current_page):將合并了水印的當(dāng)前頁(yè)添加到writer對(duì)象中。
6. 將添加完水印頁(yè)的文件寫(xiě)入到新文件當(dāng)中
with open(r'示例文件/aaa.pdf','wb') as file:
writer.write(file)
with open(r'示例文件/aaa.pdf','wb') as file:以二進(jìn)制寫(xiě)模式打開(kāi)一個(gè)新文件,用于保存添加完水印的PDF文件。
writer.write(file):將writer對(duì)象中的內(nèi)容寫(xiě)入到新文件中。
代碼執(zhí)行流程
導(dǎo)入庫(kù):導(dǎo)入PyPDF2庫(kù)。
讀取源文件和水印文件:分別創(chuàng)建用于讀取源PDF文件和水印PDF文件的對(duì)象。
創(chuàng)建寫(xiě)入器對(duì)象:創(chuàng)建用于寫(xiě)入新的PDF文件的對(duì)象。
獲取水印頁(yè):獲取水印PDF文件的第一頁(yè)。
遍歷每一頁(yè)并添加水?。簩⑺№?yè)合并到源PDF文件的每一頁(yè)上,并將合并后的頁(yè)面添加到寫(xiě)入器對(duì)象中。
保存文件:將添加完水印的文件保存到一個(gè)新的文件中。
示例輸出
假設(shè)源PDF文件'示例文件/aaa.pdf'有3頁(yè),水印PDF文件'示例文件/watermark.pdf'有1頁(yè),經(jīng)過(guò)上述代碼處理后,將會(huì)生成一個(gè)新的PDF文件'示例文件/aaa.pdf',其中:
每一頁(yè)都包含了水印。
水印的位置和大小取決于水印頁(yè)的內(nèi)容和源頁(yè)的大小。
通過(guò)這段代碼,你可以讀取一個(gè)源PDF文件和一個(gè)水印PDF文件,將水印添加到源文件的每一頁(yè),最后將添加完水印的文件保存到一個(gè)新的文件中。
以上就是使用python對(duì)pdf文件進(jìn)行加密等操作的詳細(xì)內(nèi)容,更多關(guān)于python pdf加密的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python 實(shí)現(xiàn)目錄復(fù)制的三種小結(jié)
今天小編就為大家分享一篇python 實(shí)現(xiàn)目錄復(fù)制的三種小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
Python數(shù)據(jù)結(jié)構(gòu)與算法之圖的廣度優(yōu)先與深度優(yōu)先搜索算法示例
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之圖的廣度優(yōu)先與深度優(yōu)先搜索算法,結(jié)合實(shí)例形式分析了圖的廣度優(yōu)先與深度優(yōu)先搜索算法原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-12-12
python爬蟲(chóng) 正則表達(dá)式使用技巧及爬取個(gè)人博客的實(shí)例講解
下面小編就為大家?guī)?lái)一篇python爬蟲(chóng) 正則表達(dá)式使用技巧及爬取個(gè)人博客的實(shí)例講解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
使用Python編寫(xiě)簡(jiǎn)單網(wǎng)絡(luò)爬蟲(chóng)抓取視頻下載資源
從上一篇文章的評(píng)論中看出似乎很多童鞋都比較關(guān)注爬蟲(chóng)的源代碼。所有本文就使用Python編寫(xiě)簡(jiǎn)單網(wǎng)絡(luò)爬蟲(chóng)抓取視頻下載資源做了很詳細(xì)的記錄,幾乎每一步都介紹給大家,希望對(duì)大家能有所幫助2014-11-11
Python中break語(yǔ)句和continue語(yǔ)句的用法講解
在Python中,break語(yǔ)句和continue語(yǔ)句一般用于循環(huán)語(yǔ)句中,這篇文章主要介紹了Python中break語(yǔ)句和continue語(yǔ)句的用法小結(jié),需要的朋友可以參考下2022-12-12
解決pandas使用read_csv()讀取文件遇到的問(wèn)題
今天小編就為大家分享一篇解決pandas使用read_csv()讀取文件遇到的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
Python深度學(xué)習(xí)之FastText實(shí)現(xiàn)文本分類(lèi)詳解
FastText是一種典型的深度學(xué)習(xí)詞向量的表示方法,它非常簡(jiǎn)單通過(guò)Embedding層將單詞映射到稠密空間,然后將句子中所有的單詞在Embedding空間中進(jìn)行平均,進(jìn)而完成分類(lèi)操作2022-09-09
Python Reduce函數(shù)的高級(jí)用法詳解
這篇文章主要介紹了reduce函數(shù)的工作原理和應(yīng)用,同時(shí)提供豐富的示例代碼,方便更好地理解如何使用reduce函數(shù)來(lái)輕松解決復(fù)雜的數(shù)據(jù)聚合問(wèn)題,需要的可以參考下2023-11-11

