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

使用Python操作PDF文件

 更新時間:2022年06月13日 10:25:57   作者:springsnow  
這篇文章介紹了Python操作PDF文件的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

從PDF讀取文本內(nèi)容和從已經(jīng)有的文檔生成新的PDF。

需要用到的模塊是PyPDF2.

mstamy2/PyPDF2: A utility to read and write PDFs with Python (github.com)

同時,還要關(guān)注較新的PyPDF4包,因為它很快就會取代PyPDF2。

claird/PyPDF4: A utility to read and write PDFs with Python (github.com)

也可以看看pdfrw包,它也可以執(zhí)行許多與PyPDF2相同的操作。

pmaupin/pdfrw: pdfrw is a pure Python library that reads and writes PDFs (github.com)

首先安裝PyPDF2,在命令行中運行,由于PyPDF2沒有任何依賴,因此安裝非常快。

pip install PyPDF2

操作方法

1、從PDF讀取文本

PyPDF2無法從pdf文檔中提取圖像,圖表和其他媒體,但是它可以提取文本,并且將文本返回為python字符串。

import PyPDF2
# ===============從pdf中提取文本===========
pdffile = open(r'E:\python讓繁瑣的工作自動化\13_處理pdf和word文檔\data\meetingminutes.pdf', 'rb')  # 讀取pdf文件
pdfreader = PyPDF2.PdfFileReader(pdffile)  # 讀入到
print(pdfreader.numPages)  # 讀取pdf頁數(shù)======19

獲取第一頁的內(nèi)容:

page0 = pdfreader.getPage(0)  #獲取第1頁,第一頁是0
print(page0.extractText())  # 獲取第2頁的內(nèi)容,返回的是字符串

內(nèi)容是

2、解密PDF

某些文檔有加密功能,為了防止別人閱讀,只有在打開文檔的時候提供口令才能閱讀。我打開的文件的加密口令是rosebud.

其實在讀取一個pdf文件是首先應該確定它是否加密了。如果加密,isEncrypted屬性就會返回True.此時就需要口令了。

# 某些pdf文件是加密的,防止別人閱讀的,只有打開文檔的時候提供口令才能閱讀
pdf_reader = PyPDF2.PdfFileReader(open(r'E:\python讓繁瑣的工作自動化\13_處理pdf和word文檔\data\encrypted.pdf','rb'))
print(pdf_reader.isEncrypted)  # 文件是否加密

返回的結(jié)果是:

如果這時候不輸入口令就獲取內(nèi)容的話。

print(pdf_reader.getPage(0))  # PyPDF2.utils.PdfReadError: file has not been decrypted 文件還沒有解鎖

會提示出現(xiàn)錯誤。

此時調(diào)用decrypt方法,輸入口令,再讀取就可以啦。

print(pdf_reader.decrypt('rosebud'))  # rosebud==正確口令顯示1,其他顯示0
page_obj = pdf_reader.getPage(0)  # 這樣才能正確讀取
print(page_obj.extractText())

3、創(chuàng)建PDF

PyPDF2可以創(chuàng)建一個新的PDF文件,但是不能將任何文本寫入到PDF。其寫入PDF的能力,僅限于從其他PDF中拷貝頁面、旋轉(zhuǎn)頁面、重疊頁面和加密文件。后面一一介紹。

4、拷貝頁面

# ==========拷貝頁面==============
pdffile1 = open(r'E:\python讓繁瑣的工作自動化\13_處理pdf和word文檔\data\meetingminutes.pdf', 'rb')
pdffile2 = open(r'E:\python讓繁瑣的工作自動化\13_處理pdf和word文檔\data\meetingminutes2.pdf', 'rb')
pdf1_reader = PyPDF2.PdfFileReader(pdffile1)
pdf2_reader = PyPDF2.PdfFileReader(pdffile2)
# 創(chuàng)建一個pdf文檔,這個只是代表pdf文檔的值,并沒有創(chuàng)建實際的文檔。
pdf_writer = PyPDF2.PdfFileWriter()
# 將文檔一頁一頁的讀入到新的文檔
for pagenum in range(pdf1_reader.numPages):
    pageobj = pdf1_reader.getPage(pagenum)
    pdf_writer.addPage(pageobj)

for pagenum in range(pdf2_reader.numPages):
    pageobj = pdf2_reader.getPage(pagenum)
    pdf_writer.addPage(pageobj)
    
# write方法才能真正生成一個文件
pdfoutputfile = open('combin.pdf','wb')
pdf_writer.write(pdfoutputfile)
pdfoutputfile.close()
pdffile1.close()
pdffile2.close()

在對應目錄下生成pdf文件

5、旋轉(zhuǎn)頁面

利用rotateClockwise()和rotateCounterClockwise()方法PDF頁面可以旋轉(zhuǎn)90的整倍數(shù)。

pdffile1 = open(r'E:\python讓繁瑣的工作自動化\13_處理pdf和word文檔\data\meetingminutes.pdf', 'rb')
pdfreaders = PyPDF2.PdfFileReader(pdffile1)
page = pdfreaders.getPage(0)  # 獲取第一頁
page.rotateClockwise(90)  # 第一頁旋轉(zhuǎn)90度
# 創(chuàng)建一個新的PDF文檔
pdfwriter = PyPDF2.PdfFileWriter()
# 添加內(nèi)容
pdfwriter.addPage(page)
# 真實創(chuàng)建PDF文件并寫入內(nèi)容
result = open('ratated.pdf','wb')
pdfwriter.write(result)
# 關(guān)閉文件
result.close()
pdffile1.close()

點擊開PDF文檔,結(jié)果是:

6、疊加頁面

有的時候需要在PDF中添加公司的標志、時間戳或水印。我們用這個庫依然可以實現(xiàn)。

# 給指定的頁面添加水印、公司標志或者時間戳。
pdffile1 = open(r'E:\python讓繁瑣的工作自動化\13_處理pdf和word文檔\data\meetingminutes.pdf', 'rb')
pdf_reader1 = PyPDF2.PdfFileReader(pdffile1)
# 獲取該文檔的第一頁
first_page = pdf_reader1.getPage(0)
# 打開印有水印的PDF文件
water_pdf = PyPDF2.PdfFileReader(r'E:\python讓繁瑣的工作自動化\13_處理pdf和word文檔\data\watermark.pdf', 'rb')
# 在上一個文檔的第一頁中加入這個有水印的文件
first_page.mergePage(water_pdf.getPage(0))
# 將讀取的內(nèi)容寫入到對象中
pdfwriter = PyPDF2.PdfFileWriter()
pdfwriter.addPage(first_page)

結(jié)果是:

7、加密PDF

我們可以對拷貝的頁面進行加密。

pdffile1 = open(r'E:\python讓繁瑣的工作自動化\13_處理pdf和word文檔\data\meetingminutes.pdf', 'rb')
pdf_reader1 = PyPDF2.PdfFileReader(pdffile1)
# 將讀取的內(nèi)容寫入對象中
pdfwriter = PyPDF2.PdfFileWriter()
for pagenum in range(pdf_reader1.numPages):
    pdfwriter.addPage(pdf_reader1.getPage(pagenum))

# 輸入口令
pdfwriter.encrypt('meimei')
# 真正創(chuàng)建PDF文件
result_pdf = open('encry.pdf','wb')
pdfwriter.write(result_pdf)
# 關(guān)閉文件
result_pdf.close()

點擊生成的PDF文件。

輸入密碼才可以打開。

到此這篇關(guān)于Python操作PDF文件的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中Numpy模塊使用詳解

    Python中Numpy模塊使用詳解

    這篇文章主要介紹了Python中Numpy模塊使用詳解,NumPy是Python 的一個擴展程序庫,支持大量的維度數(shù)組與矩陣運算。更多相關(guān)內(nèi)容需要的朋友可以參考一下
    2022-07-07
  • 淺談python輸出列表元素的所有排列形式

    淺談python輸出列表元素的所有排列形式

    今天小編就為大家分享一篇淺談python輸出列表元素的所有排列形式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python實現(xiàn)自動更換ip的方法

    python實現(xiàn)自動更換ip的方法

    這篇文章主要介紹了python實現(xiàn)自動更換ip的方法,涉及Python針對本機網(wǎng)絡配置的相關(guān)操作技巧,非常具有實用價值,需要的朋友可以參考下
    2015-05-05
  • Python OpenCV學習之圖形繪制總結(jié)

    Python OpenCV學習之圖形繪制總結(jié)

    在圖像的任務中,不管是圖像檢測還是圖像識別,我們都需要通過繪制圖形和繪制文字對處理的結(jié)果進行說明,本篇就詳細介紹下OpenCV中的圖形的繪制,感興趣的可以了解一下
    2022-01-01
  • 深入了解python列表(LIST)

    深入了解python列表(LIST)

    這篇文章主要介紹了python列表(LIST)的相關(guān)知識,文中代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-06-06
  • Python 如何反方向迭代一個序列

    Python 如何反方向迭代一個序列

    這篇文章主要介紹了Python 如何反方向迭代一個序列,文中講解非常細致,代碼幫助大家更好理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • OpenCV立體圖像深度圖Depth Map基礎(chǔ)

    OpenCV立體圖像深度圖Depth Map基礎(chǔ)

    這篇文章主要為大家介紹了OpenCV立體圖像深度圖Depth Map基礎(chǔ)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • PHP網(wǎng)頁抓取之抓取百度貼吧郵箱數(shù)據(jù)代碼分享

    PHP網(wǎng)頁抓取之抓取百度貼吧郵箱數(shù)據(jù)代碼分享

    本文給大家介紹PHP網(wǎng)頁抓取之抓取百度貼吧郵箱數(shù)據(jù)代碼分享,程序?qū)崿F(xiàn)了一鍵抓取帖子全部郵箱和分頁抓取郵箱兩個功能,感興趣的朋友一起學習吧
    2016-04-04
  • ipython和python區(qū)別詳解

    ipython和python區(qū)別詳解

    在本篇文章里小編給大家分享了關(guān)于ipython和python區(qū)別的相關(guān)知識點,有興趣的朋友們跟著學習下。
    2019-06-06
  • Python編程之基于概率論的分類方法:樸素貝葉斯

    Python編程之基于概率論的分類方法:樸素貝葉斯

    這篇文章主要介紹了Python編程之基于概率論的分類方法:樸素貝葉斯,簡單介紹了其概述,貝葉斯理論和條件概率,以及樸素貝葉斯的原理等相關(guān)內(nèi)容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11

最新評論