[英]Jinja2 for word templating
我想用jinja2進行單詞模板化,就像這篇簡短文章中提到的那樣。 我面臨的問題如下,如果我將{{title}}
放入我的word文件中,則生成的xml可能如下所示:
<w:r><w:t>{{</w:t></w:r><w:proofErr w:type="gramStart"/><w:r><w:t>title</w:t></w:r><w:proofErr w:type="gramEnd"/><w:r><w:t>}}</w:t></w:r></w:p>
因此Jinja不可能相應地替換它。 是否有可能防止單詞在單獨的文本元素中分裂{{title}}
? (如果我從文本編輯器復制,效果很好)
這是一個與proofErr標簽有關的問題。
您有兩種解決方案:
如果您想堅持使用Jinja2,則應始終一鍵編寫標簽。 例如,切勿點擊退格鍵或編輯標簽。 您也可以從其他編輯器復制/粘貼它。
我編寫了一個Docxtemplater庫,即使文本元素被拆分 ,該庫也可以工作,例如它將替換:
<w:r> <w:t> {{ </w:t> </w:r> <w:proofErr w:type="gramStart"/> <w:r> <w:t>title</w:t> </w:r> <w:proofErr w:type="gramEnd"/> <w:r> <w:t>}}</w:t> </w:r>
通過:
<w:r> <w:t> Your title </w:t> </w:r> <w:proofErr w:type="gramStart"/> <w:r> <w:t></w:t> </w:r> <w:proofErr w:type="gramEnd"/> <w:r> <w:t></w:t> </w:r>
Docxtemplater可以通過CLI或JS Browser / Node.JS進行編程
https://pypi.org/project/docxtpl/也是不錯的選擇。
它擴展了python-docx,並允許您僅在現有.docx
文檔中的任何位置放入Jinja2標簽,而無需從頭開始進行模板制作。
例:
pip install docxtpl
用法:
from docxtpl import DocxTemplate
doc = DocxTemplate("my_word_template.docx")
context = { 'company_name' : "Dr. Stubbs Orthopedics and Prosthetics" }
doc.render(context)
doc.save("generated_doc.docx")
如果您的模板my_word_template.docx
文件如下所示:
[
然后,您的generated_doc.docx
將如下所示:
比較簡單,對吧?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.