欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python使用PyPDF進(jìn)行PDF操作的代碼示例

 更新時(shí)間:2025年01月22日 10:43:46   作者:ghostwritten  
PDF 是一種非常常見(jiàn)的文件格式,用于文檔共享、電子書(shū)、合同等場(chǎng)景,對(duì)于開(kāi)發(fā)者來(lái)說(shuō),能夠高效地操作 PDF 文件是一個(gè)重要技能,本文將介紹如何使用 Python 的 PyPDF 庫(kù)完成一些常見(jiàn)的 PDF 處理任務(wù),并分享實(shí)戰(zhàn)經(jīng)驗(yàn),需要的朋友可以參考下

1. 為什么選擇 PyPDF?

PyPDF 是一個(gè)輕量級(jí)且功能強(qiáng)大的 PDF 操作庫(kù),支持以下功能:

  • 合并和拆分 PDF 文件
  • 提取文本和元信息
  • 添加或修改文檔的元數(shù)據(jù)
  • 加密和解密 PDF
  • 自定義 PDF 頁(yè)面旋轉(zhuǎn)或裁剪

以下是一些實(shí)戰(zhàn)場(chǎng)景的詳細(xì)實(shí)現(xiàn)。

2. 安裝 PyPDF

首先,需要安裝 PyPDF 庫(kù)。可以使用 pip:

pip install pypdf

確保安裝的是最新版,以獲得最新功能和性能改進(jìn)。

3. PDF 文件的合并與拆分

3.1 合并 PDF 文件

合并多個(gè) PDF 文件在生成報(bào)告或整理文檔時(shí)非常有用。

from pypdf import PdfMerger

# 初始化合并器
merger = PdfMerger()

# 添加需要合并的 PDF 文件
merger.append("file1.pdf")
merger.append("file2.pdf")

# 保存合并后的文件
merger.write("merged.pdf")
merger.close()
print("PDF 合并完成!")

3.2 拆分 PDF 文件

將一個(gè) PDF 文件拆分為多個(gè)獨(dú)立的頁(yè)面文件。

from pypdf import PdfReader, PdfWriter

# 讀取 PDF 文件
reader = PdfReader("input.pdf")

# 拆分每一頁(yè)
for i, page in enumerate(reader.pages):
    writer = PdfWriter()
    writer.add_page(page)
    with open(f"page_{i+1}.pdf", "wb") as output_file:
        writer.write(output_file)
print("PDF 拆分完成!")

4. 提取 PDF 文本

提取 PDF 文件中的文本內(nèi)容,可以用于數(shù)據(jù)分析或自動(dòng)化處理。

from pypdf import PdfReader

# 讀取 PDF 文件
reader = PdfReader("input.pdf")

# 提取每頁(yè)的文本
for page in reader.pages:
    print(page.extract_text())

注意事項(xiàng)

  • 文本提取的效果取決于 PDF 的結(jié)構(gòu)。如果 PDF 中的文本是以圖像形式存儲(chǔ)的,則無(wú)法直接提取文本。

5. 修改 PDF 元信息

修改 PDF 的元數(shù)據(jù),例如標(biāo)題、作者等。

from pypdf import PdfReader, PdfWriter

reader = PdfReader("input.pdf")
writer = PdfWriter()

# 復(fù)制所有頁(yè)面到新 PDF
writer.add_pages(reader.pages)

# 修改元信息
writer.metadata = {
    "/Title": "新的標(biāo)題",
    "/Author": "作者名",
    "/Subject": "主題描述"
}

with open("output.pdf", "wb") as output_file:
    writer.write(output_file)
print("元信息修改完成!")

6. PDF 加密與解密

6.1 加密 PDF

為 PDF 文件添加密碼保護(hù)。

from pypdf import PdfWriter

writer = PdfWriter()
writer.append("input.pdf")

# 設(shè)置密碼
writer.encrypt(user_password="user123", owner_password="owner123")

with open("encrypted.pdf", "wb") as output_file:
    writer.write(output_file)
print("PDF 加密完成!")

6.2 解密 PDF

解密受密碼保護(hù)的 PDF 文件。

from pypdf import PdfReader

reader = PdfReader("encrypted.pdf")

# 提供密碼解密
reader.decrypt("user123")

for page in reader.pages:
    print(page.extract_text())

7. 頁(yè)面旋轉(zhuǎn)與裁剪

7.1 旋轉(zhuǎn)頁(yè)面

旋轉(zhuǎn) PDF 的頁(yè)面,例如將橫向頁(yè)面轉(zhuǎn)為縱向。

from pypdf import PdfReader, PdfWriter

reader = PdfReader("input.pdf")
writer = PdfWriter()

# 旋轉(zhuǎn)每一頁(yè)
for page in reader.pages:
    page.rotate(90)  # 順時(shí)針旋轉(zhuǎn) 90 度
    writer.add_page(page)

with open("rotated.pdf", "wb") as output_file:
    writer.write(output_file)
print("頁(yè)面旋轉(zhuǎn)完成!")

7.2 裁剪頁(yè)面

裁剪頁(yè)面邊框以去掉不必要的內(nèi)容。

from pypdf import PdfReader, PdfWriter

reader = PdfReader("input.pdf")
writer = PdfWriter()

for page in reader.pages:
    # 設(shè)置裁剪框 (左, 下, 右, 上)
    page.mediabox.lower_left = (50, 50)
    page.mediabox.upper_right = (500, 700)
    writer.add_page(page)

with open("cropped.pdf", "wb") as output_file:
    writer.write(output_file)
print("頁(yè)面裁剪完成!")

8. 實(shí)戰(zhàn)經(jīng)驗(yàn)總結(jié)

  1. 處理異常:在實(shí)際操作中,確保捕獲文件讀寫(xiě)或解析過(guò)程中的異常,例如文件不存在或解密失敗。
  2. 測(cè)試 PDF 文件:由于 PDF 文件格式的多樣性,在批量處理前需要先對(duì)樣本文件進(jìn)行測(cè)試。
  3. 性能優(yōu)化:對(duì)于大文件,使用分批加載的方式處理。
  4. 安全性:避免在代碼中硬編碼敏感信息,例如密碼。

到此這篇關(guān)于Python使用PyPDF進(jìn)行PDF操作的代碼示例的文章就介紹到這了,更多相關(guān)Python PyPDF進(jìn)行PDF操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

    這篇文章主要介紹了python讀取浮點(diǎn)數(shù)和讀取文本文件示例,需要的朋友可以參考下
    2014-05-05
  • Python對(duì)象循環(huán)引用垃圾回收算法詳情

    Python對(duì)象循環(huán)引用垃圾回收算法詳情

    這篇文章主要介紹了Python對(duì)象循環(huán)引用垃圾回收算法詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容戒殺,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-09-09
  • Python時(shí)間的精準(zhǔn)正則匹配方法分析

    Python時(shí)間的精準(zhǔn)正則匹配方法分析

    這篇文章主要介紹了Python時(shí)間的精準(zhǔn)正則匹配方法,結(jié)合實(shí)例形式對(duì)比分析了Python針對(duì)時(shí)間格式相關(guān)正則匹配技巧,需要的朋友可以參考下
    2017-08-08
  • Kali Linux安裝ipython2 和 ipython3的方法

    Kali Linux安裝ipython2 和 ipython3的方法

    今天小編就為大家分享一篇Kali Linux安裝ipython2 和 ipython3的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • python圖像處理入門(mén)(一)

    python圖像處理入門(mén)(一)

    這篇文章主要介紹了python圖像處理入門(mén),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • python的ArgumentParser使用及說(shuō)明

    python的ArgumentParser使用及說(shuō)明

    這篇文章主要介紹了python的ArgumentParser使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python實(shí)現(xiàn)單張圖像拼接與批量圖片拼接

    python實(shí)現(xiàn)單張圖像拼接與批量圖片拼接

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)單張圖像拼接與批量圖片拼接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • python?matplotlib繪圖詳解大全(非常詳細(xì)!)

    python?matplotlib繪圖詳解大全(非常詳細(xì)!)

    這篇文章主要給大家介紹了關(guān)于python?matplotlib繪圖詳解的相關(guān)資料,matplotlib是python中用于繪制各種圖像的模塊,功能十分強(qiáng)大,通常與pandas模塊搭配使用,可以生成各種樣視的圖片,用于數(shù)據(jù)的分析和展示,需要的朋友可以參考下
    2023-09-09
  • Python常用內(nèi)置函數(shù)和關(guān)鍵字使用詳解

    Python常用內(nèi)置函數(shù)和關(guān)鍵字使用詳解

    在Python中有許許多多的內(nèi)置函數(shù)和關(guān)鍵字,它們是我們?nèi)粘V薪?jīng)??梢允褂玫牡降囊恍┗A(chǔ)的工具,可以方便我們的工作。本文將詳細(xì)講解他們的使用方法,需要的可以參考一下
    2022-05-05
  • python 實(shí)現(xiàn)從高分辨圖像上摳取圖像塊

    python 實(shí)現(xiàn)從高分辨圖像上摳取圖像塊

    今天小編就為大家分享一篇python 實(shí)現(xiàn)從高分辨圖像上摳取圖像塊,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01

最新評(píng)論