内嵌图像周围的框架

时间:2016-01-01 11:25:18

标签: python image docx

有没有办法在python docx的内联图片周围放置框架?

我有类似的东西:

from docx import Document
from docx.shared import Mm

document = Document()
table = document.add_table(rows=1, cols=3)
pic_cells = table.rows[0].cells
paragraph = pic_cells[0].paragraphs[0]
run = paragraph.add_run()
run.add_picture('testQR.png', width=Mm(15), height=Mm(15))
document.save('demo.docx')

我需要在图像周围放一个框架来标记此图像的边框(应该与图像大小相同)。

如何使用python docx package格式化它?

2 个答案:

答案 0 :(得分:1)

似乎docx目前不支持此类功能。 由于您使用的是表,您可能会做的是以下内容:

  1. 创建新的Word模板
  2. 使用您要放置图片的单元格的边框定义自定义表格样式
  3. 将Python脚本中的模板与docx一起使用,如下所示:document = Document('template.docx')
  4. 应用您刚创建的表格样式
  5. 请阅读this thread了解详情。

    另一种方法可能不那么优雅,但100%正常工作。您只需在docx中使用它之前在图像周围创建边框。 您可以使用PIL(对于python2)或Pillow(对于pyhton3)模块进行图像处理。

    from PIL import Image
    from PIL import ImageOps
    img = Image.open('img.png')
    img_with_border = ImageOps.expand(img, border=1, fill='black')
    img_with_border.save('img-with-border.png')
    

    此代码将使用您的img.png文件并创建一个带有1px黑色边框的新img-with-border.png。您可以在img-with-border.png语句中使用run.add_picture

答案 1 :(得分:0)

vrs在评论中提到,最简单的解决方案是:

{{1}}

并将图片添加到“运行”中。