| | |
| | """ |
| | HWP to HTML Converter module. |
| | """ |
| | import os |
| |
|
| | from hwp5.hwp5html import HTMLTransform |
| | from hwp5.xmlmodel import Hwp5File |
| | from contextlib import closing |
| |
|
| | class HwpToHtmlConverter: |
| | def __init__(self, hwp_file): |
| | self.hwp_file = hwp_file |
| |
|
| | def convert(self, output_path): |
| | """ |
| | Convert the HWP file to HTML. |
| | :param output_path: Path to save the generated HTML file. |
| | """ |
| | if not os.path.exists(self.hwp_file): |
| | raise FileNotFoundError(f"HWP file not found: {self.hwp_file}") |
| |
|
| | |
| | output_dir = os.path.dirname(output_path) |
| | if output_dir and not os.path.exists(output_dir): |
| | os.makedirs(output_dir) |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | transformer = HTMLTransform() |
| | output_dir = os.path.dirname(os.path.abspath(output_path)) |
| | |
| | with closing(Hwp5File(self.hwp_file)) as hwp5file: |
| | with transformer.transformed_xhwp5_at_temp(hwp5file) as xhwp5path: |
| | |
| | with open(output_path, 'wb') as f: |
| | transformer.transform_xhwp5_to_xhtml(xhwp5path, f) |
| | |
| | |
| | |
| | css_path = os.path.join(output_dir, 'styles.css') |
| | with open(css_path, 'wb') as f: |
| | transformer.transform_xhwp5_to_css(xhwp5path, f) |
| |
|
| | |
| | bindata_dir = os.path.join(output_dir, 'bindata') |
| | transformer.extract_bindata_dir(hwp5file, bindata_dir) |
| |
|
| |
|
| | def main(): |
| | import argparse |
| | import sys |
| |
|
| | parser = argparse.ArgumentParser(description='Convert HWP file to HTML with CSS and images.') |
| | parser.add_argument('input', help='Input HWP file') |
| | parser.add_argument('--output', '-o', help='Output HTML file path (default: input_filename.html)') |
| |
|
| | args = parser.parse_args() |
| |
|
| | input_file = args.input |
| | if args.output: |
| | output_file = args.output |
| | else: |
| | base_name = os.path.splitext(input_file)[0] |
| | output_file = base_name + '.html' |
| |
|
| | try: |
| | converter = HwpToHtmlConverter(input_file) |
| | print(f"Converting '{input_file}' to '{output_file}'...") |
| | converter.convert(output_file) |
| | print("Conversion successful!") |
| | print(f"Generated files:") |
| | print(f" - HTML: {output_file}") |
| | print(f" - CSS: {os.path.join(os.path.dirname(os.path.abspath(output_file)), 'styles.css')}") |
| | print(f" - Data: {os.path.join(os.path.dirname(os.path.abspath(output_file)), 'bindata')}") |
| | except Exception as e: |
| | print(f"Error: {e}", file=sys.stderr) |
| | sys.exit(1) |
| |
|
| | if __name__ == '__main__': |
| | main() |
| |
|