def substitute(self, setup): log.info("Performing HTML template substitution") if setup.html.subtitle == "": subtitle_tag = "" else: subtitle_tag = '<p class="subtitle">%s</p>\n' % setup.html.subtitle if os.path.isfile(self.license_file_path): html_license = DocumentReader(self.license_file_path).get_string() if not html_license: html_license = "" else: html_license = "" html_template_string = DocumentReader(self.template_file_path).get_string() if not html_template_string: log.error("Could not read HTML template.") return html_template = string.Template(html_template_string) self.html_doc = html_template.substitute(html_content=self.output_html, license=html_license, lang=setup.general.language, locale=setup.html.locale, header_title=setup.html.header_title, title=setup.html.title, subtitle_tag=subtitle_tag, author=setup.general.author, meta_description=setup.html.meta_description, url=setup.html.url, site_name=setup.html.site_name, og_image_tag=setup.html.og_image_tag)
def getDocument(self, fileName): try: reader = DocumentReader(fileName) return reader.read() except (IOError, XmlException), e: name = Path.GetFileName(fileName) MessageBox.Show( 'Could not read file "%s"\r\nThe error was:\r\n%s' % (name, str(e)), "Error Saving File", MessageBoxButtons.OK, MessageBoxIcon.Error ) return None
def create_restructured_text(setup_file_path, input_file_path, output_folder_path=None): log.info("++++++++++ textstory-to-beautiful-latex-html ++++++++++") # Setup log.info("***************** Running setup *****************") setup = Setup(setup_file_path, input_file_path, output_folder_path) log.info("Done with setup.") # run_with_setup(setup) input_markup = DocumentReader(input_file_path).get_string() filters = get_filters(setup) # if not prepare_out_folder(setup): # return # set outfile path # outfile_restructured_text = os.path.normpath(os.path.join(setup.output_folder_path, OUTFILE_RESTRUCTURED_TEXT)) # Create reStructuredText log.info("***************** Creating reStructuredText *****************") restructured_text_generator = ReStructuredTextGenerator(setup, input_markup, filters, None) # restructured_text_generator.create_output() log.info("Done creating reStructuredText.") return restructured_text_generator.output_markup
def __init__(self, setup_file_path, input_file_path, output_folder_path=None): self.input_file_path = input_file_path self.output_folder_path = output_folder_path setup_file_string = DocumentReader(setup_file_path).get_string() self.setup_toml = toml.loads(setup_file_string) self.general = GeneralSetupData(self.setup_toml) self.html = HtmlSetupData(self.setup_toml, self.general) if output_folder_path is None: preliminaries_path = os.path.normpath(os.path.join(dir_path, 'latex', PRELIMINARIES_PATH)) appendix_path = os.path.normpath(os.path.join(dir_path, 'latex', APPENDIX_PATH)) else: preliminaries_path = os.path.normpath(os.path.join(output_folder_path, 'latex', PRELIMINARIES_PATH)) appendix_path = os.path.normpath(os.path.join(output_folder_path, 'latex', APPENDIX_PATH)) self.latex = LatexSetupData(self.setup_toml, self.general, preliminaries_path, appendix_path)
def getDocument(): reader = DocumentReader(Page.MapPath(self.filename)) return reader.read()
def run_with_setup(setup): input_markup = DocumentReader(setup.input_file_path).get_string() filters = get_filters(setup) out_folder = prepare_out_folder(setup) if not prepare_out_folder(setup): return # create directory structure latex_output_path = os.path.join(setup.output_folder_path, 'latex') html_output_path = os.path.join(setup.output_folder_path, 'html') try: if not os.path.exists(latex_output_path): os.makedirs(latex_output_path) # preliminariesPath = os.path.join(latex_output_path, 'bookPreliminaries') # if not os.path.exists(preliminariesPath): # os.makedirs(preliminariesPath) # appendixPath = os.path.join(latex_output_path, 'bookAppendix') # if not os.path.exists(appendixPath): # os.makedirs(appendixPath) if not os.path.exists(html_output_path): os.makedirs(html_output_path) except Exception as e: log.info("Failed creating output subdirectories: " + type(e).__name__ + str(e.args)) log.info("Abort.") return # copy required files from latex template folders appendix_source_path = os.path.join(dir_path, 'latex', APPENDIX_PATH) if not os.path.exists(appendix_source_path): os.makedirs(appendix_source_path) dir_util.copy_tree(appendix_source_path, os.path.join(latex_output_path, APPENDIX_PATH), update=1) # TODO appendix files from config? preliminaries_source_path = os.path.join(dir_path, 'latex', PRELIMINARIES_PATH) if not os.path.exists(preliminaries_source_path): os.makedirs(preliminaries_source_path) dir_util.copy_tree(preliminaries_source_path, os.path.join(latex_output_path, PRELIMINARIES_PATH), update=1) # TODO preliminary files from config? dir_util.copy_tree(os.path.join(dir_path, 'latex', 'img'), os.path.join(latex_output_path, 'img'), update=1) latex_files = [ 'build.bash', 'build.bat', 'license.tex' # TODO get license from config, allow not using license ] for file_name in latex_files: copy_file(file_name, 'latex', latex_output_path) # copy required files from html template folders dir_util.copy_tree(os.path.join(dir_path, 'html', 'css'), os.path.join(html_output_path, 'css'), update=1) dir_util.copy_tree(os.path.join(dir_path, 'html', 'img'), os.path.join(html_output_path, 'img'), update=1) html_files = [ # TODO get license from config, allow not using license 'apple-touch-icon.png', 'browserconfig.xml', 'favicon.ico', 'humans.txt', 'tile.png', 'tile-wide.png' ] for file_name in html_files: copy_file(file_name, 'html', html_output_path) # set outfile paths outfile_latex_doc = os.path.normpath(os.path.join(setup.output_folder_path, OUTFILE_LATEX_DOC)) outfile_latex_body = os.path.normpath(os.path.join(setup.output_folder_path, OUTFILE_LATEX_BODY)) outfile_html = os.path.normpath(os.path.join(setup.output_folder_path, OUTFILE_HTML)) # Create LaTeX log.info("***************** Creating LaTeX *****************") latex_generator = LatexGenerator(setup, input_markup, filters, LATEX_TEMPLATE, outfile_latex_doc, outfile_latex_body) latex_generator.create_output() log.info("Done creating LaTeX.") # Create HTML log.info("***************** Creating HTML *****************") html_generator = HtmlGenerator(setup, input_markup, filters, HTML_TEMPLATE, HTML_LICENSE, outfile_html) html_generator.create_output() log.info("Done creating HTML.")
def substitute(self, setup): latex_first_page_setup = "" if setup.latex.table_of_contents: latex_first_page_setup = "\\thispagestyle{empty}\n\n{\\large\n" if setup.latex.latex_contents_title: latex_first_page_setup += "\n{\\vspace{0.5cm}\\noindent\\LARGE %s}\n\n" \ % setup.latex.latex_contents_title longest_chapter_title = "" for chapter in get_latex_chapters(): if len(chapter['name']) > len(longest_chapter_title): longest_chapter_title = chapter['name'] latex_first_page_setup += "%%%% Calculate width for table of contents\n" \ "\\newlength{\\toctextwidth}\n" \ "\\setlength{\\toctextwidth}{\\minof{0.8\\linewidth}{\\widthof{%s}}}\n\n" \ % longest_chapter_title latex_first_page_setup += "\\vspace{0.5cm}\\noindent" \ "\\begin{supertabular}{p{\\toctextwidth}p{0.1\\toctextwidth}}\n" for chapter in get_latex_chapters(): latex_first_page_setup += chapter['name'] + " & \\hfill\\pageref{" + chapter['id'] + "} \\\\\n" latex_first_page_setup += "\\end{supertabular}\n" latex_first_page_setup += "}\n\n" if setup.latex.chapter_pagebreak or setup.latex.table_of_contents_pagebreak: latex_first_page_setup += "\\clearpage\n\n" else: latex_first_page_setup += "\\vspace{0.5cm}\n\n" if setup.latex.book_print: header = "\\ohead{\\thepage}\n" header += "\\cehead{" + setup.latex.header_left + "}\n" header += "\\cohead{" + setup.latex.header_right + "}\n" else: header = "\\setkomafont{pageheadfoot}{\\small\\textit}\n" header += "\\ihead{" + setup.latex.header_left + "}\n" header += "\\chead{\\thepage}\n" header += "\\ohead{" + setup.latex.header_right + "}\n" latex_first_page_setup = "\\thispagestyle{empty}\n\n\\printtitle\n" + latex_first_page_setup log.info("Performing LaTeX template substitution") latex_template_string = DocumentReader(self.template_file_path).get_string() if not latex_template_string: log.error("Could not read LaTeX template.") return latex_template = string.Template(latex_template_string) self.latex_doc = latex_template.substitute(isbn=setup.latex.isbn, document_type=setup.latex.latex_document_type, geometry=setup.latex.latex_geometry, font=setup.latex.font, font_size=setup.latex.latex_font_size, title=setup.latex.latex_title, subtitle=setup.latex.latex_subtitle, half_title=setup.latex.latex_half_title, print_title=setup.latex.print_title, author=setup.general.author, first_page_setup=latex_first_page_setup, header=header, pdf_title=setup.latex.latex_title, pdf_author=setup.general.author, pdf_subject=setup.latex.pdf_subject, pdf_keywords=setup.latex.pdf_keywords, has_color_links=setup.latex.has_color_links, url_color=setup.latex.url_color, link_color=setup.latex.link_color, preliminaries=setup.latex.preliminaries, appendix=setup.latex.appendix, todonotes_config=setup.latex.todonotes_config)
def getDocument(): reader = DocumentReader(Page.MapPath(DOCUMENT_FILE)) return reader.read()