Mercurial > repos > guerler > springsuite
comparison planemo/bin/rst2odt_prepstyles.py @ 0:d30785e31577 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author | guerler |
---|---|
date | Fri, 31 Jul 2020 00:18:57 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:d30785e31577 |
---|---|
1 #!/Users/guerler/spring/springsuite/planemo/bin/python3 | |
2 | |
3 # $Id: rst2odt_prepstyles.py 8346 2019-08-26 12:11:32Z milde $ | |
4 # Author: Dave Kuhlman <dkuhlman@rexx.com> | |
5 # Copyright: This module has been placed in the public domain. | |
6 | |
7 """ | |
8 Fix a word-processor-generated styles.odt for odtwriter use: Drop page size | |
9 specifications from styles.xml in STYLE_FILE.odt. | |
10 """ | |
11 | |
12 # Author: Michael Schutte <michi@uiae.at> | |
13 | |
14 from __future__ import print_function | |
15 | |
16 from lxml import etree | |
17 import sys | |
18 import zipfile | |
19 from tempfile import mkstemp | |
20 import shutil | |
21 import os | |
22 | |
23 NAMESPACES = { | |
24 "style": "urn:oasis:names:tc:opendocument:xmlns:style:1.0", | |
25 "fo": "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" | |
26 } | |
27 | |
28 | |
29 def prepstyle(filename): | |
30 | |
31 zin = zipfile.ZipFile(filename) | |
32 styles = zin.read("styles.xml") | |
33 | |
34 root = etree.fromstring(styles) | |
35 for el in root.xpath("//style:page-layout-properties", | |
36 namespaces=NAMESPACES): | |
37 for attr in el.attrib: | |
38 if attr.startswith("{%s}" % NAMESPACES["fo"]): | |
39 del el.attrib[attr] | |
40 | |
41 tempname = mkstemp() | |
42 zout = zipfile.ZipFile(os.fdopen(tempname[0], "w"), "w", | |
43 zipfile.ZIP_DEFLATED) | |
44 | |
45 for item in zin.infolist(): | |
46 if item.filename == "styles.xml": | |
47 zout.writestr(item, etree.tostring(root)) | |
48 else: | |
49 zout.writestr(item, zin.read(item.filename)) | |
50 | |
51 zout.close() | |
52 zin.close() | |
53 shutil.move(tempname[1], filename) | |
54 | |
55 | |
56 def main(): | |
57 args = sys.argv[1:] | |
58 if len(args) != 1: | |
59 print(__doc__, file=sys.stderr) | |
60 print("Usage: %s STYLE_FILE.odt\n" % sys.argv[0], file=sys.stderr) | |
61 sys.exit(1) | |
62 filename = args[0] | |
63 prepstyle(filename) | |
64 | |
65 | |
66 if __name__ == '__main__': | |
67 main() |