From f2fb7c8dea7c381b803e9ca8d6616907285e92f9 Mon Sep 17 00:00:00 2001 From: Scott Bahling Date: Wed, 20 Mar 2013 10:56:48 +0100 Subject: Add epub generation Default to xelatex latex engine for pdf generation to handle utf-8 properly. --- panfry/document.py | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'panfry/document.py') diff --git a/panfry/document.py b/panfry/document.py index 0013254..969d5f4 100755 --- a/panfry/document.py +++ b/panfry/document.py @@ -64,7 +64,12 @@ class Document: @property def title(self): if self.header.firstline.startswith('%'): - return self.header.firstline.split('%')[1].strip() + title = self.header.firstline.split('%')[1].strip() + for line in self.header.lines[1:]: + if line.startswith('%'): + break + title = '%s %s' % (title, line.strip()) + return title else: return pages[0].title @@ -140,7 +145,7 @@ class Document: return links @property - def pdf_filename(self): + def filename_base(self): filename = self.title filename = re.sub(r'\s+', ' ', filename) filename = re.sub(r'[\n ]', '_', filename) @@ -149,7 +154,15 @@ class Document: filename = re.sub(r'-_', '-', filename) filename = re.sub(r'-+', '-', filename) - return filename + '.pdf' + return filename + + @property + def pdf_filename(self): + return self.filename_base + '.pdf' + + @property + def epub_filename(self): + return self.filename_base + '.epub' def publish_pdf(self, pub_path): pdf_path = os.path.join(pub_path, self.pdf_filename) @@ -161,11 +174,27 @@ class Document: doc.markdown = src pandoc.set_cwd(os.path.abspath(self.src_path)) + doc.add_argument('latex-engine=xelatex') doc.to_file(pdf_path) pandoc.set_cwd(None) return self.pdf_filename + def publish_epub(self, pub_path): + epub_path = os.path.join(pub_path, self.epub_filename) + src = self.header.source + for page in self.pages: + src += '\n%s' % page.source + + doc = pandoc.Document() + doc.markdown = src + + pandoc.set_cwd(os.path.abspath(self.src_path)) + doc.to_file(epub_path) + pandoc.set_cwd(None) + + return self.epub_filename + def publish_css(self, pub_path): src = os.path.join(self.src_path, 'css') dst = os.path.join(pub_path, 'css') -- cgit v1.2.3