人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

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

發(fā)布日期:2022-03-29 19:21 | 文章來源:CSDN

一、圖示

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

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

二、前期準(zhǔn)備

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

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

#創(chuàng)建虛擬環(huán)境
condacreate-nenv_pdfpython=3.8.8
 
#激活虛擬環(huán)境
condaactivateenv_pdf
 
#安裝三個庫
pipinstallpdf2docx
pipinstallpysimplegui
pipinstallpyinstaller

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

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

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

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

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

三、pdf轉(zhuǎn)word

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

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

基本思路

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

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

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

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

frompdf2docximportConverter
importre
 
#傳入文件絕對路徑
defpdf_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參數(shù)指定待轉(zhuǎn)換pdf文檔的頁碼范圍(默認(rèn)是從0開始到最后一頁);也可以通過pages指定不連續(xù)的頁面,例如pages=[1,3,5]。

四、GUI設(shè)計

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

ue設(shè)計手稿

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

importPySimpleGUIassg
importre
 
#主題設(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工具,作者@微信公眾號:可以叫我才哥',layout,font=("微軟雅黑",15),default_element_size=(50,1))
 
#事件循環(huán)
whileTrue:
event,values=window.read()
ifeventin(None,'關(guān)閉程序'):
break
ifevent=='開始轉(zhuǎn)化':
ifvalues['file']andre.findall(r'\.(\S+)',values['file'])[0]=='pdf':
fileName=values['file']
pdf_to_word(fileName)
print('\n----------轉(zhuǎn)化完畢----------\n')
else:
print('文件未選取或文件非pdf文件\n請先選擇文件')
 
window.close()

不得不說,確實會比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ù)時的返回值:其中event是事件,如點擊按鈕、選擇文件等;values是包含輸入的值,比如我們選擇文件后的文件名信息值。

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

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

五、打包代碼

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

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

部分參數(shù)含義:

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

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

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

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

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

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

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

美國穩(wěn)定服務(wù)器

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部