From 9ea3e8e87acbd3f8b31f126db315f6213fc5904a Mon Sep 17 00:00:00 2001 From: Jake Howard Date: Wed, 10 May 2017 17:22:55 +0100 Subject: [PATCH] Add image support --- md_pdf/build/__init__.py | 6 ++++-- md_pdf/build/pandoc.py | 25 ++----------------------- md_pdf/build/template.py | 38 ++++++++++++++++++++++++++++++++++++++ test-files/test-image.png | Bin 0 -> 1132 bytes test-files/test.md | 3 +++ 5 files changed, 47 insertions(+), 25 deletions(-) create mode 100644 md_pdf/build/template.py create mode 100644 test-files/test-image.png diff --git a/md_pdf/build/__init__.py b/md_pdf/build/__init__.py index ab4ffd6..3a34605 100644 --- a/md_pdf/build/__init__.py +++ b/md_pdf/build/__init__.py @@ -3,6 +3,7 @@ from md_pdf.build.pandoc import build_document, output_html from md_pdf.build.cover import render_cover from md_pdf.build.css import render_css from md_pdf.build.pdf import export_pdf +from md_pdf.build.template import parse_template import os import logging @@ -13,9 +14,10 @@ def build(config): logger.debug("Starting Build...") data = read_files(os.path.abspath(config['input'])) doc = build_document(data, config.get('bibliography'), config.get('context')) + parsed_template = parse_template(doc, config) if 'html' in config['output_formats']: - output_html(doc, os.path.abspath(config['output_dir'])) + output_html(parsed_template, os.path.abspath(config['output_dir'])) if 'pdf' in config['output_formats']: render_cover(config) render_css() - export_pdf(doc, config) + export_pdf(parsed_template, config) diff --git a/md_pdf/build/pandoc.py b/md_pdf/build/pandoc.py index 984a631..7bd86a2 100644 --- a/md_pdf/build/pandoc.py +++ b/md_pdf/build/pandoc.py @@ -1,36 +1,17 @@ import pypandoc -from bs4 import BeautifulSoup import os from md_pdf.consts import CSL_DIR -from jinja2 import Template import logging logger = logging.getLogger(__file__) -def fix_references_title(content): - logger.debug("Adding Reference Title...") - soup = BeautifulSoup(content, 'html.parser') - reference_element = soup.find('div', class_='references') - if reference_element is not None: - title = soup.new_tag('h1') - title.string = "References" - reference_element.insert_before(title) - return soup.prettify() - - def output_html(html, out_dir): logger.info("Outputting HTML...") with open(os.path.join(out_dir, 'output.html'), 'w') as f: f.write(html) -def parse_template(html, context): - logger.debug("Rendering Template...") - template = Template(html) - return template.render(context) - - def build_document(files_content, bibliography, context): args = [ '-s', @@ -43,12 +24,10 @@ def build_document(files_content, bibliography, context): ] filters.append('pandoc-citeproc') logger.info("Rendering Document...") - html = fix_references_title(pypandoc.convert_text( + return pypandoc.convert_text( files_content, 'html', format='md', extra_args=args, filters=filters - )) - - return parse_template(html, context) + ) diff --git a/md_pdf/build/template.py b/md_pdf/build/template.py new file mode 100644 index 0000000..c50d7b9 --- /dev/null +++ b/md_pdf/build/template.py @@ -0,0 +1,38 @@ +from jinja2 import Template +from bs4 import BeautifulSoup +import os +import logging + +logger = logging.getLogger(__file__) + +def fix_references_title(content): + logger.debug("Adding Reference Title...") + soup = BeautifulSoup(content, 'html.parser') + reference_element = soup.find('div', class_='references') + if reference_element is not None: + title = soup.new_tag('h1') + title.string = "References" + reference_element.insert_before(title) + return soup.prettify() + + +def add_base_tag(doc, config): + logger.debug("Adding Base Tag...") + soup = BeautifulSoup(doc, 'html.parser') + base_tag = soup.new_tag('base', href=os.path.abspath(config['output_dir'])) + soup.head.insert(0, base_tag) + return soup.prettify() + + +def render_template(html, config): + logger.debug("Rendering Template...") + template = Template(html) + return template.render(config) + + +def parse_template(doc, config): + doc = fix_references_title(doc) + doc = add_base_tag(doc, config) + return render_template(doc, config) + + diff --git a/test-files/test-image.png b/test-files/test-image.png new file mode 100644 index 0000000000000000000000000000000000000000..a91d8ec029825c5572cce5661d040339fbc32c93 GIT binary patch literal 1132 zcmeAS@N?(olHy`uVBq!ia0vp^n?RU@4M;xgnwkNm6iQqpN`eD|To^KQ6Vp?5^AZh= z^a_f~^itBw^@>ge<;Zx+r7Zq&Y z{yr~eqUrCP({kslV&_=}pO_xmsbmVV=8$eXAE|K7G1G`>Nja|GZE5-!J3%q&p#9;fde` zM>ffnQG)z1IId9t^Ovo@nCJJ8Sv4o6C%yZ6`shWAA4Wf)eUtBPySHx1?OU6T=bha> zq2l@DO6Tg0UYF*^Y}21s{&m?sk82mN&KB>U@;c_OthSYw=k{%DYq|3NwcfbA#qiYH z)06T}UVAqq-o`}pdc|kgk}X#k6=xP-;^n)e6_;i&^!~R;*s9o*!TW!mzPdLsGs|z+ ztx0{FKP>HJe~aaK)J=1Z-ZlBZ>#XAEp;K0EeUiS@w!(Uu0^W#z63MXh&NgkJSFUgR zx1Qau=0yR|7k;0L=34VdpO+s0zh}91+oN}fitA(c#`K@n-90()@vO%eBjvk}F{fY7 z{Xg^3zAfqpcdxqh^|ekq|F`3Z8`byU4Y