Task04:Python與pdf

python操作Pdf是辦公自動(dòng)化中很常用的,初級(jí)的pdf自動(dòng)化包括pdf文檔的拆分、合并、提取等操作,更高級(jí)的還包括word與pdf互轉(zhuǎn)等。鑒于剛開始接觸python自動(dòng)化,初級(jí)一些比較常用的操作就夠用了。

1、常用的python操作pdf庫(kù),PyPDF2和pdfplumber,這兩個(gè)庫(kù)各有優(yōu)點(diǎn),其中PyPDF2可以更好的讀取、寫入、分割、合并PDF文件,而pdfplumber可以更好的讀取PDF文件中內(nèi)容和提取PDF中的表格。
2、批量拆分、批量合并
拆分和合并是逆操作,拆分就是把一個(gè)完整的pdf分割成幾個(gè)小的pdf,合并是把想要順序的小的pdf合并成一個(gè)大的pdf,代碼如下:
拆分代碼:

def split_pdf(filename, filepath, save_dirpath, step=5):
"""
拆分PDF為多個(gè)小的PDF文件,
@param filename:文件名
@param filepath:文件路徑
@param save_dirpath:保存小的PDF的文件路徑
@param step: 每step間隔的頁(yè)面生成一個(gè)文件,例如step=5,表示0-4頁(yè)、5-9頁(yè)...為一個(gè)文件
@return:
"""
if not os.path.exists(save_dirpath):
    os.mkdir(save_dirpath)
pdf_reader = PdfFileReader(filepath)
# 讀取每一頁(yè)的數(shù)據(jù)
pages = pdf_reader.getNumPages()
for page in range(0, pages, step):
    pdf_writer = PdfFileWriter()
    # 拆分pdf,每 step 頁(yè)的拆分為一個(gè)文件
    for index in range(page, page+step):
        if index < pages:
            pdf_writer.addPage(pdf_reader.getPage(index))
    # 保存拆分后的小文件
    save_path = os.path.join(save_dirpath, filename+str(int(page/step)+1)+'.pdf')
    print(save_path)
    with open(save_path, "wb") as out:
        pdf_writer.write(out)

print("文件已成功拆分,保存路徑為:"+save_dirpath)

合并代碼:

def concat_pdf(filename, read_dirpath, save_filepath):
"""
合并多個(gè)PDF文件
@param filename:文件名
@param read_dirpath:要合并的PDF目錄
@param save_filepath:合并后的PDF文件路徑
@return:
"""
pdf_writer = PdfFileWriter()
# 對(duì)文件名進(jìn)行排序
list_filename = os.listdir(read_dirpath)
list_filename.sort(key=lambda x: int(x[:-4].replace(filename, "")))
for filename in list_filename:
    print(filename)
    filepath = os.path.join(read_dirpath, filename)
    # 讀取文件并獲取文件的頁(yè)數(shù)
    pdf_reader = PdfFileReader(filepath)
    pages = pdf_reader.getNumPages()
    # 逐頁(yè)添加
    for page in range(pages):
        pdf_writer.addPage(pdf_reader.getPage(page))
# 保存合并后的文件
with open(save_filepath, "wb") as out:
    pdf_writer.write(out)
print("文件已成功合并,保存路徑為:"+save_filepath)

3、提取文字內(nèi)容、提取表格內(nèi)容、提取圖片內(nèi)容
涉及到具體pdf內(nèi)容操作要用到pdfplumber這個(gè)庫(kù)。其中提取文字用到extract_text這個(gè)函數(shù),提取表格內(nèi)容用extract_table這個(gè)函數(shù)。提取圖片要用到PyMuPDF這個(gè)模塊。其中提取文字就是把一頁(yè)整體的文字直接提取出來(lái),表格是直接可以提取出excel。具體操作見參考鏈接。
4、轉(zhuǎn)換pdf2image,添加水印,文檔加密解密

參考鏈接:https://github.com/datawhalechina/team-learning-program/blob/master/OfficeAutomation/Task04%20Python%E6%93%8D%E4%BD%9CPDF.md

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • python 辦公 一、文件處理 1、輸出目錄下所有文件及文件夾 獲取當(dāng)前python程序運(yùn)行目錄import o...
    像素規(guī)劃師閱讀 653評(píng)論 0 5
  • PDF文件格式 如今,可移植文檔格式(PDF)屬于最常用的數(shù)據(jù)格式。在1990年,PDF文檔的結(jié)構(gòu)由Adobe定義...
    __豆約翰__閱讀 11,335評(píng)論 0 10
  • Portable Document Format(可移植文檔格式),或者PDF是一種文件格式,可以用于跨操作系統(tǒng)的...
    諸葛青云999閱讀 4,228評(píng)論 0 5
  • 表情是什么,我認(rèn)為表情就是表現(xiàn)出來(lái)的情緒。表情可以傳達(dá)很多信息。高興了當(dāng)然就笑了,難過就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 129,944評(píng)論 2 7
  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險(xiǎn)厭惡者,不喜歡去冒險(xiǎn),但是人生放棄了冒險(xiǎn),也就放棄了無(wú)數(shù)的可能。 ...
    yichen大刀閱讀 8,223評(píng)論 0 4

友情鏈接更多精彩內(nèi)容