mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix regression 3.41.0 that broke ODT input
This commit is contained in:
parent
85eb72e59e
commit
2d34c8a9ed
@ -27,7 +27,8 @@ from .office import *
|
|||||||
from .attrconverters import make_NCName
|
from .attrconverters import make_NCName
|
||||||
from xml.sax.xmlreader import InputSource
|
from xml.sax.xmlreader import InputSource
|
||||||
from .odfmanifest import manifestlist
|
from .odfmanifest import manifestlist
|
||||||
from polyglot.io import PolyglotBytesIO
|
from io import BytesIO
|
||||||
|
from polyglot.io import PolyglotBytesIO, PolyglotStringIO
|
||||||
|
|
||||||
__version__= TOOLSVERSION
|
__version__= TOOLSVERSION
|
||||||
|
|
||||||
@ -210,7 +211,7 @@ class OpenDocument:
|
|||||||
self.__replaceGenerator()
|
self.__replaceGenerator()
|
||||||
x = DocumentMeta()
|
x = DocumentMeta()
|
||||||
x.addElement(self.meta)
|
x.addElement(self.meta)
|
||||||
xml=StringIO()
|
xml=PolyglotStringIO()
|
||||||
xml.write(_XMLPROLOGUE)
|
xml.write(_XMLPROLOGUE)
|
||||||
x.toXml(0,xml)
|
x.toXml(0,xml)
|
||||||
return xml.getvalue()
|
return xml.getvalue()
|
||||||
@ -219,7 +220,7 @@ class OpenDocument:
|
|||||||
""" Generates the settings.xml file """
|
""" Generates the settings.xml file """
|
||||||
x = DocumentSettings()
|
x = DocumentSettings()
|
||||||
x.addElement(self.settings)
|
x.addElement(self.settings)
|
||||||
xml=StringIO()
|
xml=PolyglotStringIO()
|
||||||
xml.write(_XMLPROLOGUE)
|
xml.write(_XMLPROLOGUE)
|
||||||
x.toXml(0,xml)
|
x.toXml(0,xml)
|
||||||
return xml.getvalue()
|
return xml.getvalue()
|
||||||
@ -266,7 +267,7 @@ class OpenDocument:
|
|||||||
|
|
||||||
def stylesxml(self):
|
def stylesxml(self):
|
||||||
""" Generates the styles.xml file """
|
""" Generates the styles.xml file """
|
||||||
xml=StringIO()
|
xml=PolyglotStringIO()
|
||||||
xml.write(_XMLPROLOGUE)
|
xml.write(_XMLPROLOGUE)
|
||||||
x = DocumentStyles()
|
x = DocumentStyles()
|
||||||
x.write_open_tag(0, xml)
|
x.write_open_tag(0, xml)
|
||||||
@ -579,12 +580,13 @@ def OpenDocumentTextMaster():
|
|||||||
doc.body.addElement(doc.text)
|
doc.body.addElement(doc.text)
|
||||||
return doc
|
return doc
|
||||||
|
|
||||||
|
|
||||||
def __loadxmlparts(z, manifest, doc, objectpath):
|
def __loadxmlparts(z, manifest, doc, objectpath):
|
||||||
from load import LoadParser
|
from load import LoadParser
|
||||||
from xml.sax import make_parser, handler
|
from xml.sax import make_parser, handler
|
||||||
|
|
||||||
for xmlfile in (objectpath+'settings.xml', objectpath+'meta.xml', objectpath+'content.xml', objectpath+'styles.xml'):
|
for xmlfile in (objectpath+'settings.xml', objectpath+'meta.xml', objectpath+'content.xml', objectpath+'styles.xml'):
|
||||||
if not manifest.has_key(xmlfile):
|
if xmlfile not in manifest:
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
xmlpart = z.read(xmlfile)
|
xmlpart = z.read(xmlfile)
|
||||||
@ -596,11 +598,12 @@ def __loadxmlparts(z, manifest, doc, objectpath):
|
|||||||
parser.setErrorHandler(handler.ErrorHandler())
|
parser.setErrorHandler(handler.ErrorHandler())
|
||||||
|
|
||||||
inpsrc = InputSource()
|
inpsrc = InputSource()
|
||||||
inpsrc.setByteStream(StringIO(xmlpart))
|
inpsrc.setByteStream(BytesIO(xmlpart))
|
||||||
parser.setFeature(handler.feature_external_ges, False) # Changed by Kovid to ignore external DTDs
|
parser.setFeature(handler.feature_external_ges, False) # Changed by Kovid to ignore external DTDs
|
||||||
parser.parse(inpsrc)
|
parser.parse(inpsrc)
|
||||||
del doc._parsing
|
del doc._parsing
|
||||||
except KeyError as v: pass
|
except KeyError:
|
||||||
|
pass
|
||||||
|
|
||||||
def load(odffile):
|
def load(odffile):
|
||||||
""" Load an ODF file into memory
|
""" Load an ODF file into memory
|
||||||
|
Loading…
x
Reference in New Issue
Block a user