Python中处理Word的一些库
最近由于需要需要对word模板进行一些操作,并且将最后处理之后的word文档转换成pdf格式输出。因此写个文章来记录一下这段时间的学习与收获。下面就简单的列出此次使用到的一些Python库。
1、docxtpl,用于操作word模板
先看效果:
这是处理之前的word模板
这是处理后的word,看起来是不是很神奇呢,试想一下如果有100份甚至更多的需求,是不是只需要一个简单的for循环就解决了呢:
下面直接上代码揭开它的神秘面纱:
from docxtpl import DocxTemplate
from docx.shared import Mm, Pt
tpl = DocxTemplate('demo.docx')
# 对要插入的图片进行处理,这里的docxtpl,默认只有InlineImage(嵌入式插入图片,参数也只有width和height设置图片宽高)
# AnchorImage是自己处理之后的可以插入浮动图片的类pos_x和pos_y用于定位图片位置。
img2_path = docxtpl.AnchorImage(tpl, '2.png', width=Mm(15), height=Mm(10), pos_x=Pt(480), pos_y=Pt(490))
img3_path = docxtpl.AnchorImage(tpl, '3.png', width=Mm(15), height=Mm(10), pos_x=Pt(460), pos_y=Pt(530))
img4_path = docxtpl.AnchorImage(tpl, '4.png', width=Mm(15), height=Mm(10), pos_x=Pt(460), pos_y=Pt(570))
# 定义模板的替换数据
content = {
"arr_year" : 2021, "arr_month" : 4, "arr_day" : 15,
"test_year" : 2021, "test_month" : 4, "test_day" : 22,
"img2" : img2_path,
"img3" : img3_path,
"img4" : img4_path
}
tpl.render(content)
tpl.save('save.docx')
2、reportlab和docx2pdf,用于word转pdf格式
废话不说,直接上代码。
from reportlab.pdfgen import canvas
from docx2pdf import convert
# 已有的word文件
docx_path = 'demo.docx'
# 定义生成的pdf文件路径
pdf_path = 'demo.pdf'
# 先创建pdf文件
c = canvas.Canvas(pdf_path)
c.showPage()
c.save()
if os.path.exists(docx_path) and os.path.exists(pdf_path):
convert(docx_path, pdf_path)
else:
print('路径不存在^_^。')