I don't know if anyone else has come across this. I usually write documents in latex and use a couple of commands on the source files that output an .odt:
latexmk file.tex
mk4ht ebook file.tex
Works fine, except that calibre fails to convert it. Calibre works fine if I create a new odt in libreoffice however, so mk4ht is failing to do something.
This is the output from the conversion that fails:
Code:
Extracting ODT file...
Traceback (most recent call last):
File "/usr/bin/calibre-parallel", line 20, in <module>
sys.exit(main())
File "/usr/lib64/calibre/calibre/utils/ipc/worker.py", line 189, in main
result = func(*args, **kwargs)
File "/usr/lib64/calibre/calibre/gui2/convert/gui_conversion.py", line 31, in gui_convert_override
override_input_metadata=True)
File "/usr/lib64/calibre/calibre/gui2/convert/gui_conversion.py", line 25, in gui_convert
plumber.run()
File "/usr/lib64/calibre/calibre/ebooks/conversion/plumber.py", line 1035, in run
accelerators, tdir)
File "/usr/lib64/calibre/calibre/customize/conversion.py", line 241, in __call__
log, accelerators)
File "/usr/lib64/calibre/calibre/ebooks/conversion/plugins/odt_input.py", line 23, in convert
return Extract()(stream, '.', log)
File "/usr/lib64/calibre/calibre/ebooks/odt/input.py", line 263, in __call__
mi = get_metadata(stream, 'odt')
File "/usr/lib64/calibre/calibre/ebooks/metadata/odt.py", line 165, in get_metadata
parser.parse(StringIO(content))
File "/usr/lib64/python2.7/xml/sax/expatreader.py", line 107, in parse
xmlreader.IncrementalParser.parse(self, source)
File "/usr/lib64/python2.7/xml/sax/xmlreader.py", line 123, in parse
self.feed(buffer)
File "/usr/lib64/python2.7/xml/sax/expatreader.py", line 207, in feed
self._parser.Parse(data, isFinal)
File "/usr/lib64/python2.7/xml/sax/expatreader.py", line 381, in external_entity_ref
"")
File "/usr/lib64/python2.7/xml/sax/saxutils.py", line 304, in prepare_input_source
f = urllib.urlopen(source.getSystemId())
File "/usr/lib64/python2.7/urllib.py", line 86, in urlopen
return opener.open(url)
File "/usr/lib64/python2.7/urllib.py", line 207, in open
return getattr(self, name)(url)
File "/usr/lib64/python2.7/urllib.py", line 462, in open_file
return self.open_local_file(url)
File "/usr/lib64/python2.7/urllib.py", line 476, in open_local_file
raise IOError(e.errno, e.strerror, e.filename)
IOError: [Errno 2] No such file or directory: 'office.dtd'
I looked for the file office.dtd in an .odt made in libreoffice but it doesn't exist there either, so I don't know what the problem is.
*Edit: I did find this: /opt/libreoffice3.6/share/dtd/officedocument/1_0/office.dtd