|
10 | 10 |
|
11 | 11 | from .oxml import OxmlElement
|
12 | 12 | from .oxml.header import CT_Hdr
|
13 |
| -from .oxml.ns import qn |
| 13 | +from .oxml.ns import qn, nsmap |
14 | 14 | from .opc.constants import RELATIONSHIP_TYPE as RT, CONTENT_TYPE as CT
|
15 | 15 | from .opc.packuri import PackURI
|
16 | 16 | from .opc.part import XmlPart
|
@@ -113,6 +113,13 @@ def add_header(self):
|
113 | 113 | self.remove_headers()
|
114 | 114 | return self._body.add_header()
|
115 | 115 |
|
| 116 | + def add_footer(self): |
| 117 | + """ |
| 118 | + removes all footers from doc then adds a new one |
| 119 | + """ |
| 120 | + self.remove_footers() |
| 121 | + return self._body.add_footer() |
| 122 | + |
116 | 123 | def remove_headers(self):
|
117 | 124 | """
|
118 | 125 | clears existing header elements and references from document
|
@@ -245,15 +252,43 @@ def add_header(self):
|
245 | 252 | content_type = CT.WML_HEADER
|
246 | 253 | target = XmlPart(partname, content_type, header_elm, self._parent._part.package)
|
247 | 254 |
|
248 |
| - # TODO figure out nicer way to get this |
249 |
| - RELATIONSHIPS_SCHEMA = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships' |
250 |
| - reltype = '%s/header' % RELATIONSHIPS_SCHEMA |
| 255 | + reltype = nsmap['r'] + '/header' |
251 | 256 | self._parent.part.rels.add_relationship(reltype, target, rel_id)
|
252 | 257 |
|
253 | 258 | sentinel_sectPr = self._body.get_or_add_sectPr()
|
254 | 259 | sentinel_sectPr.append(header_ref_elm)
|
255 | 260 | return header
|
256 | 261 |
|
| 262 | + def add_footer(self): |
| 263 | + rel_id = self._parent.part.rels._next_rId |
| 264 | + target = 'footer1.xml' |
| 265 | + |
| 266 | + # make footer_ref_elm |
| 267 | + footer_ref_elm_tag = 'w:footerReference' |
| 268 | + footer_attrs = { |
| 269 | + qn('r:id'): rel_id, |
| 270 | + qn('w:type'): "default" |
| 271 | + } |
| 272 | + footer_ref_elm = OxmlElement(footer_ref_elm_tag, attrs=footer_attrs) |
| 273 | + |
| 274 | + # make footer_elm |
| 275 | + footer_elm = CT_Hdr.new() |
| 276 | + |
| 277 | + # make footer instance (wrapper around elm) |
| 278 | + footer = BlockItemContainer(footer_elm, self) |
| 279 | + |
| 280 | + # make target part |
| 281 | + partname = PackURI('/word/footer1.xml') |
| 282 | + content_type = CT.WML_FOOTER |
| 283 | + target = XmlPart(partname, content_type, footer_elm, self._parent._part.package) |
| 284 | + |
| 285 | + reltype = nsmap['r'] + '/footer' |
| 286 | + self._parent.part.rels.add_relationship(reltype, target, rel_id) |
| 287 | + |
| 288 | + sentinel_sectPr = self._body.get_or_add_sectPr() |
| 289 | + sentinel_sectPr.append(footer_ref_elm) |
| 290 | + return footer |
| 291 | + |
257 | 292 | def remove_headers(self):
|
258 | 293 | """
|
259 | 294 | clears existing header elements and references from sentinel sect pr
|
|
0 commit comments