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()

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值