首页 > 编程语言 > 详细

Python将word文档批量转PDF

时间:2020-11-24 15:05:16      阅读:30      评论:0      收藏:0      [点我收藏+]

前面有一篇<Python批量创建word文档(2)- 加图片和表格>的文章,利用这篇文章创建的word文档来批量转PDF文档。代码:

  1 ‘‘‘
  2     #python批量将word文档转换成PDF文件
  3 ‘‘‘
  4 #导入所需库
  5 from docx import Document
  6 from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
  7 from docx.shared import Pt
  8 from docx.shared import Inches
  9 from docx.oxml.ns import qn
 10 from win32com.client import Dispatch, constants, gencache
 11 import os
 12 import time
 13 
 14 #定义今日黄金价格
 15 price = input("请输入今日黄金价格: ")
 16 #定义今日日期
 17 today = time.strftime("%Y{y}%m{m}%d{d}",time.localtime()).format(y=,m=,d=)
 18 #定义客户列表
 19 company_list = [张三,李四,王五,赵六,许七]
 20 
 21 
 22 #开始循环列表,每循环一次创建一个word文档
 23 for customer in company_list:
 24     #开始创建word文档
 25     document = Document()
 26     #定义文档初始格式
 27     document.styles[Normal].font.name = 微软雅黑
 28     document.styles[Normal].font.size = Pt(12)
 29     #设置文档中文字体默认格式
 30     document.styles[Normal]._element.rPr.rFonts.set(qn(w:eastAsia),u微软雅黑)
 31 
 32     #增加图片
 33     document.add_picture(D:/Python代码素材/word自动化办公/banner.jpg, width=Inches(6))
 34 
 35     #向文档中增加第一自然段
 36     p1 = document.add_paragraph()
 37     #设置第一自然段格式
 38     p1.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
 39     #向第一自然段添加内容
 40     run1 = p1.add_run(关于下达%s的价格通知 % today )
 41     #设置内容格式
 42     run1.font.name = 黑体
 43     run1.font.size = Pt(25)
 44     run1.font.bold = True
 45     #设置中文字体格式
 46     run1._element.rPr.rFonts.set(qn(w:eastAsia),u黑体)
 47 
 48     #设置第一自然段的段前段后距离
 49     p1.space_after = Pt(5)
 50     p1.space_before = Pt(5)
 51 
 52     #增加第二自然段
 53     p2 = document.add_paragraph()
 54     #设置第二自然段格式
 55     p2.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT
 56     #增加内容
 57     run2 = p2.add_run(尊敬的:  + customer + , 您好!)
 58     #设置内容格式
 59     run2.font.name = 微软雅黑
 60     run2.font.size = Pt(18)
 61     run2.font.bold = True
 62     #设置中文字体格式
 63     run2._element.rPr.rFonts.set(qn(w:eastAsia),u微软雅黑)
 64 
 65     #增加第三自然段
 66     p3 = document.add_paragraph()
 67     #设置第三自然段对齐方式
 68     p3.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT
 69     #增加内容
 70     run3 = p3.add_run(    为提供优质客户服务,我公司现将%s的黄金价格通知如下! % today)
 71     #设置格式
 72     run3.font.name = 仿宋_GB2312
 73     run3.font.size = Pt(16)
 74     run3.font.bold = True
 75     #设置中文格式
 76     run3._element.rPr.rFonts.set(qn(w:eastAsia),u仿宋_GB2312)
 77 
 78     #增加表格
 79     table = document.add_table(rows=3,cols=3,style="Table Grid")
 80     #合并第一列的单元格
 81     table.cell(0, 0).merge(table.cell(0, 2))
 82     #设置合并后的单元格的格式
 83     table.cell(0, 0).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
 84     #向合并后的单元格内写入内容
 85     table_run = table.cell(0, 0).paragraphs[0].add_run(关于下达%s的价格通知 % today)
 86     #设置字体
 87     table_run.font.name = 隶书
 88     table_run.font.size = Pt(15)
 89     table_run.font.bold = True
 90     #设置中文字体格式
 91     table_run._element.rPr.rFonts.set(qn(w:eastAsia),u隶书)
 92 
 93     #开始向其他单元格写入内容,设置每个单元格的文字内容居中
 94     table.cell(1, 0).text = 日期
 95     table.cell(1, 0).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
 96     table.cell(1, 1).text = 价格
 97     table.cell(1, 1).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
 98     table.cell(1, 2).text = 备注
 99     table.cell(1, 2).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
100 
101     table.cell(2, 0).text = today
102     table.cell(2, 0).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
103     table.cell(2, 1).text = price
104     table.cell(2, 1).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
105     table.cell(2, 2).text = 这里是备注
106     table.cell(2, 2).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
107 
108     #增加第四自然段
109     p4 = document.add_paragraph()
110     #设置第四自然段靠右对齐
111     p4.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT
112     #第四自然段增加内容
113     run4 = p4.add_run((联系人:小刘    电话:18888888888))
114     #设置字体格式
115     run4.font.name = 幼圆
116     run4.font.size = Pt(16)
117     run4.font.bold = True
118     #设置中文字体格式
119     run4._element.rPr.rFonts.set(qn(w:eastAsia),u幼圆)
120 
121     #增加分页符
122     document.add_page_break()
123     #在分页后增加第五自然段
124     p5 = document.add_paragraph()
125     #设置第五自然段对齐方式
126     p5.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
127     #增加第五自然段内容
128     run5 = p5.add_run()
129     run5.font.name = 方正舒体
130     run5.font.size = Pt(30)
131     run5.font.bold = True
132     run5._element.rPr.rFonts.set(qn(w:eastAsia),u方正舒体)
133 
134     #判定要存储的文件是否存在,如果存在就删除
135     if os.path.exists(%s-%s-价格通知.docx % (customer, today)):
136         os.remove(%s-%s-价格通知.docx % (customer, today))
137     #休眠五秒以待代码完成
138     time.sleep(1)
139 
140     #保存文档
141     document.save(%s-%s-价格通知.docx % (customer, today))
142 
143     #利用保存后的word文档转换PDF
144     #先找word文档位置
145     docx_path = %s-%s-价格通知.docx % (customer, today)
146     #要保存pdf文件的位置
147     pdf_path = %s-%s-价格通知.pdf % (customer, today)
148     #调用gencache指向office功能
149     gencache.EnsureModule({00020905-0000-0000-C000-000000000046}, 0, 8, 4)
150     #调用word控件
151     wd = Dispatch(Word.Application)
152     #以只读方式打开word文档
153     doc = wd.Documents.Open(docx_path, ReadOnly=1)
154     #导出生成的pdf文档
155     doc.ExportAsFixedFormat(pdf_path, constants.wdExportFormatPDF, Item=wdExportDocumentWithMarkup,
156                             CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
157     wd.Quit(constants.wdDoNotSaveChanges)
158     time.sleep(5)
159     if os.path.exists(%s-%s-价格通知.docx % (customer, today)):
160         os.remove(%s-%s-价格通知.docx % (customer, today))
161         

完工。

Python将word文档批量转PDF

原文:https://www.cnblogs.com/mafu/p/14029545.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!