Skip to main content

Convert Markdown/DOCX to HWPX using Pandoc AST

Project description

pypandoc-hwpx

pypandoc-hwpx는 워드(.docx), 마크다운(.md), HTML(.html,.htm)을 아래아 한글(.hwpx)로 변환해주는 파이썬 도구입니다.

주요 기능

  • 입력 형식: Pandoc이 지원하는 모든 문서형식 - 워드(.docx), 마크다운(.md), HTML(.html, .htm) 등
  • 출력 형식: 아래아 한글문서(.hwpx)
  • 이미지 처리: 로컬 이미지를 참조하는 HTML이나 마크다운의 경우 이미지를 포함하여 hwpx 생성
  • 고급 레이아웃:
    • 워드나 HTML의 셀 병합(rowspan/colspan)이 포함된 복잡한 표를 지원합니다.
    • 참조용 HWPX 파일(blank.hwpx)의 스타일과 페이지 설정(여백 등)을 복제하여 사용합니다.

요구 사항

  • Python 3.6+
  • Pandoc: 시스템에 Pandoc이 설치되어 있어야 합니다.
  • Python 라이브러리: Pandoc의 파이썬 래퍼인 pypandoc 이 필요합니다.

설치

PyPI 설치 (권장)

pip install pypandoc-hwpx

소스 설치

git clone https://github.com/msjang/pypandoc-hwpx.git
cd pypandoc-hwpx
pip install -e .

사용방법

커맨드 라인 도구(pypandoc-hwpx)를 사용하여 변환합니다.

# DOCX -> HWPX
pypandoc-hwpx test.docx --reference-doc=custom.hwpx -o test-from-docx.hwpx

# HTML -> HWPX
pypandoc-hwpx test.html --reference-doc=custom.hwpx -o test-from-html.hwpx

# MD -> HWPX
pypandoc-hwpx test.md   --reference-doc=custom.hwpx -o test-from-md.hwpx

# JSON AST -> HWPX
pypandoc-hwpx test.json --reference-doc=custom.hwpx -o test-from-json.hwpx
  • --reference-doc: (선택) 스타일(글자 모양, 문단 모양, 용지 설정 등)을 가져올 기준 HWPX 파일. 지정하지 않으면 패키지에 내장된 기본 파일(blank.hwpx)을 사용합니다.

설명 및 제약사항

Pandoc은 문서를 내부적으로 JSON AST(Abstract Syntax Tree) 형식으로 변환한 뒤, 이를 대상 포맷으로 다시 변환하는 방식을 사용합니다. 여러 문서 형식을 아우르기 위해, AST는 공통적으로 지원 가능한 최소한의 서식 정보만을 포함합니다.

pypandoc-hwpx는 이 과정을 활용하여 워드(.docx), 마크다운(.md), HTML(.html,.htm) 등의 문서를 AST로 변환하고, 이를 다시 아래아 한글(.hwpx) 규격에 맞춰 생성합니다. 따라서 AST가 표현하지 못하는 복잡한 서식(장평, 자간, 정교한 스타일 등)은 변환 과정에서 제외될 수 있습니다.

디버깅 및 개발 편의를 위해 중간 단계인 JSON AST 변환과 HTML 변환 기능도 제공합니다.

# 디버깅용 JSON 출력
pypandoc-hwpx test.docx -o test-from-docx.json

# 확인용 HTML 출력
pypandoc-hwpx test.docx -o test-from-docx.html

예제 (Examples)

프로젝트 내 tests/ 디렉토리에서 변환된 결과물(*.hwpx, *.html)과 원본 테스트 파일들을 확인할 수 있습니다.

프로젝트 구조

  • pypandoc_hwpx/cli.py: 메인 실행 스크립트.
  • pypandoc_hwpx/PandocToHwpx.py: HWPX 변환 핵심 로직 (AST 파싱, XML 생성, Zip 처리).
  • pypandoc_hwpx/PandocToHtml.py: HTML 변환 핵심 로직 (이미지 추출, HTML 템플릿).
  • pypandoc_hwpx/blank.hwpx: HWPX 변환에 필수적인 참조용 템플릿 파일.
    • 참고: Mac용 Word 16.73에서 생성한 DOCX를 Mac용 한글 12.30.0에서 HWPX로 변환한 뒤, XML을 수동 최적화하여 제작했습니다.

라이선스 (License)

MIT License. 자세한 내용은 LICENSE 파일을 참고하세요.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pypandoc_hwpx-0.1.0.tar.gz (33.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pypandoc_hwpx-0.1.0-py3-none-any.whl (32.2 kB view details)

Uploaded Python 3

File details

Details for the file pypandoc_hwpx-0.1.0.tar.gz.

File metadata

  • Download URL: pypandoc_hwpx-0.1.0.tar.gz
  • Upload date:
  • Size: 33.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for pypandoc_hwpx-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b8d891c53e517019a43926e2f8cc10779921ee9f9f1e3c54441155c478eab0f9
MD5 c8d508781dc7949c61e1d91c2a392833
BLAKE2b-256 6cb09b29a2067931c4117ee44478824793d76a8d0bed84a0998226ca9c379b23

See more details on using hashes here.

File details

Details for the file pypandoc_hwpx-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pypandoc_hwpx-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 32.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for pypandoc_hwpx-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 437da322b23d8547cb7b6f9dfa584a3dbd238709bf8c656718e7e573babcd454
MD5 a8ac72e61e6c3af72c6cece26c796a79
BLAKE2b-256 8e43dcd7c11d7537c0d25962525686228346026e1f489d3ec347092af8752eee

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page