亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

只用40行Python代碼就能寫出pdf轉(zhuǎn)word小工具

 更新時(shí)間:2021年05月31日 10:48:48   作者:程序員啟航  
今天咱們介紹一個(gè)pdf轉(zhuǎn)word的免費(fèi)小工具,滿足這么一個(gè)不常見但是偶爾會(huì)出來煩人的需求文中有非常詳細(xì)的代碼示例,對(duì)小伙伴們很有幫助,需要的朋友可以參考下

一、圖示

上面為pdf截圖內(nèi)容,下面為轉(zhuǎn)化后的word截圖內(nèi)容

Image

接下來,我們?cè)囋囎约簞?dòng)作寫這個(gè)工具吧!

二、前期準(zhǔn)備

由于我們采用的是python進(jìn)行工具編寫,并最終需要打包成一個(gè)exe文件供我們使用。為了降低包體大小,我們需要先創(chuàng)建一個(gè)虛擬環(huán)境備用。

另外,pdf轉(zhuǎn)word有現(xiàn)成的第三方庫pdf2docx,同時(shí)關(guān)于gui我們用的是pysimplegui,打包成exe采用的是pyinstaller。在創(chuàng)建虛擬環(huán)境后,我們將這些需要用到的第三方庫也一一安裝吧。

# 創(chuàng)建虛擬環(huán)境
conda create -n env_pdf python=3.8.8
 
# 激活虛擬環(huán)境
conda  activate env_pdf
 
# 安裝三個(gè)庫
pip install pdf2docx
pip install pysimplegui
pip install pyinstaller

關(guān)于這三個(gè)庫,大家可以查閱官方文檔了解更多:

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

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

pyinstallerhttp://www.pyinstaller.org/

前期準(zhǔn)備工具就緒,我們開始進(jìn)入工具編寫階段。

三、pdf轉(zhuǎn)word

pdf轉(zhuǎn)word感覺是一個(gè)存在已久的話題,現(xiàn)在其實(shí)市面上很多工具可以使用,不過完全免費(fèi)的可能需要認(rèn)真找找。

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

基本思路

  • 利用PyMuPDF獲取頁面元素,例如文本和形狀及其位置
  • 再利用元素間的相對(duì)位置關(guān)系推斷內(nèi)容
  • 最后使用python-docx將上一步解析的內(nèi)容元素重建為docx格式的Word文檔

基于以上情況,咱們這個(gè)工具在進(jìn)行操作的時(shí)候會(huì)存在以下不足

  • 無法識(shí)別和重建PDF掃描件
  • 根據(jù)有限的、確定的規(guī)則建立PDF與docx元素之間的映射并非完全可靠,也就是說僅能處理常見的規(guī)范的格式,而非百分百還原

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

from pdf2docx import Converter
import re
 
# 傳入文件絕對(duì)路徑
def pdf_to_word(fileName):
    pdf_file = fileName
    # 正則獲取不含文件類型后綴的部分,用于組成word文檔絕對(duì)路徑
    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參數(shù)指定待轉(zhuǎn)換pdf文檔的頁碼范圍(默認(rèn)是從0開始到最后一頁);也可以通過pages指定不連續(xù)的頁面,例如pages=[1,3,5]。

四、GUI設(shè)計(jì)

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

Image

ue設(shè)計(jì)手稿

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

import PySimpleGUI as sg
import re
 
# 主題設(shè)置
sg.theme('DarkTeal7')
 
# 布局設(shè)置
layout = [
          [sg.Text('待轉(zhuǎn)化的文件是:',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('開始轉(zhuǎn)化'),sg.Button('關(guān)閉程序')]
         ]      
 
# 創(chuàng)建窗口
window = sg.Window('pdf轉(zhuǎn)word工具,作者@微信公眾號(hào):可以叫我才哥', layout,font=("微軟雅黑", 15),default_element_size=(50,1))    
 
# 事件循環(huán)
while True:
    event, values = window.read()
    if event in (None, '關(guān)閉程序'):
        break
    if event == '開始轉(zhuǎn)化':
        if values['file'] and re.findall(r'\.(\S+)',values['file'])[0]=='pdf':
            fileName = values['file']
            pdf_to_word(fileName)
            print('\n----------轉(zhuǎn)化完畢----------\n')
        else:
            print('文件未選取或文件非pdf文件\n請(qǐng)先選擇文件')
 
window.close()

不得不說,確實(shí)會(huì)比PyQt5要來的簡單。

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

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

  • sg.Text()設(shè)置文本內(nèi)容和格式
  • sg.Output()設(shè)置print輸出的地方
  • sg.FileBrowse()設(shè)置文件選擇瀏覽器,key是指定健名稱,target是選定的文件夾名
  • sg.Button()設(shè)置按鈕
  • sg.Window()是創(chuàng)建窗口,可以帶窗口名稱等信息

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

結(jié)合之前的pdf轉(zhuǎn)word函數(shù),這里的邏輯如下:

當(dāng)我們點(diǎn)擊開始轉(zhuǎn)化按鈕,先判斷是否選擇了pdf文件,如果是則執(zhí)行轉(zhuǎn)化函數(shù),否則就提示文件未選擇或選擇的非pdf文件。

五、打包代碼

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

pyinstaller -F -w pdf轉(zhuǎn)word小工具.py

部分參數(shù)含義:

-F    表示生成單個(gè)可執(zhí)行文件 

-w   表示去掉控制臺(tái)窗口,這在GUI界面時(shí)非常有用 

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

-i     表示可執(zhí)行文件的圖標(biāo)

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

Image

office-word自帶轉(zhuǎn)化功能

到此這篇關(guān)于只用40行Python代碼就能寫出pdf轉(zhuǎn)word小工具的文章就介紹到這了,更多相關(guān)pdf轉(zhuǎn)word小工具內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)檢測文件的MD5值來查找重復(fù)文件案例

    Python實(shí)現(xiàn)檢測文件的MD5值來查找重復(fù)文件案例

    這篇文章主要介紹了Python實(shí)現(xiàn)檢測文件的MD5值來查找重復(fù)文件案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Pytorch上下采樣函數(shù)之F.interpolate數(shù)組采樣操作詳解

    Pytorch上下采樣函數(shù)之F.interpolate數(shù)組采樣操作詳解

    最近用到了上采樣下采樣操作,pytorch中使用interpolate可以很輕松的完成,下面這篇文章主要給大家介紹了關(guān)于Pytorch上下采樣函數(shù)之F.interpolate數(shù)組采樣操作的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Python批量添加水印的優(yōu)雅實(shí)現(xiàn)與進(jìn)階

    Python批量添加水印的優(yōu)雅實(shí)現(xiàn)與進(jìn)階

    在日常圖像處理中,為圖片添加水印是一項(xiàng)常見任務(wù),有多種方法和工具可供選擇,本文將專注于使用Python語言結(jié)合PIL庫批量添加水印,感興趣的可以了解下
    2023-12-12
  • python簡單實(shí)現(xiàn)整數(shù)反轉(zhuǎn)的畫解算法

    python簡單實(shí)現(xiàn)整數(shù)反轉(zhuǎn)的畫解算法

    這篇文章主要介紹了python簡單實(shí)現(xiàn)整數(shù)反轉(zhuǎn)采用了一個(gè)有趣的畫解算法,通過示例的題目描述來對(duì)問題分析進(jìn)行方案的解決,有需要的朋友可以參考下
    2021-08-08
  • Python 腳本拉取 Docker 鏡像問題

    Python 腳本拉取 Docker 鏡像問題

    這篇文章主要介紹了 Python 腳本拉取 Docker 鏡像問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Python數(shù)組并集交集補(bǔ)集代碼實(shí)例

    Python數(shù)組并集交集補(bǔ)集代碼實(shí)例

    這篇文章主要介紹了Python數(shù)組并集交集補(bǔ)集代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • python3中的md5加密實(shí)例

    python3中的md5加密實(shí)例

    今天小編就為大家分享一篇python3中的md5加密實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • python計(jì)算圓周率pi的方法

    python計(jì)算圓周率pi的方法

    這篇文章主要介紹了python計(jì)算圓周率pi的方法,涉及Python針對(duì)數(shù)學(xué)運(yùn)算的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • Python中遇到的小問題及解決方法匯總

    Python中遇到的小問題及解決方法匯總

    到年底了,現(xiàn)在的時(shí)間適合寫點(diǎn)最近的小總結(jié),所以下面這篇文章主要介紹了Python中遇到的一些小問題及解決方法,需要的朋友可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-01-01
  • django 做 migrate 時(shí) 表已存在的處理方法

    django 做 migrate 時(shí) 表已存在的處理方法

    今天小編就為大家分享一篇django 做 migrate 時(shí) 表已存在的處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08

最新評(píng)論