Beispiel #1
0
 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)
Beispiel #2
0
 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
Beispiel #3
0
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
Beispiel #4
0
    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()
Beispiel #6
0
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.")
Beispiel #7
0
 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)
Beispiel #8
0
def getDocument():
    reader = DocumentReader(Page.MapPath(DOCUMENT_FILE))
    return reader.read()