文档处理工具

一个便捷的处理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")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值