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