From 3b819de15c20bb071296a34ba25a3c4ae9a54cae Mon Sep 17 00:00:00 2001 From: Jan Szejko Date: Fri, 16 Dec 2016 13:15:20 +0100 Subject: [PATCH] images in epub/mobi --- librarian/epub.py | 15 ++++++++++++--- librarian/epub/xsltScheme.xsl | 18 ++++++++++++++++++ librarian/mobi.py | 7 ++++--- librarian/pdf.py | 2 +- 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/librarian/epub.py b/librarian/epub.py index 211ed06..c126e78 100644 --- a/librarian/epub.py +++ b/librarian/epub.py @@ -11,6 +11,8 @@ import re import subprocess from StringIO import StringIO from copy import deepcopy +from mimetypes import guess_type + from lxml import etree import zipfile from tempfile import mkdtemp, NamedTemporaryFile @@ -329,9 +331,8 @@ def transform_chunk(chunk_xml, chunk_no, annotations, empty=False, _empty_html_s return output_html, toc, chars -def transform(wldoc, verbose=False, - style=None, html_toc=False, - sample=None, cover=None, flags=None): +def transform(wldoc, verbose=False, style=None, html_toc=False, + sample=None, cover=None, flags=None, ilustr_path=''): """ produces a EPUB file sample=n: generate sample e-book (with at least n paragraphs) @@ -424,6 +425,14 @@ def transform(wldoc, verbose=False, output_file = NamedTemporaryFile(prefix='librarian', suffix='.epub', delete=False) zip = zipfile.ZipFile(output_file, 'w', zipfile.ZIP_DEFLATED) + if os.path.isdir(ilustr_path): + for i, filename in enumerate(os.listdir(ilustr_path)): + file_path = os.path.join(ilustr_path, filename) + zip.write(file_path, os.path.join('OPS', filename)) + image_id = 'image%s' % i + manifest.append(etree.fromstring( + '' % (image_id, filename, guess_type(file_path)[0]))) + # write static elements mime = zipfile.ZipInfo() mime.filename = 'mimetype' diff --git a/librarian/epub/xsltScheme.xsl b/librarian/epub/xsltScheme.xsl index 3ddcf97..01870e6 100644 --- a/librarian/epub/xsltScheme.xsl +++ b/librarian/epub/xsltScheme.xsl @@ -73,6 +73,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/librarian/mobi.py b/librarian/mobi.py index d98b838..ea83df8 100644 --- a/librarian/mobi.py +++ b/librarian/mobi.py @@ -14,7 +14,7 @@ from librarian import get_resource def transform(wldoc, verbose=False, - sample=None, cover=None, flags=None): + sample=None, cover=None, flags=None, ilustr_path=None): """ produces a MOBI file wldoc: a WLDocument @@ -43,8 +43,9 @@ def transform(wldoc, verbose=False, if not flags: flags = [] flags = list(flags) + ['without-fonts'] - epub = document.as_epub(verbose=verbose, sample=sample, html_toc=True, - flags=flags, style=get_resource('mobi/style.css')) + epub = document.as_epub( + verbose=verbose, sample=sample, html_toc=True, + flags=flags, style=get_resource('mobi/style.css'), ilustr_path=ilustr_path) if verbose: kwargs = {} diff --git a/librarian/pdf.py b/librarian/pdf.py index 75c3cb4..48d6fff 100644 --- a/librarian/pdf.py +++ b/librarian/pdf.py @@ -253,7 +253,7 @@ def transform(wldoc, verbose=False, save_tex=None, morefloats=None, parse_creator(document.edoc) substitute_hyphens(document.edoc) fix_hanging(document.edoc) - fix_tables(document.edoc) + fix_tables(document.edoc) # wl -> TeXML style_filename = get_stylesheet("wl2tex") -- 2.20.1