1、docx、doc文件转成pdf

将Word文档转换为PDF格式的Python脚本。使用了comtypes.client库来调用Microsoft Word应用程序进行转换。

主要功能如下:
1. 定义了一个名为get_path的函数,该函数接受一个路径作为参数,并返回该路径下所有以.doc或.docx结尾的文件名列表。
2. 在主程序中,首先创建了一个Word应用程序对象,并将其可见性设置为不可见。
3. 然后指定了要转换的Word文档所在的目录路径。
4. 使用get_path函数获取该目录下的所有Word文档文件名和对应的PDF文件名。
5. 对于每个Word文档,通过调用Word应用程序对象的Documents.Open方法打开文档,然后使用`SaveAS`方法将其保存为PDF格式,最后关闭文档。
6. 如果在转换过程中出现异常,会打印出异常信息。

需要注意的是,运行此代码需要安装comtypes库,并且计算机上必须安装了Microsoft Word应用程序。

# !/usr/bin/env python3# -*- coding: utf-8 -*-# @File : doc2pdf.py# @Software: PyCharmimport osimport comtypes.clientdef get_path(path):filename_list = os.listdir(path)wordname_list = [filename for filename in filename_list if filename.endswith((".doc", ".docx"))]for wordname in wordname_list:# 分离word文件名称和后缀,转化为pdf名称pdfname = os.path.splitext(wordname)[0] + '.pdf'# 如果当前word文件对应的pdf文件存在,则不转化if pdfname in filename_list:continuewordpath = os.path.join(path, wordname)# word所在目录pdfpath = os.path.join(path, pdfname)# 存放生成的pdf目录# 生成器yield wordpath, pdfpathif __name__ == '__main__':word = comtypes.client.CreateObject("Word.Application")word.Visiable = 0# 设置可见性,不可见path = "E:\\docx"for w, p in get_path(path):print(w)try:newpdf = word.Documents.Open(w)newpdf.SaveAS(p, FileFormat=17)# 17表示PDF格式newpdf.Close()except Exception as e:print(e)

2、excel文件转pdf

将Excel和Word文档转换为PDF格式的Python脚本。它使用了win32com.client库来调用Microsoft Excel和Word应用程序进行转换。

代码的主要功能如下:
1. 定义了两个函数pdf_xls和pdf_doc,分别用于将Excel文件(.xls和.xlsx)和Word文件(.doc和.docx)转换为PDF格式。
2. pdf_xls函数通过打开Excel应用程序,设置页面参数,然后将Excel文件导出为PDF格式。
3. pdf_doc函数通过打开Word应用程序,设置页面参数,然后将Word文件保存为PDF格式。
4. 在主程序中,指定了要转换的文件路径,并遍历该路径下的所有文件。
5. 对于每个文件,根据文件类型调用相应的转换函数进行处理。
6. 如果转换过程中出现异常,会将错误信息写入名为error_data.txt的文件中。

需要注意的是,运行此代码需要安装pywin32包,并且计算机上必须安装了Microsoft Excel和Word应用程序。

# !/usr/bin/env python3# -*- coding: utf-8 -*-# @File : excel2pdf.py# @Software: PyCharm# -*- coding:utf-8 -*-import osimport win32api# 需要下载pywin32的包import win32com.clientdef pdf_xls(root, filename, name):# 转换xls和xlsx为pdf的函数if (filename.find('.xlsx') >= 0):# 文件名有xlsxpdfname = root + os.sep + filename.replace(".xlsx", ".pdf")# 将文件名变为pdf后缀else:pdfname = root + os.sep + filename.replace(".xls", ".pdf")# 将xls文件名转换为pdf后缀xlApp = win32com.client.Dispatch('Excel.Application')# pywin32包打卡excelxlApp.Visible = 0# xls文件不可见xlApp.DisplayAlerts = 0books = xlApp.Workbooks.Open(name, False)for sh in books.Sheets:# 每个表格中设置pagesetup的参数sh.PageSetup.Orientation = 1# 设置横向以及纵向sh.PageSetup.Zoom = False# 设置缩放大小,false说明不以此缩放依据sh.PageSetup.FitToPagesWide = 1# 以适应宽度的方式缩放books.ExportAsFixedFormat(0, pdfname)# 导出pdf文件books.Close()# 关闭表格print('保存 PDF 文件:', pdfname)xlApp.Quit()# 关闭打开excel的进程def pdf_doc(root, filename, name):# doc以及docx打开pdf文件if (name.find('.docx') >= 0):pdfname = root + os.sep + filename.replace(".docx", ".pdf")else:pdfname = root + os.sep + filename.replace(".doc", ".pdf")print(pdfname)exec_tool = 'kwps.application'word = win32com.client.DispatchEx(exec_tool)word.Visible = 0word.DisplayAlerts = 0password = '666666'# 文档的打开密码,即使没有密码也可以打开doc = word.Documents.Open(name, True, False, False, password, password, Visible=False)# 以有文档密码的方式打开doc文档,参数不可以缺省doc.SaveAs(pdfname, FileFormat=17)# 转换为pdf文件# doc.ExportAsFixedFormat(0,pdfname)doc.Close()word.Quit()if __name__ == "__main__":# 输入excel文件的路径path = "E:\\xlsx"for root, directories, files in os.walk(path):# 遍历文件目录下的所有文件n = 0for fileList in files:name = root + os.sep + fileList# 文件名if (name.find('.doc') >= 0):print(name + "开始执行")try:pdf_doc(root, fileList, name)print(name + "已完成执行")except Exception as re:f = open("error_data.txt", "a", encoding='UTF-8')f.write(str(name) + str(re) + "\n")f.close()if name.find('.xls') >= 0:print(name + "开始执行")try:pdf_xls(root, fileList, name)# root 目录 fileList 文档名称 name 文件加文档名except Exception as re:f = open("error_data.txt", "a", encoding='UTF-8')f.write(name + str(re) + "\n")f.close()