最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用python對pdf文件進(jìn)行加密等操作

 更新時間:2024年12月18日 08:53:09   作者:樂茵安全  
這篇文章主要為大家詳細(xì)介紹了使用python對pdf文件進(jìn)行加密等操作的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

利用python對pdf文件進(jìn)行操作

讀取pdf-源碼

import PyPDF2
# 讀取pdf格式的文件
reader = PyPDF2.PdfFileReader('示例文件/aaa.pdf')
print(reader)
 
# 讀取指定頁面的文件
page = reader.getPage(0)
# 輸出當(dāng)前頁面的文本數(shù)據(jù)
print(page.extractText())

讀取pdf-源碼解析

這段代碼使用了PyPDF2庫來讀取和處理PDF文件。以下是對這段代碼的詳細(xì)分析:

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():從當(dāng)前頁面(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ù)。

注意事項(xiàng)

確保PDF文件路徑正確,并且文件存在。

PyPDF2庫可能無法完美提取所有PDF文件中的文本,特別是那些包含復(fù)雜格式或圖像的PDF文件。

如果PDF文件受密碼保護(hù),需要先解密文件才能讀取內(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文件中的所有頁碼進(jìn)行遍歷
for page_num in range(reader.numPages):
    # print(page_num)
    # 獲取當(dāng)前頁面對象
    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文件,對每一頁進(jìn)行旋轉(zhuǎn)操作,并添加一個空白頁,最后將修改后的內(nèi)容保存到一個新的PDF文件中。以下是對這段代碼的詳細(xì)解析:

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文件中的所有頁碼進(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文件中的每一頁。

current_page = reader.getPage(page_num):獲取當(dāng)前頁碼對應(yīng)的頁面對象。

if page_num % 2 == 0:判斷當(dāng)前頁碼是否為偶數(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:以二進(jìn)制寫模式打開一個新文件,用于保存修改后的PDF文件。

writer.write(file):將writer對象中的內(nèi)容寫入到新文件中。

代碼執(zhí)行流程

導(dǎo)入庫:導(dǎo)入PyPDF2庫。

創(chuàng)建讀取器和寫入器對象:分別創(chuàng)建用于讀取和寫入PDF文件的對象。

獲取總頁數(shù):獲取PDF文件中的總頁數(shù)。

遍歷每一頁:對每一頁進(jìn)行旋轉(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文件的每一頁進(jìn)行旋轉(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è)置密碼進(jìn)行加密,最后將加密后的文件保存到新的文件中。以下是對這段代碼的詳細(xì)解析:

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)):將當(dāng)前頁碼對應(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:以二進(jìn)制寫模式打開一個新文件,用于保存加密后的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è)置密碼進(jìn)行加密,最后將加密后的文件保存到新的文件中。

對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):
    # 獲取當(dāng)前頁對象
    current_page = reader.getPage(page_num)
    # 將源文件的每一頁與水印頁合并
    current_page.mergePage(water_page)
    writer.addPage(current_page)
 
# 將添加完水印頁的文件寫入到新文件當(dāng)中
with open(r'示例文件/aaa.pdf','wb') as file:
    writer.write(file)

對pdf文件添加水印-源碼解析

這段代碼使用了PyPDF2庫來讀取一個源PDF文件和一個水印PDF文件,然后將水印添加到源文件的每一頁,最后將添加完水印的文件保存到一個新的文件中。以下是對這段代碼的詳細(xì)解析:

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):獲取當(dāng)前頁碼對應(yīng)的頁面對象。

current_page.mergePage(water_page):將水印頁合并到當(dāng)前頁上。

writer.addPage(current_page):將合并了水印的當(dāng)前頁添加到writer對象中。

6. 將添加完水印頁的文件寫入到新文件當(dāng)中

with open(r'示例文件/aaa.pdf','wb') as file:
    writer.write(file)

with open(r'示例文件/aaa.pdf','wb') as file:以二進(jìn)制寫模式打開一個新文件,用于保存添加完水印的PDF文件。

writer.write(file):將writer對象中的內(nèi)容寫入到新文件中。

代碼執(zhí)行流程

導(dǎo)入庫:導(dǎo)入PyPDF2庫。

讀取源文件和水印文件:分別創(chuàng)建用于讀取源PDF文件和水印PDF文件的對象。

創(chuàng)建寫入器對象:創(chuàng)建用于寫入新的PDF文件的對象。

獲取水印頁:獲取水印PDF文件的第一頁。

遍歷每一頁并添加水印:將水印頁合并到源PDF文件的每一頁上,并將合并后的頁面添加到寫入器對象中。

保存文件:將添加完水印的文件保存到一個新的文件中。

示例輸出

假設(shè)源PDF文件'示例文件/aaa.pdf'有3頁,水印PDF文件'示例文件/watermark.pdf'有1頁,經(jīng)過上述代碼處理后,將會生成一個新的PDF文件'示例文件/aaa.pdf',其中:

每一頁都包含了水印。

水印的位置和大小取決于水印頁的內(nèi)容和源頁的大小。

通過這段代碼,你可以讀取一個源PDF文件和一個水印PDF文件,將水印添加到源文件的每一頁,最后將添加完水印的文件保存到一個新的文件中。

以上就是使用python對pdf文件進(jìn)行加密等操作的詳細(xì)內(nèi)容,更多關(guān)于python pdf加密的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • windows下Virtualenvwrapper安裝教程

    windows下Virtualenvwrapper安裝教程

    這篇文章主要為大家詳細(xì)介紹了windows下Virtualenvwrapper安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Python中獲取秒級時間戳的實(shí)踐指南

    Python中獲取秒級時間戳的實(shí)踐指南

    在計(jì)算機(jī)編程中,時間戳是一個非常重要的概念,它表示自?1970?年?1?月?1?日(UTC)以來經(jīng)過的秒數(shù),在?Python?中,獲取當(dāng)前時間的時間戳是一項(xiàng)常見的任務(wù),尤其是在處理日志、數(shù)據(jù)庫時間戳或者需要時間同步的場景中,本文介紹了Python中獲取秒級時間戳的實(shí)踐指南
    2024-12-12
  • python進(jìn)階之自定義可迭代的類

    python進(jìn)階之自定義可迭代的類

    這篇文章主要為大家詳細(xì)介紹了python進(jìn)階之自定義可迭代的類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • python讀取浮點(diǎn)數(shù)和讀取文本文件示例

    python讀取浮點(diǎn)數(shù)和讀取文本文件示例

    這篇文章主要介紹了python讀取浮點(diǎn)數(shù)和讀取文本文件示例,需要的朋友可以參考下
    2014-05-05
  • Python3 中sorted() 函數(shù)的用法

    Python3 中sorted() 函數(shù)的用法

    Sort函數(shù)是list列表中的函數(shù),而sorted可以對list或者iterator進(jìn)行排序。這篇文章主要介紹了Python3 中sorted() 函數(shù)的用法,需要的朋友可以參考下
    2020-03-03
  • Pytorch maxpool的ceil_mode用法

    Pytorch maxpool的ceil_mode用法

    今天小編就為大家分享一篇Pytorch maxpool的ceil_mode用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python運(yùn)維自動化Paramiko的實(shí)現(xiàn)示例

    python運(yùn)維自動化Paramiko的實(shí)現(xiàn)示例

    Paramiko是Python的SSH庫,提供SSHClient和SFTPClient類,用于遠(yuǎn)程命令執(zhí)行及文件傳輸,支持連接、執(zhí)行、上傳下載,適用于自動化部署等場景,下面就來詳細(xì)介紹一下Paramiko的使用
    2025-08-08
  • 淺談python擴(kuò)展包安裝失敗解決方案

    淺談python擴(kuò)展包安裝失敗解決方案

    Python包安裝失敗最主要原因是默認(rèn)安裝源為國外服務(wù)器,安裝速度慢,但是在使用python擴(kuò)展包安裝失敗,本文就來介紹一下,感興趣的可以了解一下
    2023-09-09
  • python字符串和常用數(shù)據(jù)結(jié)構(gòu)知識總結(jié)

    python字符串和常用數(shù)據(jù)結(jié)構(gòu)知識總結(jié)

    在本文中我們系統(tǒng)的給大家整理了關(guān)于python字符串和常用數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識點(diǎn)以及實(shí)例代碼,需要的朋友們學(xué)習(xí)下。
    2019-05-05
  • Python?八個數(shù)據(jù)清洗實(shí)例代碼詳解

    Python?八個數(shù)據(jù)清洗實(shí)例代碼詳解

    不管你承不承認(rèn),數(shù)據(jù)清洗著實(shí)不是一件簡單的任務(wù),大多數(shù)情況下這項(xiàng)工作是十分耗時而乏味的,但它又是十分重要的,本篇文章帶給你八個實(shí)例代碼
    2022-01-01

最新評論

田东县| 荔波县| 永和县| 新河县| 衡山县| 介休市| 中超| 乌拉特前旗| 谢通门县| 宁海县| 万年县| 洞口县| 鲁甸县| 建昌县| 元氏县| 香港| 望奎县| 长春市| 建昌县| 镇坪县| 左贡县| 宜都市| 平潭县| 榕江县| 七台河市| 咸阳市| 扶沟县| 闽清县| 墨玉县| 邻水| 庆安县| 富民县| 永城市| 游戏| 江永县| 巴东县| 兴隆县| 贵阳市| 库尔勒市| 高安市| 庄浪县|