def make(args): from hwp5.plat import get_xslt from hwp5.importhelper import pkg_resources_filename from tempfile import mkstemp from hwp5.xmlmodel import Hwp5File hwp5_filename = args['<hwp5file>'] rootname = os.path.basename(hwp5_filename) if rootname.lower().endswith('.hwp'): rootname = rootname[0:-4] txt_path = rootname + '.txt' xslt = get_xslt() plaintext_xsl = pkg_resources_filename('hwp5', 'xsl/plaintext.xsl') hwp5file = Hwp5File(hwp5_filename) try: xhwp5_fd, xhwp5_path = mkstemp() try: xhwp5_file = os.fdopen(xhwp5_fd, 'w') try: hwp5file.xmlevents().dump(xhwp5_file) finally: xhwp5_file.close() xslt(plaintext_xsl, xhwp5_path, txt_path) finally: os.unlink(xhwp5_path) finally: hwp5file.close()
def convert(self): from hwp5 import plat from hwp5.hwp5odt import Converter xslt = plat.get_xslt() assert xslt is not None, 'no XSLT implementation is available' relaxng = plat.get_relaxng() return Converter(xslt, relaxng)
def convert(self): from hwp5 import plat from hwp5.hwp5odt import ODTPackageConverter xslt = plat.get_xslt() assert xslt is not None, 'no XSLT implementation is available' relaxng = plat.get_relaxng() return ODTPackageConverter(xslt, relaxng)
def make_converter(args): xslt = plat.get_xslt() if xslt is None: logger.error("no XSLT implementation is available.") sys.exit(1) rng = plat.get_relaxng() if rng is None: logger.warning("no RelaxNG implementation is available.") if args["--document"]: return ODTSingleDocumentConverter(xslt, rng, not args["--no-embed-image"]) elif args["--styles"]: return ODTStylesConverter(xslt, rng) elif args["--content"]: return ODTContentConverter(xslt, rng, args["--embed-image"]) else: return ODTPackageConverter(xslt, rng, args["--embed-image"])
def make_converter(args): xslt = plat.get_xslt() if xslt is None: logger.error('no XSLT implementation is available.') sys.exit(1) rng = plat.get_relaxng() if rng is None: logger.warning('no RelaxNG implementation is available.') if args['--document']: return ODTSingleDocumentConverter(xslt, rng, not args['--no-embed-image']) elif args['--styles']: return ODTStylesConverter(xslt, rng) elif args['--content']: return ODTContentConverter(xslt, rng, args['--embed-image']) else: return ODTPackageConverter(xslt, rng, args['--embed-image'])
def main(): import os import sys from hwp5 import __version__ as version from hwp5.proc import rest_to_docopt from hwp5.proc import init_logger from hwp5 import plat from hwp5.errors import InvalidHwp5FileError from docopt import docopt doc = rest_to_docopt(__doc__) args = docopt(doc, version=version) init_logger(args) if 'PYHWP_XSLTPROC' in os.environ: from hwp5.plat import xsltproc xsltproc.executable = os.environ['PYHWP_XSLTPROC'] xsltproc.enable() if 'PYHWP_XMLLINT' in os.environ: from hwp5.plat import xmllint xmllint.executable = os.environ['PYHWP_XMLLINT'] xmllint.enable() xslt = plat.get_xslt() if xslt is None: logger.error('no XSLT implementation is available.') sys.exit(1) rng = plat.get_relaxng() if rng is None: logger.warning('no RelaxNG implementation is available.') convert = Converter(xslt, rng) from hwp5.dataio import ParseError try: make(convert, args) except ParseError, e: e.print_to_logger(logger)
def generate_htmldir_files(hwp5file, base_dir): import os from tempfile import mkstemp from hwp5.plat import get_xslt xslt = get_xslt() fd, path = mkstemp() try: xhwp5 = os.fdopen(fd, 'w') try: hwp5file.xmlevents(embedbin=False).dump(xhwp5) finally: xhwp5.close() html_path = os.path.join(base_dir, 'index.xhtml') generate_html_file(xslt, path, html_path) css_path = os.path.join(base_dir, 'styles.css') generate_css_file(xslt, path, css_path) finally: os.unlink(path) bindata_dir = os.path.join(base_dir, 'bindata') extract_bindata_dir(hwp5file, bindata_dir)
def hwpToHTML(hwp5file, base_dir): import os from tempfile import mkstemp from hwp5.plat import get_xslt from hwp5.hwp5odt import hwp5_resources_filename xslt = get_xslt() fd, path = mkstemp() try: xhwp5 = os.fdopen(fd, 'w') try: hwp5file.xmlevents(embedbin=False).dump(xhwp5) htmlXSL = hwp5_resources_filename('xsl/hwp5html.xsl') cssXSL = hwp5_resources_filename('xsl/hwp5css.xsl') htmlxslTree = etree.XML(open(htmlXSL).read()) cssxslTree = etree.XML(open(cssXSL).read()) transformHTML = etree.XSLT(htmlxslTree) transformCSS = etree.XSLT(cssxslTree) file = open(path) originHTML = etree.XML(file.read()) css = transformCSS(originHTML) html = transformHTML(originHTML) html = str(html).replace("</head>", "\t<style>" + str(css) + "</style>\n</head>") return str(html) finally: xhwp5.close() finally: os.unlink(path)
def xslt(self): return get_xslt()
def xslt(self): from hwp5.plat import get_xslt return get_xslt()