有没有用过 docxtpl 或者对 Word 比较熟的大佬?渲染 Word 的时候出现一个特别奇怪的问题。

2019-12-26 20:28:18 +08:00
 walle

先贴代码

import jinja2
from docxtpl import InlineImage, DocxTemplate
from docx.shared import Mm


# template = DocxTemplate('template.docx')
template = DocxTemplate('template_without_line.docx')


def get_inline_image(template):
    inline_image = {}
    inline_image['img1'] = InlineImage(template, 'img1.png', width=Mm(146.4))
    inline_image['img2'] = InlineImage(template, 'img2.png', width=Mm(146.4))
    inline_image['img3'] = InlineImage(template, 'img3.png', width=Mm(146.4))
    inline_image['img4'] = InlineImage(template, 'img4.png', width=Mm(146.4))
 
    return inline_image


data = get_inline_image(template)
jinja_env = jinja2.Environment(autoescape=True)

template.render(data, jinja_env)

template.save('result.docx')

我创建了两个模板,template.docxtemplate_without_line.docx,template.docx里面有四条直线,template_without_line.docx有两条直线,其他的都一样。

但是用jinja2渲染以后发现通过template_without_line.docx生成的 Word 是可以打开的,template.docx生成的打开就会报“发现无法读取的内容”这个错误(如果信任文档仍然是可以打开的)。

只是两个直线的差距,会对渲染造成什么影响?

模板和代码都已经提交到GitHub上面了。

3400 次点击
所在节点    Python
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/632678

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX