簡體   English   中英

Jinja2用於詞模板

[英]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文件如下所示:

[ 帶有標簽的.docx文件[1]

然后,您的generated_doc.docx將如下所示:

使用該leedle程序生成的.docx文件

比較簡單,對吧?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM