摘要:雖然現(xiàn)在市面上有很多轉(zhuǎn)軟件,比如,但大多數(shù)的軟件是要收費(fèi)的,并且價(jià)格不菲。于是乎我就想到了利用來(lái)寫(xiě)個(gè)程序,把轉(zhuǎn)成文檔。具體的程序邏輯,可以去查看原文。本文首發(fā)于公眾號(hào)癡海,每天分享干貨,后臺(tái)回復(fù),領(lǐng)取最新教程。
閱讀文本大概需要 6 分鐘。
現(xiàn)在網(wǎng)上有很多文檔是 pdf 格式,雖然這個(gè)格式閱讀起來(lái)很方便,并且里面的內(nèi)容不會(huì)亂掉,但相應(yīng)的我們就無(wú)法修改里面的內(nèi)容。雖然現(xiàn)在市面上有很多 pdf 轉(zhuǎn) word 軟件,比如 wps,但大多數(shù)的軟件是要收費(fèi)的,并且價(jià)格不菲。
前些天就有人叫我?guī)退?pdf 文檔轉(zhuǎn)成 word 的文檔。因?yàn)?pdf 文檔里面的內(nèi)容有很多,如果全部打印的話,費(fèi)用還是挺高的。所以她想把里面的內(nèi)容格式修改下,比如行間距,字間距等等。通過(guò)這樣的修改,可以把文檔的頁(yè)數(shù)減少很多,這樣就省下不少的錢(qián)。
于是乎我就想到了利用 python 來(lái)寫(xiě)個(gè)程序,把 pdf 轉(zhuǎn)成 word 文檔。秉承著不要重復(fù)造輪子的想法,我首先在網(wǎng)上搜索了下。果然已經(jīng)有人寫(xiě)好了,我們直接拿來(lái)用就行。程序一共只有 60 行代碼,使用也非常的簡(jiǎn)單,
程序源代碼
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 上把項(xiàng)目 clone 或下載項(xiàng)目到本地.
github : https://github.com/python-fan...
git?clone?git@github.com:simpleapples/pdf2word.git
然后進(jìn)入項(xiàng)目目錄,建立虛擬環(huán)境,并安裝依賴。
pip?install?-r?requirements.txt
最后修改 config.cfg 文件,指定存放 pdf 和 word 文件的文件夾,以及同時(shí)工作的進(jìn)程數(shù),就可以執(zhí)行 python main.py。
具體的程序邏輯,可以去查看原文。作者都分析的很詳細(xì)。
https://zhuanlan.zhihu.com/p/...。
本文首發(fā)于公眾號(hào)「癡?!梗刻旆窒?Python 干貨,后臺(tái)回復(fù)「1024」,領(lǐng)取 2018 最新 Python 教程。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/42020.html
摘要:今天我們來(lái)說(shuō)一個(gè)非常實(shí)用的例子,小菜接到組長(zhǎng)老王的一個(gè)任務(wù),安排一個(gè)新的活,這個(gè)活是這樣的老王小菜啊,你幫我寫(xiě)一個(gè)登入腳本,跑十幾條命令到服務(wù)器上,然后存一下日志。這個(gè)時(shí)候,小菜偷偷的瞄了一眼組長(zhǎng)老王,常舒一口氣,總于寫(xiě)完了。 Python學(xué)了好幾年,發(fā)現(xiàn)功力還是那樣,很多同學(xué)經(jīng)常這樣抱...
摘要:為啥你天天刷抖音一點(diǎn)都不煩,因?yàn)槟阌X(jué)得視頻好看你有興趣啊。比如我們說(shuō)你玩是不是要開(kāi)始搭建一個(gè)自己的網(wǎng)站,是不是可以自己寫(xiě)一個(gè)小的腳本來(lái)自動(dòng)發(fā)消息給你的女朋友等等,通過(guò)這樣的小例子來(lái)慢慢的培養(yǎng)自己的學(xué)習(xí)的興趣。學(xué)習(xí),切勿貪快貪多。 大家好,我是菜鳥(niǎo)哥! 周末啦,跟大家聊一下我們粉絲團(tuán)的情況...
摘要:但發(fā)現(xiàn)導(dǎo)出來(lái)的沒(méi)有高亮語(yǔ)法沒(méi)有語(yǔ)法高亮咋看啊,所以到這里我就放棄了,將就用一下博客園生成的吧爬蟲(chóng)學(xué)習(xí)上面提供的接口是一個(gè)生成一個(gè)文件,我是不可能一個(gè)一個(gè)將鏈接和標(biāo)題放上去生成的因?yàn)椴┛蛨@上發(fā)的也將近篇了。 前言 只有光頭才能變強(qiáng) 之前有讀者問(wèn)過(guò)我:3y你的博客有沒(méi)有電子版的呀?我想要份電子版的。我說(shuō):沒(méi)有啊,我沒(méi)有弄過(guò)電子版的,我這邊有個(gè)文章導(dǎo)航頁(yè)面,你可以去文章導(dǎo)航去找來(lái)看呀..然后...
閱讀 2284·2021-11-22 15:22
閱讀 1431·2021-11-11 16:54
閱讀 1976·2021-09-23 11:32
閱讀 3084·2021-09-22 10:02
閱讀 1855·2019-08-30 12:59
閱讀 1158·2019-08-29 16:27
閱讀 697·2019-08-29 13:21
閱讀 2521·2019-08-28 17:57