现需要做一份数据报告,报告中只需插入少量图片,其他部分的文字和格式不变,需要将图片插入word文件的指定位置,并最终生成一份pdf报告。注意:是基于已有word文件插入图片,不是创建word文件的同时插入图片。
本文将图片插入指定位置的方法,是使用“表格定位”法。所使用的第三方库为:python-docx (操作word文件),win32com(word文件转成pdf),所需自行安装。
在word文件中实现任意位置插入图片,同时,可通过设置表格的格式,将插入图片的位置进行居中显示,表格的框线去除等。
以下代码可实现上述所有内容,各位小伙伴可根据自己需求再进行优化。
from win32com.client import constants,gencache
from docx import Document
from docx.shared import Inches,Pt,Cm
# 将图片插入word指定位置
def save_img_to_doc(img):
loc_doc = 'C:\\Users\\dongjunli\\Desktop\\report.docx'
rloc_doc = 'C:\\Users\\dongjunli\\Desktop\\r_report.docx'
# 打开模板文件
document = Document(loc_doc)
document.tables #搜索word里面所有的表格
tb1=document.tables[4] #选好将图片插入的位置,以表格的位置来确定,‘4’代表第5个表格
tb1.cell(0, 0).paragraphs[0].add_run().add_picture(img) #在表格(0,0)位置的单元格的第一个段落里添加图像
# print('图形图像的数量:', len(document.inline_shapes))
document.inline_shapes[0].height = Cm(10.55) #指定插入图片的高度
document.inline_shapes[0].width = Cm(14.55) #指定插入图片的宽度
document.save(rloc_doc) #保存为新的word文件
# word文件转换为pdf文件
def word2pdf(rloc_doc,pdfPath):
wordPath = rloc_doc
word = gencache.EnsureDispatch('Word.Application')
doc = word.Documents.Open(wordPath,ReadOnly=1)
doc.ExportAsFixedFormat(pdfPath,constants.wdExportFormatPDF)
if __name__ == '__main__':
img = 'C:\\Users\\dongjunli\\Desktop\\figure.png'
save_img_to_doc(img)
rloc_doc = 'C:\\Users\\dongjunli\\Desktop\\r_report.docx'
pdfPath = 'C:\\Users\\dongjunli\\Desktop\\r_report.pdf'
word2pdf(rloc_doc,pdfPath)
如有帮到您,还能帮忙点赞以下,谢谢!