Skip to content

Commit bc92389

Browse files
author
Eric Lapouyade
committed
Merge branch 'bartbroere-patch-1'
2 parents 0607e71 + 0ef74a7 commit bc92389

File tree

3 files changed

+34
-0
lines changed

3 files changed

+34
-0
lines changed

docxtpl/template.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,19 @@ def render_properties(
351351
rendered = template.render(context)
352352
setattr(self.docx.core_properties, prop, rendered)
353353

354+
def render_footnotes(
355+
self, context: Dict[str, Any], jinja_env: Optional[Environment] = None
356+
) -> None:
357+
if jinja_env is None:
358+
jinja_env = Environment()
359+
360+
for section in self.docx.sections:
361+
for part in section.part.package.parts:
362+
if part.content_type == 'application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml':
363+
xml = self.patch_xml(part.blob.decode('utf-8') if isinstance(part.blob, bytes) else part.blob)
364+
xml = self.render_xml_part(xml, part, context, jinja_env)
365+
part._blob = xml
366+
354367
def resolve_listing(self, xml):
355368

356369
def resolve_text(run_properties, paragraph_properties, m):
@@ -483,6 +496,8 @@ def render(
483496

484497
self.render_properties(context, jinja_env)
485498

499+
self.render_footnotes(context, jinja_env)
500+
486501
# set rendered flag
487502
self.is_rendered = True
488503

tests/footnotes.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
Created : 2024-09-23
4+
5+
@author: Bart Broere
6+
"""
7+
8+
from docxtpl import DocxTemplate
9+
10+
DEST_FILE = "output/footnotes.docx"
11+
12+
tpl = DocxTemplate("templates/footnotes_tpl.docx")
13+
14+
context = {
15+
"a_jinja_variable": "A Jinja variable!"
16+
}
17+
18+
tpl.render(context)
19+
tpl.save(DEST_FILE)

tests/templates/footnotes_tpl.docx

15.6 KB
Binary file not shown.

0 commit comments

Comments
 (0)