mirror of
https://github.com/JimmXinu/FanFicFare.git
synced 2025-12-06 08:52:55 +01:00
writer_epub: Only do svg check for epub3
This commit is contained in:
parent
9df7822e32
commit
55d8efbdcd
1 changed files with 26 additions and 22 deletions
|
|
@ -327,11 +327,6 @@ div { margin: 0pt; padding: 0pt; }
|
||||||
|
|
||||||
return retval
|
return retval
|
||||||
|
|
||||||
## in case it needs more complexity later.
|
|
||||||
def write_to_epub(self, outputepub, href, data):
|
|
||||||
outputepub.writestr(href,data)
|
|
||||||
self.svg_files[href] = b'<svg' in ensure_binary(data)
|
|
||||||
|
|
||||||
def writeStoryImpl(self, out):
|
def writeStoryImpl(self, out):
|
||||||
|
|
||||||
if self.story.oldcover and \
|
if self.story.oldcover and \
|
||||||
|
|
@ -362,11 +357,21 @@ div { margin: 0pt; padding: 0pt; }
|
||||||
outputepub = ZipFile(zipio, 'a', compression=ZIP_DEFLATED)
|
outputepub = ZipFile(zipio, 'a', compression=ZIP_DEFLATED)
|
||||||
outputepub.debug=3
|
outputepub.debug=3
|
||||||
|
|
||||||
|
epub3 = self.getConfig("epub_version",default="2.0").startswith("3")
|
||||||
# epub3 wants manifest items that have <svg> tags marked. I
|
# epub3 wants manifest items that have <svg> tags marked. I
|
||||||
# don't want to completely change how this writer operates.
|
# don't want to completely change how this writer operates.
|
||||||
# So we'll flag as we go and generate content.opf later. Only
|
# So we'll flag as we go and generate content.opf later. Only
|
||||||
# used with application/xhtml+xml files but currently set for all.
|
# used with application/xhtml+xml files but currently set for all.
|
||||||
self.svg_files = {} # filename -> bool contains '<svg'
|
svg_files = {} # filename -> bool contains '<svg'
|
||||||
|
|
||||||
|
## Only need to check for svg with epub3.
|
||||||
|
if epub3:
|
||||||
|
def write_to_epub(href, data):
|
||||||
|
outputepub.writestr(href,data)
|
||||||
|
svg_files[href] = b'<svg' in ensure_binary(data)
|
||||||
|
else:
|
||||||
|
def write_to_epub(href, data):
|
||||||
|
outputepub.writestr(href,data)
|
||||||
|
|
||||||
## Create META-INF/container.xml file. The only thing it does is
|
## Create META-INF/container.xml file. The only thing it does is
|
||||||
## point to content.opf
|
## point to content.opf
|
||||||
|
|
@ -378,7 +383,7 @@ div { margin: 0pt; padding: 0pt; }
|
||||||
containertop.appendChild(rootfiles)
|
containertop.appendChild(rootfiles)
|
||||||
rootfiles.appendChild(newTag(containerdom,"rootfile",{"full-path":"content.opf",
|
rootfiles.appendChild(newTag(containerdom,"rootfile",{"full-path":"content.opf",
|
||||||
"media-type":"application/oebps-package+xml"}))
|
"media-type":"application/oebps-package+xml"}))
|
||||||
self.write_to_epub(outputepub,"META-INF/container.xml",containerdom.toxml(encoding='utf-8'))
|
write_to_epub("META-INF/container.xml",containerdom.toxml(encoding='utf-8'))
|
||||||
containerdom.unlink()
|
containerdom.unlink()
|
||||||
del containerdom
|
del containerdom
|
||||||
|
|
||||||
|
|
@ -398,7 +403,6 @@ div { margin: 0pt; padding: 0pt; }
|
||||||
contentdom = getDOMImplementation().createDocument(None, "package", None)
|
contentdom = getDOMImplementation().createDocument(None, "package", None)
|
||||||
package = contentdom.documentElement
|
package = contentdom.documentElement
|
||||||
## might want 3.1 or something in future.
|
## might want 3.1 or something in future.
|
||||||
epub3 = self.getConfig("epub_version",default="2.0").startswith("3")
|
|
||||||
if epub3:
|
if epub3:
|
||||||
package.setAttribute("version","3.0")
|
package.setAttribute("version","3.0")
|
||||||
else:
|
else:
|
||||||
|
|
@ -566,8 +570,8 @@ div { margin: 0pt; padding: 0pt; }
|
||||||
oldcoverimghref,
|
oldcoverimghref,
|
||||||
oldcoverimgtype,
|
oldcoverimgtype,
|
||||||
oldcoverimgdata) = self.story.oldcover
|
oldcoverimgdata) = self.story.oldcover
|
||||||
self.write_to_epub(outputepub,oldcoverhtmlhref,oldcoverhtmldata)
|
write_to_epub(oldcoverhtmlhref,oldcoverhtmldata)
|
||||||
self.write_to_epub(outputepub,oldcoverimghref,oldcoverimgdata)
|
write_to_epub(oldcoverimghref,oldcoverimgdata)
|
||||||
|
|
||||||
coverimgid = "image0"
|
coverimgid = "image0"
|
||||||
items.append((coverimgid,
|
items.append((coverimgid,
|
||||||
|
|
@ -591,7 +595,7 @@ div { margin: 0pt; padding: 0pt; }
|
||||||
imgfile = "OEBPS/"+imgmap['newsrc']
|
imgfile = "OEBPS/"+imgmap['newsrc']
|
||||||
# don't overwrite old cover.
|
# don't overwrite old cover.
|
||||||
if not self.use_oldcover or imgfile != oldcoverimghref:
|
if not self.use_oldcover or imgfile != oldcoverimghref:
|
||||||
self.write_to_epub(outputepub,imgfile,imgmap['data'])
|
write_to_epub(imgfile,imgmap['data'])
|
||||||
items.append(("image%04d"%imgcount,
|
items.append(("image%04d"%imgcount,
|
||||||
imgfile,
|
imgfile,
|
||||||
imgmap['mime'],
|
imgmap['mime'],
|
||||||
|
|
@ -665,7 +669,7 @@ div { margin: 0pt; padding: 0pt; }
|
||||||
itemrefs.insert(logpage_indices[1],"log_page")
|
itemrefs.insert(logpage_indices[1],"log_page")
|
||||||
|
|
||||||
# write stylesheet.css file.
|
# write stylesheet.css file.
|
||||||
self.write_to_epub(outputepub,"OEBPS/stylesheet.css",self.EPUB_CSS.substitute(self.story.getAllMetadata()))
|
write_to_epub("OEBPS/stylesheet.css",self.EPUB_CSS.substitute(self.story.getAllMetadata()))
|
||||||
|
|
||||||
# write title page.
|
# write title page.
|
||||||
if self.getConfig("titlepage_use_table"):
|
if self.getConfig("titlepage_use_table"):
|
||||||
|
|
@ -682,7 +686,7 @@ div { margin: 0pt; padding: 0pt; }
|
||||||
TITLE_PAGE_END = self.EPUB_TITLE_PAGE_END
|
TITLE_PAGE_END = self.EPUB_TITLE_PAGE_END
|
||||||
|
|
||||||
if coverIO:
|
if coverIO:
|
||||||
self.write_to_epub(outputepub,"OEBPS/cover.xhtml",coverIO.getvalue())
|
write_to_epub("OEBPS/cover.xhtml",coverIO.getvalue())
|
||||||
coverIO.close()
|
coverIO.close()
|
||||||
|
|
||||||
titlepageIO = BytesIO()
|
titlepageIO = BytesIO()
|
||||||
|
|
@ -693,7 +697,7 @@ div { margin: 0pt; padding: 0pt; }
|
||||||
END=TITLE_PAGE_END,
|
END=TITLE_PAGE_END,
|
||||||
NO_TITLE_ENTRY=NO_TITLE_ENTRY)
|
NO_TITLE_ENTRY=NO_TITLE_ENTRY)
|
||||||
if titlepageIO.getvalue(): # will be false if no title page.
|
if titlepageIO.getvalue(): # will be false if no title page.
|
||||||
self.write_to_epub(outputepub,"OEBPS/title_page.xhtml",titlepageIO.getvalue())
|
write_to_epub("OEBPS/title_page.xhtml",titlepageIO.getvalue())
|
||||||
titlepageIO.close()
|
titlepageIO.close()
|
||||||
|
|
||||||
# write toc page.
|
# write toc page.
|
||||||
|
|
@ -703,14 +707,14 @@ div { margin: 0pt; padding: 0pt; }
|
||||||
self.EPUB_TOC_ENTRY,
|
self.EPUB_TOC_ENTRY,
|
||||||
self.EPUB_TOC_PAGE_END)
|
self.EPUB_TOC_PAGE_END)
|
||||||
if tocpageIO.getvalue(): # will be false if no toc page.
|
if tocpageIO.getvalue(): # will be false if no toc page.
|
||||||
self.write_to_epub(outputepub,"OEBPS/toc_page.xhtml",tocpageIO.getvalue())
|
write_to_epub("OEBPS/toc_page.xhtml",tocpageIO.getvalue())
|
||||||
tocpageIO.close()
|
tocpageIO.close()
|
||||||
|
|
||||||
if dologpage:
|
if dologpage:
|
||||||
# write log page.
|
# write log page.
|
||||||
logpageIO = BytesIO()
|
logpageIO = BytesIO()
|
||||||
self.writeLogPage(logpageIO)
|
self.writeLogPage(logpageIO)
|
||||||
self.write_to_epub(outputepub,"OEBPS/log_page.xhtml",logpageIO.getvalue())
|
write_to_epub("OEBPS/log_page.xhtml",logpageIO.getvalue())
|
||||||
logpageIO.close()
|
logpageIO.close()
|
||||||
|
|
||||||
if self.hasConfig('chapter_start'):
|
if self.hasConfig('chapter_start'):
|
||||||
|
|
@ -772,11 +776,11 @@ div { margin: 0pt; padding: 0pt; }
|
||||||
fullhtml = re.sub(r'(</p>|<br ?/>)\n*',r'\1\n',fullhtml)
|
fullhtml = re.sub(r'(</p>|<br ?/>)\n*',r'\1\n',fullhtml)
|
||||||
|
|
||||||
# logger.debug("write OEBPS/file%s.xhtml"%chap['index04'])
|
# logger.debug("write OEBPS/file%s.xhtml"%chap['index04'])
|
||||||
self.write_to_epub(outputepub,"OEBPS/file%s.xhtml"%chap['index04'],fullhtml.encode('utf-8'))
|
write_to_epub("OEBPS/file%s.xhtml"%chap['index04'],fullhtml.encode('utf-8'))
|
||||||
del fullhtml
|
del fullhtml
|
||||||
|
|
||||||
if self.story.calibrebookmark:
|
if self.story.calibrebookmark:
|
||||||
self.write_to_epub(outputepub,"META-INF/calibre_bookmarks.txt",self.story.calibrebookmark)
|
write_to_epub("META-INF/calibre_bookmarks.txt",self.story.calibrebookmark)
|
||||||
|
|
||||||
manifest = contentdom.createElement("manifest")
|
manifest = contentdom.createElement("manifest")
|
||||||
package.appendChild(manifest)
|
package.appendChild(manifest)
|
||||||
|
|
@ -790,7 +794,7 @@ div { margin: 0pt; padding: 0pt; }
|
||||||
if id=='cover':
|
if id=='cover':
|
||||||
## Flag the cover *page*--epub3 only flags cover *img*
|
## Flag the cover *page*--epub3 only flags cover *img*
|
||||||
props.append('calibre:title-page')
|
props.append('calibre:title-page')
|
||||||
if type == 'application/xhtml+xml' and self.svg_files[href]:
|
if type == 'application/xhtml+xml' and svg_files[href]:
|
||||||
## epub3 wants content files containing <svg> tags
|
## epub3 wants content files containing <svg> tags
|
||||||
## flagged in the metadata.
|
## flagged in the metadata.
|
||||||
props.append('svg')
|
props.append('svg')
|
||||||
|
|
@ -825,7 +829,7 @@ div { margin: 0pt; padding: 0pt; }
|
||||||
ensure_binary('<meta name="cover" content="%s"/>'%coverimgid))
|
ensure_binary('<meta name="cover" content="%s"/>'%coverimgid))
|
||||||
|
|
||||||
# write_to_epub used, but already passed using svg_files
|
# write_to_epub used, but already passed using svg_files
|
||||||
self.write_to_epub(outputepub,"content.opf",contentxml)
|
write_to_epub("content.opf",contentxml)
|
||||||
|
|
||||||
contentdom.unlink()
|
contentdom.unlink()
|
||||||
del contentdom
|
del contentdom
|
||||||
|
|
@ -876,7 +880,7 @@ div { margin: 0pt; padding: 0pt; }
|
||||||
index=index+1
|
index=index+1
|
||||||
|
|
||||||
# write_to_epub used, but already passed using svg_files
|
# write_to_epub used, but already passed using svg_files
|
||||||
self.write_to_epub(outputepub,"toc.ncx",tocncxdom.toxml(encoding='utf-8'))
|
write_to_epub("toc.ncx",tocncxdom.toxml(encoding='utf-8'))
|
||||||
tocncxdom.unlink()
|
tocncxdom.unlink()
|
||||||
del tocncxdom
|
del tocncxdom
|
||||||
|
|
||||||
|
|
@ -937,7 +941,7 @@ div { margin: 0pt; padding: 0pt; }
|
||||||
li.appendChild(atag)
|
li.appendChild(atag)
|
||||||
|
|
||||||
# write_to_epub used, but already passed using svg_files
|
# write_to_epub used, but already passed using svg_files
|
||||||
self.write_to_epub(outputepub,"nav.xhtml",tocnavdom.toxml(encoding='utf-8'))
|
write_to_epub("nav.xhtml",tocnavdom.toxml(encoding='utf-8'))
|
||||||
tocnavdom.unlink()
|
tocnavdom.unlink()
|
||||||
del tocnavdom
|
del tocnavdom
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue