我正在使用docxtpl和Jinja2生成docx文档。正如手册中解释的那样,我通过使用来自XML文件的数据提供的python矩阵/字典生成了它。当XML文件存储拉丁-1数据时,我的docx可以很好地生成,但是当内容是utf-8编码(如波兰语)时,Jinja2或docxtpl不会保留这种编码,并且docx显然没有很好地格式化。
如何传递编码选项或圈出此问题?
我的过程非常简单:
doc = DocxTemplate(<my_jinja2_docx_template>)
doc.render(<my_dictionnary_with_data>)
doc.save(<my_docx_file>)非常感谢
发布于 2021-11-16 16:59:04
请看https://github.com/elapouya/python-docx-template/blob/master/docxtpl/template.py上的DocxTemplate类的源代码。似乎没有更改编码参数的选项。但是,您可以通过创建自己的子类并替换类的xml_to_string方法来添加该功能。这似乎就是指定编码的地方。子类的语法如下所示:
class NewDocxTemplate(DocxTemplate):
def xml_to_string(self, xml):
return etree.tostring(xml, encoding=<your_encoding_here>, pretty_print=False)然后实例化NewDocxTemplate()而不是DocxTemplate()。DocxTemplate()中的所有方法都将继承,但您更改的方法除外。
https://stackoverflow.com/questions/64800602
复制相似问题