python 将xls、xlsx、doc、docx文件转为pdf

这个主要参照 https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.office.tools.excel.worksheet.pagesetup?view=vsto-2017
官网对于pageSetup属性的描述

#-*- coding:utf-8 -*-
import os
import win32api#需要下载pywin32的包
import win32com.client  
def pdf_xls(root,filename,name):#转换xls和xlsx为pdf的函数
	if(filename.find('.xlsx')>=0):#文件名有xlsx
		pdfname = 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包打卡excel
	xlApp.Visible = 0 #xls文件不可见
	xlApp.DisplayAlerts = 0   
	books = 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 = 0
	word.DisplayAlerts = 0
	password='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__":
	path=input('输入文档路径')
	for root, directories, files in os.walk(path):#遍历文件目录下的所有文件
		n=0
		for 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()

你可能感兴趣的:(python)