一个便捷的处理word pdf 及多个word文档合并为一个word的小工具。避开wps等所谓的收费。
import os import docx from docxcompose.composer import Composer from docx2pdf import convert from pdf2docx import Converter import win32com.client as win32 def docxtopdf(): docx_name = input("请输入docx文件存放位置及文件名:").replace('\\', '/', 100) pdf_name = input("请输入转换后pdf文件存放位置及文件名:").replace('\\', '/', 100) convert(docx_name,pdf_name) def pdf_to_word_pdf2docx(pdf_path,word_path): cv = Converter(pdf_path) cv.convert(word_path,start=0,end=None) cv.close() def get_files_lisdir(filefolder_path): """ 获取filefolder_path下的所有文件的绝对路径 :param filefolder_path: 待处理的文件夹 :return:files """ files = []#建立一个空的文件绝对路径列表 for filename in os.listdir(filefolder_path): filename = os.path.join(filefolder_path,filename)#拼接指定文件夹下的所有文件的绝对路径 files.append(filename)#保持文件夹下所有文件的绝对路径到列表中 return files def add_docxfiles(files,output_path): """ 合并files列表中的所有docx文档为一个docx文档 :param files: 合并files列表 :param output_path:输出的文件绝对路径,后缀文件名为docx :return: """ # 建立一个word应用实列 word = win32.gencache.EnsureDispatch('Word.Application') # 启动的应用不可见 word.Visible = False #创建一个新文档实列 output = word.Documents.Add() #拼接docx文档 for file in files: output.Application.Selection.InsertFile(file) #获取合并后文档的内容 docx = output.Range(output.Content.Start,output.Content.End) docx.Font.Name = '宋体' #文件保存到指定的绝对路径 output.SaveAs(output_path) output.Close() def combine_all_docx(files_list,output_path): """ 合并所有docx文档为一个docx文档 :param files_list: 需要合并的docx文档的绝对路径 :return: """ #计算需要合并的docx文档的数量 number_of_sections = len(files_list) #创建一个文档模板对象实列 master = docx.Document() #创建一个容器对象实列 composer = Composer(master) #合并docx文档 for file_i in range(0,number_of_sections): docx_temp = docx.Document(files_list[file_i]) composer.append(docx_temp) composer.save(output_path) print('************************************文档资料处理工具**********************************************') print(' Programming: MaQiang ') docx_or_pdf_sign = input("请选择要操作的类型(转pdf请按 1 ,转docx请按 2,合并docx文档请按 3):").replace('\\', '/', 100) if docx_or_pdf_sign == '1': docxtopdf() elif docx_or_pdf_sign == '2': pdf_name = input("请输入pdf文件存放位置及文件名:").replace('\\', '/', 100) docx_name = input("请输入转换后docx文件存放位置及文件名:").replace('\\', '/', 100) pdf_to_word_pdf2docx(pdf_name,docx_name) elif docx_or_pdf_sign == '3': filefolder_path = input("请输入docx文件存放位置:").replace('\\', '/', 100) files = get_files_lisdir(filefolder_path) add_docx = input("请输入合并后的新docx文件的存放位置及文件名(.docx):").replace('\\', '/', 100) #add_docxfiles(files,add_docx) combine_all_docx(files,add_docx) print('docx文件合并完成,请在 ' + add_docx + ' 下查看。') print('按任意健退出该程序!') os.system("pause")