国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用Python批量將PDF轉(zhuǎn)Word

這篇具有很好參考價(jià)值的文章主要介紹了使用Python批量將PDF轉(zhuǎn)Word。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

簡(jiǎn)述

????????以下全部代碼無(wú)法完美對(duì)圖片、表格等非文字形式的內(nèi)容轉(zhuǎn)化。要較好的效果需要使用光學(xué)字符分析等方法進(jìn)行轉(zhuǎn)化

? ? ? ? 我懶,不想將代碼模塊拆分出來(lái)寫注釋

? ? ? ? 除代碼1中有詳細(xì)注釋外,剩下的代碼僅在關(guān)鍵部分進(jìn)行注釋

代碼1:小規(guī)模文件的轉(zhuǎn)換

代碼簡(jiǎn)介

????????不使用線程,挨個(gè)文件轉(zhuǎn)換格式。

????????適用于小規(guī)模的PDF文件批量轉(zhuǎn)換。

????????需要自己選擇PDF文件(可以全選文件,自動(dòng)篩選PDF格式)

代碼內(nèi)容

import os, sys  # 導(dǎo)入操作系統(tǒng)接口和系統(tǒng)相關(guān)的參數(shù)和函數(shù)
from pdf2docx import Converter  # 導(dǎo)入pdf2docx庫(kù)中的Converter類,用于將PDF文件轉(zhuǎn)換為docx格式

import tkinter as tk  # 導(dǎo)入Tkinter庫(kù),用于創(chuàng)建圖形用戶界面
from tkinter import filedialog  # 導(dǎo)入Tkinter庫(kù)中的filedialog模塊,用于打開(kāi)文件對(duì)話框

# 定義一個(gè)函數(shù),用于將PDF文件轉(zhuǎn)換為docx格式
def convert_pdf_to_docx(file_path):
    if os.path.splitext(file_path)[1] == '.pdf':  # 檢查文件的擴(kuò)展名是否為.pdf
        pdf_filename = os.path.basename(file_path)  # 從file_path中提取出文件名(不含路徑)
        word_name = os.path.splitext(pdf_filename)[0] + ".docx"  # 創(chuàng)建新的文件名,將.docx作為擴(kuò)展名

        cv = Converter(pdf_filename)  # 創(chuàng)建一個(gè)Converter對(duì)象,用于轉(zhuǎn)換文件
        cv.convert(word_name)  # 調(diào)用convert方法,將PDF文件轉(zhuǎn)換為docx格式,并將轉(zhuǎn)換后的文件保存為word_name
        cv.close()  # 關(guān)閉轉(zhuǎn)換器對(duì)象

        print(f"**{pdf_filename}**處理完成")  # 打印轉(zhuǎn)換完成的信息

# 創(chuàng)建一個(gè)Tkinter窗口,但不顯示它
root = tk.Tk()
root.withdraw()

# 使用filedialog模塊打開(kāi)一個(gè)文件選擇對(duì)話框,允許用戶選擇多個(gè)文件
file_paths = filedialog.askopenfilenames(title="選擇需要處理的文件")
if len(file_paths) == 0:  # 如果沒(méi)有選擇文件,退出程序
    sys.exit()
else:
    print("待處理文件:")  # 打印提示信息
    for file_path in file_paths:  # 遍歷所有選擇的文件路徑
        print("  ", file_path)  # 打印每個(gè)文件的路徑


# 遍歷所有選擇的文件路徑,并調(diào)用convert_pdf_to_docx函數(shù)進(jìn)行轉(zhuǎn)換
for file_path in file_paths:
    convert_pdf_to_docx(file_path)

print("全部PDF轉(zhuǎn)換完成")  # 打印所有PDF文件轉(zhuǎn)換完成的信息

功能的執(zhí)行

選擇需要轉(zhuǎn)換的文件

選擇你需要轉(zhuǎn)換的文件,可以直接全選

一次只能轉(zhuǎn)換一個(gè)文件夾中的全部文件,無(wú)法進(jìn)入到該文件夾的次級(jí)文件夾中

使用Python批量將PDF轉(zhuǎn)Word,Python,python,pdf,word
選擇需要轉(zhuǎn)換的PDF文件

開(kāi)始轉(zhuǎn)換文件

請(qǐng)注意終端信息窗口,會(huì)提示轉(zhuǎn)換進(jìn)度

使用Python批量將PDF轉(zhuǎn)Word,Python,python,pdf,word
開(kāi)始轉(zhuǎn)換

轉(zhuǎn)換完成

使用Python批量將PDF轉(zhuǎn)Word,Python,python,pdf,word
轉(zhuǎn)換完成

轉(zhuǎn)換效果:

使用Python批量將PDF轉(zhuǎn)Word,Python,python,pdf,word

代碼2:較大規(guī)模文件的轉(zhuǎn)換

更新功能

1.使用多線程模式,一個(gè)文件一條線程的轉(zhuǎn)換文件

2.增加時(shí)間計(jì)算,統(tǒng)計(jì)轉(zhuǎn)換文件需要多少時(shí)間,方便后繼繼續(xù)優(yōu)化提高轉(zhuǎn)換速度

詳細(xì)代碼

import os
import sys
from pdf2docx import Converter
import tkinter as tk
from tkinter import filedialog
import threading
import time

# 定義一個(gè)函數(shù),用于將PDF文件轉(zhuǎn)換為docx格式
def convert_pdf_to_docx(file_path):
    try:
        if os.path.splitext(file_path)[1] == '.pdf':
            #pdf_filename = os.path.basename(file_path)
            #word_name = os.path.splitext(pdf_filename)[0] + ".docx"
            cv = Converter(file_path)
            cv.convert(os.path.splitext(os.path.basename(file_path))[0] + ".docx")
            cv.close()
    except Exception as e:
        print(f"轉(zhuǎn)換 {os.path.basename(file_path)} 時(shí)發(fā)生錯(cuò)誤: {e}")

# 創(chuàng)建一個(gè)Tkinter窗口,但不顯示它
root = tk.Tk()
root.withdraw()

# 使用filedialog模塊打開(kāi)一個(gè)文件選擇對(duì)話框,允許用戶選擇多個(gè)文件
file_paths = filedialog.askopenfilenames(title="選擇需要處理的文件")
if not file_paths:
    sys.exit("沒(méi)有選擇文件,操作取消。")


# 打印待處理的文件
print("待處理文件:")
for file_path in file_paths:
    print("  ", file_path)

# 創(chuàng)建一個(gè)線程列表用于存儲(chǔ)所有的轉(zhuǎn)換線程
threads = []

# 遍歷所有選擇的文件路徑,并創(chuàng)建轉(zhuǎn)換線程
for file_path in file_paths:
    thread = threading.Thread(target=convert_pdf_to_docx, args=(file_path,))
    threads.append(thread)

# 記錄開(kāi)始時(shí)間
start_time = time.time()

# 啟動(dòng)所有的轉(zhuǎn)換線程
for thread in threads:
    thread.start()

# 等待所有的轉(zhuǎn)換線程完成
for thread in threads:
    time.sleep(0.1)# 暫停程序1毫秒
    thread.join()

# 記錄結(jié)束時(shí)間
end_time = time.time()

# 計(jì)算并打印轉(zhuǎn)換完成所需的總時(shí)間
total_time = end_time - start_time
print(f"所有文件轉(zhuǎn)換完成,總共耗時(shí): {total_time:.2f} 秒。")

代碼3:超大規(guī)模文件的轉(zhuǎn)換

功能的更新

1.引入線程池,控制程序消耗的系統(tǒng)資源

詳細(xì)代碼

import os
import logging
from tkinter import Tk, filedialog
from concurrent.futures import ThreadPoolExecutor, as_completed
from pdf2docx import Converter

# 配置日志格式和級(jí)別
logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')

# 定義一個(gè)函數(shù)來(lái)處理單個(gè)PDF文件的轉(zhuǎn)換
def process_pdf_file(pdf_path):
    try:
        pdf_dir = os.path.dirname(pdf_path)
        file_name = os.path.splitext(os.path.basename(pdf_path))[0]
        docx_path = os.path.join(pdf_dir, f"{file_name}.docx")
        
        # 轉(zhuǎn)換PDF到Word
        cv = Converter(pdf_path)
        cv.convert(docx_path, start=0, end=None)
        cv.close()
        
        # 記錄文件保存的信息
        logging.info(f"Converted file saved to {docx_path}")
    except Exception as e:
        # 如果發(fā)生錯(cuò)誤,記錄錯(cuò)誤信息而不是轉(zhuǎn)換成功信息
        logging.error(f"Error processing file {pdf_path}: {e}")

# 創(chuàng)建主窗口
root = Tk()
root.withdraw()  # 隱藏主界面

# 選擇PDF文件
pdf_paths = filedialog.askopenfilenames(title="選擇PDF文件", filetypes=[("PDF files", "*.pdf")])

if pdf_paths:
    # 創(chuàng)建一個(gè)線程池,限制線程數(shù)量為CPU核心數(shù)
    with ThreadPoolExecutor(max_workers=os.cpu_count()*2) as executor:
        # 將任務(wù)提交到線程池
        futures = [executor.submit(process_pdf_file, pdf_path) for pdf_path in pdf_paths]
        
        # 使用as_completed迭代器等待所有任務(wù)完成
        for future in as_completed(futures):
            future.result()
            if future.exception() is not None:
                logging.error(f"An error occurred: {future.exception()}")
            else:
                logging.info(f"File processed successfully: {future.result()}")

    # 所有文件處理完成后,關(guān)閉窗口并退出程序
    root.destroy()
else:
    logging.info("沒(méi)有選擇PDF文件。")

代碼4:超快速PDF文件轉(zhuǎn)換

功能更新

只轉(zhuǎn)換文字,對(duì)任何圖片表格會(huì)出現(xiàn)問(wèn)題

詳細(xì)代碼

import os
import logging
from tkinter import Tk, filedialog
from concurrent.futures import ThreadPoolExecutor, as_completed
import fitz  # PyMuPDF

# 配置日志格式和級(jí)別
logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')

# 定義一個(gè)函數(shù)來(lái)處理單個(gè)PDF文件的轉(zhuǎn)換
def process_pdf_file(pdf_path):
    try:
        pdf_dir = os.path.dirname(pdf_path)
        file_name = os.path.splitext(os.path.basename(pdf_path))[0]
        docx_path = os.path.join(pdf_dir, f"{file_name}.docx")
        
        # 使用PyMuPDF讀取PDF內(nèi)容
        pdf = fitz.open(pdf_path)
        text = ""
        for page in pdf:
            text += page.get_text()
        
        pdf.close()
        
        # 將文本寫入Word文檔(這里需要一個(gè)將文本轉(zhuǎn)換為docx格式的函數(shù))
        with open(docx_path, 'w', encoding='utf-8') as f:
            f.write(text)
        
        # 記錄文件保存的信息
        logging.info(f"Converted file saved to {docx_path}")
    except Exception as e:
        # 如果發(fā)生錯(cuò)誤,記錄錯(cuò)誤信息而不是轉(zhuǎn)換成功信息
        logging.error(f"Error processing file {pdf_path}: {e}")

# 創(chuàng)建主窗口
root = Tk()
root.withdraw()  # 隱藏主窗口

# 選擇PDF文件
pdf_paths = filedialog.askopenfilenames(title="選擇PDF文件", filetypes=[("PDF files", "*.pdf")])

if pdf_paths:
    # 創(chuàng)建一個(gè)線程池
    with ThreadPoolExecutor(max_workers=min(len(pdf_paths), os.cpu_count())) as executor:
        # 將任務(wù)提交到線程池
        futures = [executor.submit(process_pdf_file, pdf_path) for pdf_path in pdf_paths]
        
        # 等待所有任務(wù)完成
        for future in as_completed(futures):
            future.result()

    # 所有文件處理完成后,關(guān)閉窗口并退出程序
    root.destroy()
else:
    logging.info("沒(méi)有選擇PDF文件。")

批量刪除文件夾內(nèi)的全部word:使用Python批量刪除文件夾內(nèi)的Word-CSDN博客

程序打包方式見(jiàn)我的這個(gè)文章:在Vscode中將python打包為exe,超級(jí)簡(jiǎn)單,還能自定義exe的logo_怎么將vscode編寫的代碼打包成exe-CSDN博客文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-850431.html

到了這里,關(guān)于使用Python批量將PDF轉(zhuǎn)Word的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • python 批量修改文件名(PDF、word、Excel、圖片、視頻等)

    python 批量修改文件名(PDF、word、Excel、圖片、視頻等)

    ? ? ? 很多朋友遇到批量修改文件名的問(wèn)題,網(wǎng)上各種搜,操作麻煩不說(shuō)還有些需要付費(fèi)。這里不多廢話,直接上代碼。 一、支持庫(kù) 二、 定義函數(shù) 三、程序入口 四、運(yùn)行,微云 下載:文件分享

    2024年01月23日
    瀏覽(104)
  • 用python批量實(shí)現(xiàn)文件夾中所有pdf轉(zhuǎn)成圖片并插入到一個(gè)word文件中

    要實(shí)現(xiàn)這個(gè)任務(wù),你需要使用Python的幾個(gè)庫(kù): PyPDF2 ?用于處理PDF文件, python-docx ?用于操作Word文件, PIL (或 Pillow )用于處理圖片。 首先,確保你已經(jīng)安裝了這些庫(kù)。如果沒(méi)有,你可以使用pip來(lái)安裝: bash復(fù)制代碼 pip install PyPDF2 python-docx Pillow 接下來(lái)是Python腳本的示例代碼

    2024年01月16日
    瀏覽(33)
  • 使用python將PDF轉(zhuǎn)word

    實(shí)現(xiàn)功能,將程序所在當(dāng)前路徑下的所有PDF文件轉(zhuǎn)化為word 上述代碼中使用了? os ?模塊來(lái)獲取當(dāng)前路徑及構(gòu)建文件路徑,使用了? pdf2docx ?模塊來(lái)進(jìn)行 PDF 到 DOCX 的轉(zhuǎn)換。通過(guò)遍歷當(dāng)前路徑下的所有文件和文件夾,并判斷是否是 PDF 文件,將其轉(zhuǎn)換為 DOCX 文件。 可以使用以下

    2024年02月15日
    瀏覽(25)
  • 使用Python將word轉(zhuǎn)換為pdf

    使用Python將word轉(zhuǎn)換為pdf

    使用Python可以將多個(gè)word文件一起轉(zhuǎn)為pdf,操作比較便捷,可以實(shí)現(xiàn)自動(dòng)化辦公。 代碼如下: 運(yùn)行結(jié)果: 歡迎大家查看作者的主頁(yè),主頁(yè)中還有關(guān)于編程與算法方面的更多內(nèi)容,歡迎大家相互溝通學(xué)習(xí)。

    2024年02月15日
    瀏覽(27)
  • 使用Python將Word文檔轉(zhuǎn)換為PDF的方法

    使用Python將Word文檔轉(zhuǎn)換為PDF的方法

    摘要: 文介紹了如何使用Python編程語(yǔ)言將Word文檔轉(zhuǎn)換為PDF格式的方法。我們將使用python-docx和pywin32庫(kù)來(lái)實(shí)現(xiàn)這個(gè)功能,這些庫(kù)提供了與Microsoft Word應(yīng)用程序的交互能力。 正文: 在現(xiàn)實(shí)生活和工作中,我們可能會(huì)遇到將Word文檔轉(zhuǎn)換為PDF格式的需求。PDF格式具有廣泛的應(yīng)用,可

    2024年02月14日
    瀏覽(33)
  • 使用python做了一個(gè)pdf轉(zhuǎn)word的小工具

    使用python做了一個(gè)pdf轉(zhuǎn)word的小工具

    寫在前面:近來(lái)工作上一直在處理word excel等文檔的處理;于是利用新學(xué)的python寫了一個(gè)小工具 ?1、其實(shí)實(shí)現(xiàn)起來(lái)很簡(jiǎn)單,主要是利用了pdf2docx這個(gè)庫(kù)來(lái)實(shí)現(xiàn) 首先安裝導(dǎo)入pdf2docx庫(kù) ?2、代碼部分: 話不多說(shuō)直接上代碼:

    2024年02月07日
    瀏覽(21)
  • python如何使用最簡(jiǎn)單的方式將PDF轉(zhuǎn)換成Word?

    由于PDF的文件大多都是只讀文件,有時(shí)候?yàn)榱藵M足可以編輯的需要通??梢詫DF文件直接轉(zhuǎn)換成Word文件進(jìn)行操作。 看了網(wǎng)絡(luò)上面的python轉(zhuǎn)換PDF文件為Word的相關(guān)文章感覺(jué)都比較復(fù)雜,并且關(guān)于一些圖表的使用還要進(jìn)行特殊的處理。 本篇文章主要講解關(guān)于如何使用python是實(shí)現(xiàn)將

    2024年02月11日
    瀏覽(20)
  • Python 實(shí)現(xiàn)Word轉(zhuǎn)PDF

    Python 實(shí)現(xiàn)Word轉(zhuǎn)PDF

    通過(guò)將 Word 文檔轉(zhuǎn)換為 PDF,您可以確保文檔在不同設(shè)備上呈現(xiàn)一致,并防止其他人對(duì)文檔內(nèi)容進(jìn)行非授權(quán)修改。此外,在你需要打印文檔時(shí),轉(zhuǎn)換為PDF還能確保打印輸出的準(zhǔn)確性。本文將介紹如何使用 Python 庫(kù)將Word文檔轉(zhuǎn)換為PDF格式 。 Python 將 Word DOCX/DOC 轉(zhuǎn)換為 PDF Python 將

    2024年02月08日
    瀏覽(15)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包