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

使用Python進(jìn)行PDF文檔處理的常見(jiàn)操作

 更新時(shí)間:2024年09月08日 10:30:16   作者:杰哥在此  
使用 Python 進(jìn)行 PDF 文檔處理可以通過(guò)多種庫(kù)來(lái)實(shí)現(xiàn),包括 PyPDF2、pdfplumber、reportlab、pdfminer 等,這些庫(kù)可以處理不同的 PDF 任務(wù),以下是幾種常見(jiàn)操作及對(duì)應(yīng)的庫(kù)和代碼示例,感興趣的小伙伴跟著小編一起來(lái)看看吧

引言

使用 Python 進(jìn)行 PDF 文檔處理可以通過(guò)多種庫(kù)來(lái)實(shí)現(xiàn),包括 PyPDF2、pdfplumber、reportlab、pdfminer 等。這些庫(kù)可以處理不同的 PDF 任務(wù),例如 提取文本、拆分合并 PDF、修改 PDF、生成 PDF 等。以下是幾種常見(jiàn)操作及對(duì)應(yīng)的庫(kù)和代碼示例。

1. 安裝常用庫(kù)

首先,安裝常用的 PDF 處理庫(kù):

pip install PyPDF2 pdfplumber reportlab

2. 提取 PDF 文本

PyPDF2 和 pdfplumber 都可以用于提取 PDF 文本。PyPDF2 更輕量,但有時(shí)處理復(fù)雜的 PDF 格式效果較差,而 pdfplumber 更加適合處理表格等復(fù)雜結(jié)構(gòu)的 PDF。

使用 PyPDF2 提取文本

import PyPDF2

# 打開(kāi) PDF 文件
with open('sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    
    # 提取每一頁(yè)的文本
    for page_num in range(len(reader.pages)):
        page = reader.pages[page_num]
        text = page.extract_text()
        print(f"第 {page_num + 1} 頁(yè)的文本:\n{text}")

使用 pdfplumber 提取文本

pdfplumber 更適合處理結(jié)構(gòu)化數(shù)據(jù),尤其是表格。

import pdfplumber

# 打開(kāi) PDF 文件
with pdfplumber.open('sample.pdf') as pdf:
    for page_num in range(len(pdf.pages)):
        page = pdf.pages[page_num]
        text = page.extract_text()
        print(f"第 {page_num + 1} 頁(yè)的文本:\n{text}")

3. 合并與拆分 PDF 文件

使用 PyPDF2 合并 PDF 文件

可以將多個(gè) PDF 文件合并為一個(gè)文件。

import PyPDF2

pdf_files = ['file1.pdf', 'file2.pdf', 'file3.pdf']
merger = PyPDF2.PdfMerger()

for pdf in pdf_files:
    merger.append(pdf)

# 保存合并后的 PDF 文件
with open('merged_output.pdf', 'wb') as output_file:
    merger.write(output_file)

使用 PyPDF2 拆分 PDF 文件

將 PDF 文件拆分為單獨(dú)的頁(yè)面。

import PyPDF2

# 打開(kāi) PDF 文件
with open('sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    
    # 按頁(yè)拆分并保存
    for page_num in range(len(reader.pages)):
        writer = PyPDF2.PdfWriter()
        writer.add_page(reader.pages[page_num])
        
        with open(f'split_page_{page_num + 1}.pdf', 'wb') as output_file:
            writer.write(output_file)

4. 創(chuàng)建和修改 PDF

使用 ReportLab 創(chuàng)建 PDF 文件

reportlab 是一個(gè)功能強(qiáng)大的庫(kù),可以用來(lái)生成新的 PDF 文件,支持插入文本、圖片、圖形等。

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

# 創(chuàng)建 PDF 文件
c = canvas.Canvas("output.pdf", pagesize=letter)
c.drawString(100, 750, "Hello, this is a PDF created with ReportLab!")

# 創(chuàng)建矩形
c.rect(100, 700, 400, 100)

# 保存 PDF
c.showPage()
c.save()

使用 ReportLab 插入圖片

你可以使用 reportlab 插入圖片到 PDF 中。

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

c = canvas.Canvas("output_with_image.pdf", pagesize=letter)
c.drawString(100, 750, "This is a PDF with an image:")

# 插入圖片
c.drawImage("image.png", 100, 600, width=200, height=150)

c.showPage()
c.save()

5. 提取 PDF 表格

pdfplumber 提供了提取 PDF 中表格的功能,非常適合處理含有表格的文檔。

import pdfplumber

# 打開(kāi) PDF 文件
with pdfplumber.open('table_sample.pdf') as pdf:
    first_page = pdf.pages[0]
    
    # 提取表格數(shù)據(jù)
    tables = first_page.extract_table()
    
    # 打印提取到的表格數(shù)據(jù)
    for row in tables:
        print(row)

6. PDF 文檔加密與解密

使用 PyPDF2 加密 PDF 文件

你可以加密 PDF 文件,防止未經(jīng)授權(quán)的訪問(wèn)。

import PyPDF2

# 打開(kāi) PDF 文件
with open('sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    writer = PyPDF2.PdfWriter()

    for page_num in range(len(reader.pages)):
        writer.add_page(reader.pages[page_num])

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

    with open('encrypted_output.pdf', 'wb') as output_file:
        writer.write(output_file)

使用 PyPDF2 解密 PDF 文件

如果 PDF 文件已加密,解密并提取文本的方法如下:

import PyPDF2

# 打開(kāi)加密的 PDF 文件
with open('encrypted_output.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    
    # 提供密碼
    reader.decrypt('user123')
    
    # 提取文本
    for page_num in range(len(reader.pages)):
        page = reader.pages[page_num]
        print(page.extract_text())

7. PDF 頁(yè)面旋轉(zhuǎn)

你可以旋轉(zhuǎn) PDF 的某些頁(yè)面,以下是旋轉(zhuǎn)頁(yè)面的示例:

import PyPDF2

# 打開(kāi) PDF 文件
with open('sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    writer = PyPDF2.PdfWriter()
    
    # 旋轉(zhuǎn)每頁(yè) 90 度
    for page in reader.pages:
        page.rotate_clockwise(90)
        writer.add_page(page)
    
    # 保存旋轉(zhuǎn)后的 PDF 文件
    with open('rotated_output.pdf', 'wb') as output_file:
        writer.write(output_file)

總結(jié)

Python 提供了多個(gè)強(qiáng)大的庫(kù)來(lái)處理 PDF 文檔。根據(jù)具體需求,選擇適合的庫(kù)來(lái)完成任務(wù):

  • PyPDF2:適合基本的 PDF 操作,如合并、拆分、加密、旋轉(zhuǎn)等。
  • pdfplumber:適合復(fù)雜的文本和表格提取。
  • reportlab:用于生成和修改 PDF 文件,支持文本、圖像和圖形的繪制。

通過(guò)這些工具,你可以輕松地處理 PDF 文檔的各種操作,從文本提取到生成和修改文檔。

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

相關(guān)文章

  • Python實(shí)戰(zhàn)項(xiàng)目刮刮樂(lè)的實(shí)現(xiàn)詳解流程

    Python實(shí)戰(zhàn)項(xiàng)目刮刮樂(lè)的實(shí)現(xiàn)詳解流程

    讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python實(shí)現(xiàn)一個(gè)刮刮樂(lè)的小項(xiàng)目,大家可以在過(guò)程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • TensorFlow深度學(xué)習(xí)另一種程序風(fēng)格實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)

    TensorFlow深度學(xué)習(xí)另一種程序風(fēng)格實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)

    這篇文章主要介紹了TensorFlow卷積神經(jīng)網(wǎng)絡(luò)的另一種程序風(fēng)格實(shí)現(xiàn)方式示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • 超簡(jiǎn)單的scrapy實(shí)現(xiàn)ip動(dòng)態(tài)代理與更換ip的方法實(shí)現(xiàn)

    超簡(jiǎn)單的scrapy實(shí)現(xiàn)ip動(dòng)態(tài)代理與更換ip的方法實(shí)現(xiàn)

    這篇文章主要介紹了超簡(jiǎn)單的scrapy實(shí)現(xiàn)ip動(dòng)態(tài)代理與更換ip的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python圖像運(yùn)算之頂帽運(yùn)算和底帽運(yùn)算詳解

    Python圖像運(yùn)算之頂帽運(yùn)算和底帽運(yùn)算詳解

    數(shù)學(xué)形態(tài)學(xué)是應(yīng)用于圖像處理和模式識(shí)別領(lǐng)域的新方法。數(shù)學(xué)形態(tài)學(xué)表示以形態(tài)為基礎(chǔ)對(duì)圖像進(jìn)行分析的數(shù)學(xué)工具,基本思想是用具有一定形態(tài)的結(jié)構(gòu)元素去量度和提取圖像中對(duì)應(yīng)形狀以達(dá)到對(duì)圖像分析和識(shí)別的目的。本文將為大家介紹頂帽運(yùn)算和底帽運(yùn)算,需要的可以參考一下
    2022-07-07
  • python實(shí)現(xiàn)人像動(dòng)漫化的示例代碼

    python實(shí)現(xiàn)人像動(dòng)漫化的示例代碼

    這篇文章主要介紹了python實(shí)現(xiàn)人像動(dòng)漫化的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • tensorflow 只恢復(fù)部分模型參數(shù)的實(shí)例

    tensorflow 只恢復(fù)部分模型參數(shù)的實(shí)例

    今天小編就為大家分享一篇tensorflow 只恢復(fù)部分模型參數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • 用tensorflow構(gòu)建線性回歸模型的示例代碼

    用tensorflow構(gòu)建線性回歸模型的示例代碼

    本篇文章主要介紹了用tensorflow構(gòu)建線性回歸模型的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Python并行庫(kù)joblib之delayed函數(shù)與Parallel函數(shù)詳解

    Python并行庫(kù)joblib之delayed函數(shù)與Parallel函數(shù)詳解

    這篇文章主要介紹了Python并行庫(kù)joblib之delayed函數(shù)與Parallel函數(shù)詳解,Joblib就是一個(gè)可以簡(jiǎn)單地將Python代碼轉(zhuǎn)換為并行計(jì)算模式的軟件包,它可非常簡(jiǎn)單并行我們的程序,從而提高計(jì)算速度,需要的朋友可以參考下
    2023-08-08
  • Python/ArcPy遍歷指定目錄中的MDB文件方法

    Python/ArcPy遍歷指定目錄中的MDB文件方法

    今天小編就為大家分享一篇Python/ArcPy遍歷指定目錄中的MDB文件方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • opencv實(shí)現(xiàn)簡(jiǎn)單人臉識(shí)別

    opencv實(shí)現(xiàn)簡(jiǎn)單人臉識(shí)別

    這篇文章主要為大家詳細(xì)介紹了opencv實(shí)現(xiàn)簡(jiǎn)單人臉識(shí)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08

最新評(píng)論

六枝特区| 鄱阳县| 沅陵县| 银川市| 赞皇县| 肇庆市| 宽城| 福建省| 且末县| 孙吴县| 克山县| 剑阁县| 东丽区| 泾阳县| 馆陶县| 岗巴县| 红桥区| 桂林市| 安宁市| 上栗县| 新建县| 吉木萨尔县| 贺州市| 镇雄县| 岐山县| 安达市| 麻栗坡县| 耒阳市| 株洲县| 晋江市| 定边县| 土默特左旗| 阿尔山市| 西城区| 东莞市| 济阳县| 海口市| 姜堰市| 富民县| 布拖县| 鄂托克前旗|