91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Python代碼寫出pdf轉word小工具

發布時間:2021-05-31 12:42:15 來源:億速云 閱讀:377 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關如何使用Python代碼寫出pdf轉word小工具,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

一、圖示

上面為pdf截圖內容,下面為轉化后的word截圖內容

如何使用Python代碼寫出pdf轉word小工具

接下來,我們試試自己動作寫這個工具吧!

二、前期準備

由于我們采用的是python進行工具編寫,并最終需要打包成一個exe文件供我們使用。為了降低包體大小,我們需要先創建一個虛擬環境備用。

另外,pdf轉word有現成的第三方庫pdf2docx,同時關于gui我們用的是pysimplegui,打包成exe采用的是pyinstaller。在創建虛擬環境后,我們將這些需要用到的第三方庫也一一安裝吧。

# 創建虛擬環境
conda create -n env_pdf python=3.8.8
 
# 激活虛擬環境
conda  activate env_pdf
 
# 安裝三個庫
pip install pdf2docx
pip install pysimplegui
pip install pyinstaller

關于這三個庫,大家可以查閱官方文檔了解更多:

pdf2word : https://dothinking.github.io/pdf2docx/index.html

pysimplegui:https://pysimplegui.readthedocs.io/en/latest/

pyinstaller:http://www.pyinstaller.org/

前期準備工具就緒,我們開始進入工具編寫階段。

三、pdf轉word

pdf轉word感覺是一個存在已久的話題,現在其實市面上很多工具可以使用,不過完全免費的可能需要認真找找。

我們知道python有很多處理pdf文檔的第三方庫以及處理word的第三方庫,所以有人就將這兩類庫的功能進行了整合,從而有了今天的主角pdf2docx

基本思路

  • 利用PyMuPDF獲取頁面元素,例如文本和形狀及其位置

  • 再利用元素間的相對位置關系推斷內容

  • 最后使用python-docx將上一步解析的內容元素重建為docx格式的Word文檔

基于以上情況,咱們這個工具在進行操作的時候會存在以下不足

  • 無法識別和重建PDF掃描件

  • 根據有限的、確定的規則建立PDF與docx元素之間的映射并非完全可靠,也就是說僅能處理常見的規范的格式,而非百分百還原

當然,以上這些我們都不用管,直接參考官方給到的代碼即可:

from pdf2docx import Converter
import re
 
# 傳入文件絕對路徑
def pdf_to_word(fileName):
    pdf_file = fileName
    # 正則獲取不含文件類型后綴的部分,用于組成word文檔絕對路徑
    name = re.findall(r'(.*?)\.',pdf_file)[0]
    docx_file = f'{name}.docx'
 
    cv = Converter(pdf_file)
    cv.convert(docx_file, start=0, end=None)
    cv.close()

其中,startend參數指定待轉換pdf文檔的頁碼范圍(默認是從0開始到最后一頁);也可以通過pages指定不連續的頁面,例如pages=[1,3,5]

四、GUI設計

關于pdf轉word的功能,我們需要的就是選擇待轉化的文件開始轉化即可,另外記錄一下操作流讓我們知道進度就完美了。所以,功能其實很簡單,我們基于以上功能設計簡單的GUI如下:

如何使用Python代碼寫出pdf轉word小工具

ue設計手稿

由于我們這次用到的是pysimplegui這個超級簡單好用的工具庫,那么為了滿足以上功能,編碼如下(思路見注釋)。

import PySimpleGUI as sg
import re
 
# 主題設置
sg.theme('DarkTeal7')
 
# 布局設置
layout = [
          [sg.Text('待轉化的文件是:',font=("微軟雅黑", 12)),sg.Text('',key='filename',size=(50,1),font=("微軟雅黑", 10),text_color='blue')],
          [sg.Text('程序操作記錄',justification='center')],
          [sg.Output(size=(80, 20),font=("微軟雅黑", 10))],                
          [sg.FileBrowse('選擇文件',key='file',target='filename'),sg.Button('開始轉化'),sg.Button('關閉程序')]
         ]      
 
# 創建窗口
window = sg.Window('pdf轉word工具,作者@微信公眾號:可以叫我才哥', layout,font=("微軟雅黑", 15),default_element_size=(50,1))    
 
# 事件循環
while True:
    event, values = window.read()
    if event in (None, '關閉程序'):
        break
    if event == '開始轉化':
        if values['file'] and re.findall(r'\.(\S+)',values['file'])[0]=='pdf':
            fileName = values['file']
            pdf_to_word(fileName)
            print('\n----------轉化完畢----------\n')
        else:
            print('文件未選取或文件非pdf文件\n請先選擇文件')
 
window.close()

不得不說,確實會比PyQt5要來的簡單。

sg.theme('DarkTeal7')是設置gui的主題,pysimplegui提供很多主題,大家可以自由選擇;

layout就是設置布局,具體我們根據UE手稿需求從上到下依次設置:

  • sg.Text()設置文本內容和格式

  • sg.Output()設置print輸出的地方

  • sg.FileBrowse()設置文件選擇瀏覽器,key是指定健名稱,target是選定的文件夾名

  • sg.Button()設置按鈕

  • sg.Window()是創建窗口,可以帶窗口名稱等信息

eventvalues是當執行window.read()函數時的返回值:其中event是事件,如點擊按鈕選擇文件等;values是包含輸入的值,比如我們選擇文件后的文件名信息值。

結合之前的pdf轉word函數,這里的邏輯如下:

當我們點擊開始轉化按鈕,先判斷是否選擇了pdf文件,如果是則執行轉化函數,否則就提示文件未選擇或選擇的非pdf文件。

五、打包代碼

這里采用的是pyinstaller進行程序代碼打包,操作指令如下:

pyinstaller -F -w pdf轉word小工具.py

部分參數含義:

-F    表示生成單個可執行文件 

-w   表示去掉控制臺窗口,這在GUI界面時非常有用 

-p    表示你自己自定義需要加載的類路徑,一般情況下用不到 

-i     表示可執行文件的圖標

其實,最新版本的word(office2019)已經天然支持對非掃描版pdf的讀取和轉化了,大家通過以下流程進行處理:文檔—>打開—>選擇待轉化pdf文件即可。

如何使用Python代碼寫出pdf轉word小工具

office-word自帶轉化功能

關于“如何使用Python代碼寫出pdf轉word小工具”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

北票市| 视频| 伊通| 滁州市| 焉耆| 蒙山县| 黑龙江省| 红河县| 溧水县| 耒阳市| 安岳县| 桦川县| 廉江市| 台湾省| 聊城市| 大余县| 淄博市| 南漳县| 鹤壁市| 广昌县| 建德市| 额尔古纳市| 罗城| 阜新| 西峡县| 扎鲁特旗| 家居| 荔浦县| 南昌县| 房山区| 马尔康县| 瑞昌市| 会东县| 桐庐县| 九龙坡区| 苍南县| 八宿县| 牙克石市| 雷山县| 台前县| 岑溪市|