文 |沐沐
來源:GOGO數據「ID: mu_science」
PDF文檔遵循一定的規範,例如精確定位了每個字符出現在頁面上的坐標、根據坐標繪製的各種形狀(線、矩形、曲線等)。所以,用PDF格式傳輸和列印文檔可以保證格式的一致性,不會像Word那樣因為渲染引擎的不同而出現格式錯亂、多頁少頁等問題。pdf2docx使用
from pdf2docx import Converter文件名+'docx'拼接重組word文件(改變格式不變文件名)。import os
from pdf2docx import Converter
def pdf_docx():
# 獲取當前工作目錄
file_path = os.getcwd()
# 遍歷所有文件
for file in os.listdir(file_path):
# 獲取文件後綴
suff_name = os.path.splitext(file)[1]
# 過濾非pdf格式文件
if suff_name != '.pdf':
continue
# 獲取文件名稱
file_name = os.path.splitext(file)[0]
# pdf文件名稱
pdf_name = os.getcwd() + '\\' + file
# 要轉換的docx文件名稱
docx_name = os.getcwd() + '\\' + file_name + '.docx'
# 加載pdf文檔
cv = Converter(pdf_name)
cv.convert(docx_name)
cv.close()測試
我們準備的pdf文檔有格式,有圖片。先來進行測試
控制臺信息列印如下,0.17秒完成了3頁pdf->docx文件的轉換
[INFO] Start to convert E:\Python\pycharm++\GOGO數據\盧本偉.pdf
[INFO] [1/4] Opening document...
[INFO] [2/4] Analyzing document...
[WARNING] Replace font "MicrosoftYaHeiUI" with "Times New Roman" due to lack of data.
Deprecation: 'getText' removed from class 'Page' after v1.19.0 - use 'get_text'.
Deprecation: 'getImageList' removed from class 'Page' after v1.19.0 - use 'get_images'.
Deprecation: 'getImageBbox' removed from class 'Page' after v1.19.0 - use 'get_image_bbox'.
Deprecation: 'getPNGData' removed from class 'Pixmap' after v1.19.0 - use 'tobytes'.
Deprecation: 'getDrawings' removed from class 'Page' after v1.19.0 - use 'get_drawings'.
Deprecation: 'getLinks' removed from class 'Page' after v1.19.0 - use 'get_links'.
Deprecation: 'getArea' removed from class 'Rect' after v1.19.0 - use 'get_area'.
[INFO] [3/4] Parsing pages...
[INFO] (1/3) Page 1
[INFO] (2/3) Page 2
[INFO] (3/3) Page 3
[INFO] [4/4] Creating pages...
[INFO] (1/3) Page 1
[INFO] (2/3) Page 2
[INFO] (3/3) Page 3
[INFO] Terminated in 0.17s.轉換完成後的docx文件格式如下:
現在我們已經完成了pdf轉word的操作,這樣的局限性太大了,萬一我的pc沒有python環境怎麼搞?
接下來我們對文件進行打包,讓你隨時隨地可以轉換文檔python 上常見的打包方式目是通過 pyinstaller 來實現的。
詳細步驟
pyinstaller 是一個命令行工具,下面是詳細步驟2、執行命令 pyinstall -F pdfToword.py
執行完畢會發現生成了 3 個文件夾
其中 dist 文件夾就有我們已經打包完成的 exe 文件。
3、雙擊 exe 就可以運行成功了。一鍵抓換pdf-word
夠方便的吧~~
今天的分享就到此結束啦,
<end>