日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

40行代码自己动手写pdf转word小工具(文末附工具下载)

發布時間:2023/12/9 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 40行代码自己动手写pdf转word小工具(文末附工具下载) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

公眾號:可以叫我才哥

大家好,我是啟航。

今天咱們介紹一個pdf轉word的免費小工具,滿足這么一個不常見但是偶爾會出來煩人的需求!

文末附工具及源碼下載方式

我們來先看看小工具操作流程吧!

40行代碼自己動手寫pdf轉word小工具(附工具下載)

對于轉化后的效果對比如下:

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

pdf轉word

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

1. 前期準備

由于我們采用的是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/

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

2. 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()

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

3. GUI設計

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

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,?'關閉程序'):breakif?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()是創建窗口,可以帶窗口名稱等信息

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

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

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

4. 打包代碼

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

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

部分參數含義:

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

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

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

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

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

office-word自帶轉化功能

以上就是本次全部內容,pysimplegui官網有很多案例代碼,大家可以試試,基本上稍微修改下就可以實現很多你想要做的工具功能, 非常值得去體驗!

點贊評論達到10個,咱們在評論區開放工具及源碼下載方式,謝謝支持啦

?文章到這里就結束了,感謝你的觀看

說實在的,每次在后臺看到一些讀者的回應都覺得很欣慰,我想把我收藏的一些編程干貨貢獻給大家,回饋每一個讀者,希望能幫到你們。

干貨主要有:

① 2000多本Python電子書(主流和經典的書籍應該都有了)

② Python標準庫資料(最全中文版)

③ 項目源碼(四五十個有趣且經典的練手項目及源碼)

④ Python基礎入門、爬蟲、web開發、大數據分析方面的視頻(適合小白學習)

⑤? ? Python所有知識點匯總(可以弄清楚Python的所有方向和技術)

*如果你用得到的話可以直接拿走,在我的QQ技術交流群里,可以自助拿走,群號是857113825。*

總結

以上是生活随笔為你收集整理的40行代码自己动手写pdf转word小工具(文末附工具下载)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。