摘要:雖然現在市面上有很多轉軟件,比如,但大多數的軟件是要收費的,并且價格不菲。于是乎我就想到了利用來寫個程序,把轉成文檔。具體的程序邏輯,可以去查看原文。本文首發于公眾號癡海,每天分享干貨,后臺回復,領取最新教程。
閱讀文本大概需要 6 分鐘。
現在網上有很多文檔是 pdf 格式,雖然這個格式閱讀起來很方便,并且里面的內容不會亂掉,但相應的我們就無法修改里面的內容。雖然現在市面上有很多 pdf 轉 word 軟件,比如 wps,但大多數的軟件是要收費的,并且價格不菲。
前些天就有人叫我幫她把 pdf 文檔轉成 word 的文檔。因為 pdf 文檔里面的內容有很多,如果全部打印的話,費用還是挺高的。所以她想把里面的內容格式修改下,比如行間距,字間距等等。通過這樣的修改,可以把文檔的頁數減少很多,這樣就省下不少的錢。
于是乎我就想到了利用 python 來寫個程序,把 pdf 轉成 word 文檔。秉承著不要重復造輪子的想法,我首先在網上搜索了下。果然已經有人寫好了,我們直接拿來用就行。程序一共只有 60 行代碼,使用也非常的簡單,
程序源代碼
import?os from?configparser?import?ConfigParser from?io?import?StringIO from?io?import?open from?concurrent.futures?import?ProcessPoolExecutor from?pdfminer.pdfinterp?import?PDFResourceManager from?pdfminer.pdfinterp?import?process_pdf from?pdfminer.converter?import?TextConverter from?pdfminer.layout?import?LAParams from?docx?import?Document def?read_from_pdf(file_path): ????with?open(file_path,?"rb")?as?file: ????????resource_manager?=?PDFResourceManager() ????????return_str?=?StringIO() ????????lap_params?=?LAParams() ????????device?=?TextConverter( ????????????resource_manager,?return_str,?laparams=lap_params) ????????process_pdf(resource_manager,?device,?file) ????????device.close() ????????content?=?return_str.getvalue() ????????return_str.close() ????????return?content def?save_text_to_word(content,?file_path): ????doc?=?Document() ????for?line?in?content.split(" "): ????????paragraph?=?doc.add_paragraph() ????????paragraph.add_run(remove_control_characters(line)) ????doc.save(file_path) def?remove_control_characters(content): ????mpa?=?dict.fromkeys(range(32)) ????return?content.translate(mpa) def?pdf_to_word(pdf_file_path,?word_file_path): ????content?=?read_from_pdf(pdf_file_path) ????save_text_to_word(content,?word_file_path) def?main(): ????config_parser?=?ConfigParser() ????config_parser.read("config.cfg") ????config?=?config_parser["default"] ????tasks?=?[] ????with?ProcessPoolExecutor(max_workers=int(config["max_worker"]))?as?executor: ????????for?file?in?os.listdir(config["pdf_folder"]): ????????????extension_name?=?os.path.splitext(file)[1] ????????????if?extension_name?!=?".pdf": ????????????????continue ????????????file_name?=?os.path.splitext(file)[0] ????????????pdf_file?=?config["pdf_folder"]?+?"/"?+?file ????????????word_file?=?config["word_folder"]?+?"/"?+?file_name?+?".docx" ????????????print("正在處理:?",?file) ????????????result?=?executor.submit(pdf_to_word,?pdf_file,?word_file) ????????????tasks.append(result) ????while?True: ????????exit_flag?=?True ????????for?task?in?tasks: ????????????if?not?task.done(): ????????????????exit_flag?=?False ????????if?exit_flag: ????????????print("完成") ????????????exit(0) if?__name__?==?"__main__": ????main()使用方法
首先去 github 上把項目 clone 或下載項目到本地.
github : https://github.com/python-fan...
git?clone?git@github.com:simpleapples/pdf2word.git
然后進入項目目錄,建立虛擬環境,并安裝依賴。
pip?install?-r?requirements.txt
最后修改 config.cfg 文件,指定存放 pdf 和 word 文件的文件夾,以及同時工作的進程數,就可以執行 python main.py。
具體的程序邏輯,可以去查看原文。作者都分析的很詳細。
https://zhuanlan.zhihu.com/p/...。
本文首發于公眾號「癡海」,每天分享 Python 干貨,后臺回復「1024」,領取 2018 最新 Python 教程。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42020.html
摘要:今天我們來說一個非常實用的例子,小菜接到組長老王的一個任務,安排一個新的活,這個活是這樣的老王小菜啊,你幫我寫一個登入腳本,跑十幾條命令到服務器上,然后存一下日志。這個時候,小菜偷偷的瞄了一眼組長老王,常舒一口氣,總于寫完了。 Python學了好幾年,發現功力還是那樣,很多同學經常這樣抱...
摘要:為啥你天天刷抖音一點都不煩,因為你覺得視頻好看你有興趣啊。比如我們說你玩是不是要開始搭建一個自己的網站,是不是可以自己寫一個小的腳本來自動發消息給你的女朋友等等,通過這樣的小例子來慢慢的培養自己的學習的興趣。學習,切勿貪快貪多。 大家好,我是菜鳥哥! 周末啦,跟大家聊一下我們粉絲團的情況...
摘要:但發現導出來的沒有高亮語法沒有語法高亮咋看啊,所以到這里我就放棄了,將就用一下博客園生成的吧爬蟲學習上面提供的接口是一個生成一個文件,我是不可能一個一個將鏈接和標題放上去生成的因為博客園上發的也將近篇了。 前言 只有光頭才能變強 之前有讀者問過我:3y你的博客有沒有電子版的呀?我想要份電子版的。我說:沒有啊,我沒有弄過電子版的,我這邊有個文章導航頁面,你可以去文章導航去找來看呀..然后...
閱讀 2137·2021-11-22 15:22
閱讀 1286·2021-11-11 16:54
閱讀 1807·2021-09-23 11:32
閱讀 3007·2021-09-22 10:02
閱讀 1771·2019-08-30 12:59
閱讀 1085·2019-08-29 16:27
閱讀 622·2019-08-29 13:21
閱讀 2464·2019-08-28 17:57