使用python-docx和docxtpl将图像添加到标头

时间:2019-01-21 05:13:00

标签: python-docx

我有有效的代码将图像插入DOCX模板(使用docxtpl提供的Jinja模板格式),但是当图像在插入文档主体时起作用时,图像无法在标题中呈现。文档{{p my_image}}中的插入点显示消息“读取错误”。

我认为这是python-docx库中的错误/局限性,但我想知道是否存在已知的解决方法。我尝试了2种创建图像的方法,但是只有在标头中使用时,两种方法都失败,并显示相同的“读取错误”消息:

方法1:

sub_doc = self.template.new_subdoc()
p = sub_doc.add_paragraph()
r = p.add_run()
r.add_picture(output_path)
return sub_doc

方法2:

from docxtpl import InlineImage
return InlineImage(template, image_path, width, height)

1 个答案:

答案 0 :(得分:1)

旧问题,但也许有人需要。

我通过使用docx模块将图像写入到DOCX文件的标题中。就我而言,我必须将图像写到表中。

from docx import Document
from docx.shared import Inches

header = doc.sections[0].header

#Insert table with 2 rows and 3 columns
headertable = header.add_table(2, 3, Inches(6))
headertable.style("borderColor:black")
a = headertable.cell(0, 0)
b = headertable.cell(1, 0)
A = a.merge(b)

#add table in header
headertab_cells = headertable.rows[0].cells

ht0 = headertab_cells[0].add_paragraph()
kh = ht0.add_run()
kh.add_picture('logo.jpg', width=Inches(1))