實戰案例:Python輕鬆實現PDF格式轉換(附詳細源碼)

 

 

前言

本文的文字及圖片來源於網絡,僅供學習、交流使用,不具備任何商業用途,版權歸原做者全部,若有問題請及時聯繫咱們以做處理。python

項目背景

  1. 網上PDF轉換工具眼花繚亂,選擇困難症,有些甚至還收費;
  2. 直接以其餘格式打開PDF效果通常較差;
  3. 有些小可愛經過複製粘貼的方式進行操做,浪費了大量的時間。

那麼,有沒有什麼辦法能夠秒速解決這些問題呢?沒錯,Python能夠。廢話很少說,直接上實操。面試

項目實操

1、PDF轉Text網絡

首先,安裝一下操做PDF的庫pdfplumber。pdfplumber 能夠很好的讀取 PDF 文件內容和提取 PDF 中的表格,這個庫不屬於 Python 標準庫,須要單獨安裝。app

pip3 install pdfplumber

 

安裝好了以後,咱導入pdfplumber。工具

import pdfplumber

 

打開PDF論文,並提取論文第2頁面內容。學習

with pdfplumber.open("興業B信託項目風險管理研究.pdf") as p:
    page = p.pages[2]
    textdata = page.extract_text()

 

打印一下textdata,提取到了第2頁的內容以下:優化

 

 

 

此時,你也許疑問了,一篇碩士論文至少也50多頁吧。沒錯,我下載的這篇論文有75頁,咱還得加個for循環,把全部頁面內容提取下來。spa

with pdfplumber.open("興業B信託項目風險管理研究.pdf") as p:
    for i in range(75):
        page = p.pages[i]
        textdata = page.extract_text()
        #print(textdata)

 

內容都提取出來了,接下來就是保存爲text文本。"a"爲指定寫入模式爲追加寫入。完整代碼以下:code

#PDF轉Text
import pdfplumber
with pdfplumber.open("興業B信託項目風險管理研究.pdf") as p:
    for i in range(75):
        page = p.pages[i]
        textdata = page.extract_text()
        #print(textdata)
        data = open("text.text", "a")
        data.write(textdata)

 

 

2、PDF轉Wordblog

須要安裝一下操做Word的庫python-docx。

pip3 install python-docx

 

導入Document方法。

from docx import Document

 

打開PDF論文,並提取論文第2頁面內容。

with pdfplumber.open("興業B信託項目風險管理研究.pdf") as p:
        page = p.pages[2]
        textdata = page.extract_text()

 

新建Word文檔,並將提取的內容存儲到裏面。

document = Document()  #新建一個空白的word文檔
content = document.add_paragraph(textdata)  #在文檔中添加正文段落,將變量textdata導進去
document.save("word.docx")  #保存文檔docx,命名爲word

 

完整代碼以下:

#PDF轉Word1import pdfplumber
from docx import Document
with pdfplumber.open("興業B信託項目風險管理研究.pdf") as p:
        page = p.pages[2]
        textdata = page.extract_text()
        #print(textdata)
        document = Document()  #新建一個空白的word文檔
        content = document.add_paragraph(textdata)  #在文檔中添加正文段落,將變量textdata導進去
        document.save("word.docx")  #保存文檔docx,命名爲word

 

若是要提取所有,加循環。

 

3、PDF轉Excel

這裏所說的PDF轉Excel不是全文轉Excel,而是對論文中的部分表格進行格式轉換,方便在Excel中對數據進行篩選、計算等操做。

本案例PDF論文中第69-75頁爲附錄部分,貼的是財務報表數據,截取部份內容,長這樣:

 

首先,安裝並導入操做Excel表格的庫openpyxl。

pip3 install openpyxlfrom openpyxl import Workbook

 

打開PDF論文,提取論文第69-75頁表格內容,注意這裏range左開右閉。

with pdfplumber.open("興業B信託項目風險管理研究.pdf") as p:
    for i in range(68,75):  #遍歷69頁-75頁
        page = p.pages[i]
        table = page.extract_table()
        #print(table)

 

新建空白的Excel文件,按行寫入從PDF提取的表格數據內容。完整代碼以下:

 #PDF轉Excel 
 import pdfplumber
 from openpyxl import Workbook
 with pdfplumber.open("興業B信託項目風險管理研究.pdf") as p:
     workbook = Workbook()  #新建空白Excel工做簿
     sheet = workbook.active  #激活sheet
     for i in range(68,75):  #遍歷69頁-75頁
         page = p.pages[i]
         table = page.extract_table() #提取表格數據
        #print(table)
        for row in table:  #遍歷全部行
            #print(row)
            sheet.append(row) #按行追加寫入數據
        workbook.save("Excel.xlsx") #保存文件,命名爲Excel
        i += 1
        print("第%d頁PDF提取完成"%i) #提示提取進度

 

 

最終效果以下,好像還能夠。

 

結 語

到這呢,Python對PDF論文的簡單操做就基本結束了。但還有一些值得探討的問題,好比若是有100個PDF且頁數都不同怎麼辦?即便所有提取下來,文件的格式問題若是優化?提取的多個Excel表格如何合併到一個sheet?首先確定的告訴你,python都能解決,我之後也還會寫相關的Python操做。

歡迎點擊右上角關注小編,除了分享技術文章以外還有不少福利,私信學習資料能夠領取包括不限於Python實戰演練、PDF電子文檔、面試集錦、學習資料等。

相關文章
相關標籤/搜索