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.1.tar.gz (33.7 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.1-py3-none-any.whl (32.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pypandoc_hwpx-0.1.1.tar.gz
  • Upload date:
  • Size: 33.7 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.1.tar.gz
Algorithm Hash digest
SHA256 36727307fa2f0b706b14fa6f383e273990cf13a964e9e742b4d9048786e107b0
MD5 fad5b9705b5464b171c8a7ff4ea09dc3
BLAKE2b-256 b1d9250d7074a23ae55129abb5a27b5cf6d2257d2213ced6a452d18a53af2793

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pypandoc_hwpx-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 32.3 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 51a91be2645c0fbcd03c2670208db3c292c8cb4b7f154a40d6aec2c00aed6e32
MD5 11687fe6cfbbc6d56115969b37d5c41d
BLAKE2b-256 f793ed7136c8382c282f844c7e5edb7ee7a078d9d722251d8841e75fa4c88a9e

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