Fix for missing xml declaration of content.opf and toc.ncx
authorRobert Błaut <listy@blaut.biz>
Sun, 26 Jan 2014 15:02:30 +0000 (16:02 +0100)
committerRobert Błaut <listy@blaut.biz>
Sun, 26 Jan 2014 15:02:30 +0000 (16:02 +0100)
Lack of xml declaration causes failed ePub validation with Epubcheck
Version 3.0.1

librarian/epub.py

index c8a8668..e61eb26 100644 (file)
@@ -556,8 +556,7 @@ def transform(wldoc, verbose=False,
         rmtree(tmpdir)
         if cwd is not None:
             os.chdir(cwd)
-
-    zip.writestr('OPS/content.opf', etree.tostring(opf, pretty_print=True))
+    zip.writestr('OPS/content.opf', etree.tostring(opf, pretty_print=True, xml_declaration = True, encoding='UTF-8'))
     title = document.book_info.title
     attributes = "dtb:uid", "dtb:depth", "dtb:totalPageCount", "dtb:maxPageNumber"
     for st in attributes:
@@ -574,7 +573,7 @@ def transform(wldoc, verbose=False,
         toc.add(u"Spis treści", "toc.html", index=1)
         zip.writestr('OPS/toc.html', toc.html().encode('utf-8'))
     toc.write_to_xml(nav_map)
-    zip.writestr('OPS/toc.ncx', etree.tostring(toc_file, pretty_print=True))
+    zip.writestr('OPS/toc.ncx', etree.tostring(toc_file, pretty_print=True, xml_declaration = True, encoding='UTF-8'))
     zip.close()
 
     return OutputFile.from_filename(output_file.name)