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

Python中操作PDF文件的常用方法

 更新時(shí)間:2025年02月24日 10:37:24   作者:王子良.  
在 Python 中操作 PDF 文件的常用方法是使用專門的第三方庫,這些庫可以幫助你完成常見的操作,如讀取 PDF 內(nèi)容、提取文本、合并和拆分 PDF 文件、修改文件等,常用的庫包括 PyPDF2、pdfminer、reportlab 等,下面是一些常見任務(wù)的示例,需要的朋友可以參考下

1. 安裝所需庫

首先,需要安裝必要的庫。你可以使用以下命令來安裝這些庫:

pip install PyPDF2
pip install pdfminer.six
pip install reportlab

2. 使用 PyPDF2 操作 PDF 文件

PyPDF2 是一個(gè)非常流行的庫,支持對(duì) PDF 文件進(jìn)行合并、拆分、加密、解密、旋轉(zhuǎn)等操作。

2.1 合并多個(gè) PDF 文件

import PyPDF2
 
# 創(chuàng)建一個(gè) PDF 合并器對(duì)象
pdf_merger = PyPDF2.PdfMerger()
 
# 需要合并的 PDF 文件列表
pdf_files = ['file1.pdf', 'file2.pdf', 'file3.pdf']
 
# 合并 PDF 文件
for pdf in pdf_files:
    pdf_merger.append(pdf)
 
# 輸出合并后的 PDF 文件
pdf_merger.write('merged_output.pdf')
pdf_merger.close()
 
print("PDF 文件合并完成!")

2.2 拆分 PDF 文件

import PyPDF2
 
# 打開 PDF 文件
with open('sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
 
    # 獲取 PDF 文件的頁數(shù)
    total_pages = len(reader.pages)
 
    # 創(chuàng)建一個(gè) PDF 寫入器對(duì)象
    writer = PyPDF2.PdfWriter()
 
    # 拆分為每一頁一個(gè) PDF 文件
    for page_num in range(total_pages):
        writer.add_page(reader.pages[page_num])
 
        # 寫入到新的 PDF 文件
        with open(f'page_{page_num + 1}.pdf', 'wb') as output_file:
            writer.write(output_file)
 
    print("PDF 文件拆分完成!")

2.3 提取 PDF 文件的文本

import PyPDF2
 
# 打開 PDF 文件
with open('sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    text = ""
    
    # 提取所有頁的文本
    for page_num in range(len(reader.pages)):
        page = reader.pages[page_num]
        text += page.extract_text()
 
print("PDF 文件內(nèi)容:")
print(text)

3. 使用 pdfminer 提取 PDF 文本

pdfminer.six 是一個(gè)專注于從 PDF 中提取文本的庫,比 PyPDF2 更適合復(fù)雜的文本提取操作。它支持從 PDF 中提取文本和元數(shù)據(jù)。

3.1 提取 PDF 文件中的文本

from pdfminer.high_level import extract_text
 
# 提取 PDF 文件中的文本
text = extract_text('sample.pdf')
 
print("提取的文本內(nèi)容:")
print(text)

4. 使用 reportlab 創(chuàng)建 PDF 文件

reportlab 是一個(gè)非常強(qiáng)大的庫,主要用于生成 PDF 文件。它提供了豐富的 API 來設(shè)計(jì)和生成 PDF。

4.1 創(chuàng)建一個(gè)簡(jiǎn)單的 PDF 文件

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
 
# 創(chuàng)建一個(gè) PDF 文件并繪制文本
def create_pdf(output_filename):
    c = canvas.Canvas(output_filename, pagesize=letter)
    c.drawString(100, 750, "Hello, this is a simple PDF created with ReportLab!")
    c.save()
 
# 調(diào)用函數(shù)生成 PDF 文件
create_pdf("output.pdf")
print("PDF 文件創(chuàng)建完成!")

4.2 在 PDF 中添加圖像

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
 
def create_pdf_with_image(output_filename):
    c = canvas.Canvas(output_filename, pagesize=letter)
    c.drawString(100, 750, "Here is an image below:")
    
    # 添加圖像
    c.drawImage("image.jpg", 100, 500, width=200, height=150)  # 圖像位置和大小
    
    c.save()
 
create_pdf_with_image("pdf_with_image.pdf")
print("PDF 文件(帶圖像)創(chuàng)建完成!")

5. 使用 PyMuPDF (fitz) 提取文本

PyMuPDF 是一個(gè)處理 PDF、XPS、EPUB 等文件格式的庫,功能非常強(qiáng)大且效率較高。你可以使用它來提取文本、圖像和其他內(nèi)容。

5.1 提取 PDF 文件的文本

import fitz  # PyMuPDF
 
# 打開 PDF 文件
doc = fitz.open('sample.pdf')
 
# 提取所有頁面的文本
text = ""
for page_num in range(len(doc)):
    page = doc.load_page(page_num)
    text += page.get_text()
 
print("PDF 文件的內(nèi)容:")
print(text)

6. 對(duì) PDF 文件進(jìn)行加密和解密

6.1 使用 PyPDF2 對(duì) PDF 進(jìn)行加密

import PyPDF2
 
# 打開 PDF 文件
with open('sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    writer = PyPDF2.PdfWriter()
    
    # 將 PDF 中的所有頁面添加到 writer 對(duì)象中
    for page in reader.pages:
        writer.add_page(page)
    
    # 設(shè)置密碼
    password = "your_password"
    writer.encrypt(password)
    
    # 寫入加密后的文件
    with open('encrypted_sample.pdf', 'wb') as encrypted_file:
        writer.write(encrypted_file)
 
print("PDF 文件加密完成!")

6.2 使用 PyPDF2 對(duì) PDF 進(jìn)行解密

import PyPDF2
 
# 打開加密的 PDF 文件
with open('encrypted_sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    
    # 解密 PDF 文件
    password = "your_password"
    if reader.is_encrypted:
        reader.decrypt(password)
    
    # 創(chuàng)建一個(gè) PDF 寫入器對(duì)象
    writer = PyPDF2.PdfWriter()
    
    # 將解密后的頁面添加到寫入器中
    for page in reader.pages:
        writer.add_page(page)
    
    # 輸出解密后的 PDF 文件
    with open('decrypted_sample.pdf', 'wb') as decrypted_file:
        writer.write(decrypted_file)
 
print("PDF 文件解密完成!")

總結(jié)

使用 Python 處理 PDF 文件是非常常見的任務(wù),通過不同的庫,你可以實(shí)現(xiàn) PDF 的各種操作:

  • PyPDF2:用于合并、拆分、加密、解密和提取文本。
  • pdfminer.six:專注于從 PDF 中提取文本,適合需要復(fù)雜文本解析的場(chǎng)景。
  • reportlab:用于生成 PDF 文件,支持繪圖、添加文本、圖片等。
  • PyMuPDF (fitz):支持高效地提取文本、圖像等,并處理 PDF 文件。

以上就是Python中操作PDF文件的常用方法的詳細(xì)內(nèi)容,更多關(guān)于Python操作PDF文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基礎(chǔ)語音識(shí)別-食物語音識(shí)別baseline(CNN)

    基礎(chǔ)語音識(shí)別-食物語音識(shí)別baseline(CNN)

    這篇文章主要介紹了一個(gè)基礎(chǔ)語音識(shí)別題目-食物語音識(shí)別baseline(CNN),代碼詳細(xì)嗎,對(duì)于想要學(xué)習(xí)語音識(shí)別的朋友可以參考下
    2021-04-04
  • Python Pygame實(shí)戰(zhàn)之超級(jí)炸彈人游戲的實(shí)現(xiàn)

    Python Pygame實(shí)戰(zhàn)之超級(jí)炸彈人游戲的實(shí)現(xiàn)

    如今的玩家們?cè)跓o聊的時(shí)候會(huì)玩些什么游戲呢?王者還是吃雞是最多的選擇。但在80、90年代的時(shí)候多是一些很簡(jiǎn)單的游戲:《超級(jí)瑪麗》、《魂斗羅》等。本文將利用Pygame制作另一個(gè)經(jīng)典游戲—炸彈人,感興趣的可以了解一下
    2022-03-03
  • Python中創(chuàng)建相關(guān)系數(shù)矩陣的方法小結(jié)

    Python中創(chuàng)建相關(guān)系數(shù)矩陣的方法小結(jié)

    相關(guān)系數(shù)矩陣是一種用于衡量變量之間關(guān)系的重要工具,本文將介紹在 Python 中創(chuàng)建相關(guān)系數(shù)矩陣的不同方法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • Python為什么要保留顯式的self

    Python為什么要保留顯式的self

    本文主要介紹了Python為什么要保留顯式的self,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python基于pygame實(shí)現(xiàn)的font游戲字體(附源碼)

    Python基于pygame實(shí)現(xiàn)的font游戲字體(附源碼)

    這篇文章主要介紹了Python基于pygame實(shí)現(xiàn)的font游戲字體,涉及Python響應(yīng)鍵盤按鍵動(dòng)態(tài)操作圖片元素的相關(guān)技巧,需要的朋友可以參考下
    2015-11-11
  • keras 自定義loss層+接受輸入實(shí)例

    keras 自定義loss層+接受輸入實(shí)例

    這篇文章主要介紹了keras 自定義loss層+接受輸入實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python3 Tkinkter + SQLite實(shí)現(xiàn)登錄和注冊(cè)界面

    Python3 Tkinkter + SQLite實(shí)現(xiàn)登錄和注冊(cè)界面

    這篇文章主要為大家詳細(xì)介紹了Python3 Tkinkter + SQLite實(shí)現(xiàn)登錄和注冊(cè)界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 8個(gè)Python必備的PyCharm插件(附下載地址)

    8個(gè)Python必備的PyCharm插件(附下載地址)

    Python是一種廣泛使用的編程語言,PyCharm是最受歡迎的Python IDE之一,本文就來介紹一下8個(gè)Python必備的PyCharm插件,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • python3.5 email實(shí)現(xiàn)發(fā)送郵件功能

    python3.5 email實(shí)現(xiàn)發(fā)送郵件功能

    這篇文章主要為大家詳細(xì)介紹了python3.5 email實(shí)現(xiàn)發(fā)送郵件功能,包含txt、圖片、HTML、附件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • pytorch中的transforms模塊實(shí)例詳解

    pytorch中的transforms模塊實(shí)例詳解

    今天小編就為大家分享一篇pytorch中的transforms模塊實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12

最新評(píng)論