md2hwpx 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
md2hwpx-0.1.0/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 IDA Co-operation (Jundamin)
4
+ Copyright (c) 2024 pypandoc-hwpx Contributors
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
@@ -0,0 +1,6 @@
1
+ include README.md
2
+ include LICENSE
3
+ include NOTICE
4
+ recursive-include md2hwpx *.py
5
+ recursive-include md2hwpx *.hwpx
6
+ prune docs
md2hwpx-0.1.0/NOTICE ADDED
@@ -0,0 +1,7 @@
1
+ This project is a fork of pypandoc-hwpx.
2
+
3
+ Upstream project:
4
+ https://github.com/msjang/pypandoc-hwpx
5
+
6
+ Original license:
7
+ MIT License (see LICENSE)
md2hwpx-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,232 @@
1
+ Metadata-Version: 2.4
2
+ Name: md2hwpx
3
+ Version: 0.1.0
4
+ Summary: Convert Markdown to HWPX (Korean Hancom Office format)
5
+ Home-page: https://github.com/msjang/md2hwpx
6
+ Author: md2hwpx Contributors
7
+ License: MIT
8
+ Project-URL: Source, https://github.com/msjang/md2hwpx
9
+ Project-URL: Tracker, https://github.com/msjang/md2hwpx/issues
10
+ Project-URL: Fork of, https://github.com/msjang/pypandoc-hwpx
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Operating System :: OS Independent
14
+ Requires-Python: >=3.9
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE
17
+ License-File: NOTICE
18
+ Requires-Dist: marko>=2.0.0
19
+ Requires-Dist: python-frontmatter>=1.0.0
20
+ Requires-Dist: Pillow
21
+ Dynamic: author
22
+ Dynamic: classifier
23
+ Dynamic: description
24
+ Dynamic: description-content-type
25
+ Dynamic: home-page
26
+ Dynamic: license
27
+ Dynamic: license-file
28
+ Dynamic: project-url
29
+ Dynamic: requires-dist
30
+ Dynamic: requires-python
31
+ Dynamic: summary
32
+
33
+ # md2hwpx
34
+
35
+ **md2hwpx**는 마크다운(`.md`)을 아래아 한글 HWPX(`.hwpx`)로 변환해주는 파이썬 도구입니다. Pandoc 없이 순수 파이썬으로 동작합니다.
36
+
37
+ [pypandoc-hwpx 포크](https://github.com/msjang/pypandoc-hwpx)이며, 새로운 기능과 개선을 계속 추가하고 있습니다.
38
+
39
+ [English README](https://github.com/msjang/md2hwpx/blob/main/README.en.md)
40
+
41
+ ## 주요 기능
42
+
43
+ - **Pandoc 없이 변환**: Marko 파서 + XML 생성으로 순수 파이썬 변환
44
+ - **CLI 및 Python API** 제공
45
+ - **YAML 프론트매터** 지원: 문서 `title` 메타데이터 작성
46
+ - **템플릿 기반 스타일**: 제목/본문/리스트/표 셀 플레이스홀더로 WYSIWYG 스타일링
47
+ - **표 지원**: GFM 표, 정렬 및 컬럼 비율 반영
48
+ - **리스트**: 중첩 목록과 시작 번호 지원
49
+ - **이미지 임베딩**: 로컬 이미지 삽입, 크기 보정, 경로 검증
50
+ - **인용문, 수평선**
51
+ - **각주**
52
+ - **확장 헤더**: 1–9 레벨
53
+ - **디버그 출력**: `.json` AST, `.html` 출력
54
+
55
+ ## 요구 사항
56
+
57
+ - **Python 3.9+**
58
+ - **라이브러리**: marko, python-frontmatter, Pillow
59
+
60
+ ## 설치
61
+
62
+ ### PyPI 설치 (권장)
63
+
64
+ ```bash
65
+ pip install md2hwpx
66
+ ```
67
+
68
+ ### 소스 설치
69
+
70
+ ```bash
71
+ git clone https://github.com/msjang/md2hwpx.git
72
+ cd md2hwpx
73
+ pip install -e .
74
+ ```
75
+
76
+ ## 사용 방법
77
+
78
+ ### CLI
79
+
80
+ ```bash
81
+ # Markdown -> HWPX
82
+ md2hwpx input.md -o output.hwpx
83
+
84
+ # 참조 템플릿 지정
85
+ md2hwpx input.md --reference-doc=custom.hwpx -o output.hwpx
86
+
87
+ # 디버그: JSON AST 출력
88
+ md2hwpx input.md -o debug.json
89
+
90
+ # 디버그: HTML 출력
91
+ md2hwpx input.md -o output.html
92
+ ```
93
+
94
+ ### CLI 옵션
95
+
96
+ | 옵션 | 설명 |
97
+ |------|------|
98
+ | `input_file` | 입력 마크다운 파일 (.md, .markdown) |
99
+ | `-o`, `--output` | 출력 파일 (.hwpx, .json, .html) |
100
+ | `-r`, `--reference-doc` | 스타일/페이지 설정용 참조 HWPX (기본: 내장 blank.hwpx) |
101
+ | `--verbose` | 디버그 로그 출력 |
102
+ | `-q`, `--quiet` | 오류 외 출력 억제 |
103
+ | `-v`, `--version` | 버전 출력 |
104
+
105
+ ### 프론트매터 (title)
106
+
107
+ ```markdown
108
+ ---
109
+ title: 문서 제목
110
+ ---
111
+
112
+ # 제목
113
+ ```
114
+
115
+ `title` 값은 HWPX 문서 메타데이터에 기록됩니다.
116
+
117
+ ### Python API
118
+
119
+ ```python
120
+ from md2hwpx import MarkdownToHwpx, MarkoToPandocAdapter
121
+
122
+ adapter = MarkoToPandocAdapter()
123
+ ast = adapter.parse("# Hello World\n\nThis is a paragraph.")
124
+
125
+ MarkdownToHwpx.convert_to_hwpx(
126
+ input_path="input.md",
127
+ output_path="output.hwpx",
128
+ reference_path="blank.hwpx",
129
+ json_ast=ast,
130
+ )
131
+ ```
132
+
133
+ ## 스타일 커스터마이징 (템플릿)
134
+
135
+ 한컴오피스에서 참조 HWPX 템플릿을 편집하면 출력 스타일을 손쉽게 제어할 수 있습니다.
136
+
137
+ ### 방법 1: 플레이스홀더 방식 (권장)
138
+
139
+ 템플릿에 플레이스홀더 텍스트를 넣고 원하는 서식을 적용합니다.
140
+
141
+ | 플레이스홀더 | 마크다운 요소 |
142
+ |-------------|---------------|
143
+ | `{{H1}}` | `# 제목 1` |
144
+ | `{{H2}}` | `## 제목 2` |
145
+ | `{{H3}}` | `### 제목 3` |
146
+ | `{{H4}}`–`{{H9}}` | `####`–`#########` |
147
+ | `{{BODY}}` | 본문 |
148
+
149
+ #### 리스트 플레이스홀더
150
+
151
+ 리스트 레벨(1–7)별 스타일을 정의할 수 있습니다.
152
+
153
+ - `{{LIST_BULLET_1}}` … `{{LIST_BULLET_7}}`
154
+ - `{{LIST_ORDERED_1}}` … `{{LIST_ORDERED_7}}`
155
+
156
+ 플레이스홀더 앞 텍스트는 접두(prefix)로 사용됩니다(예: `1. `, `가. `).
157
+ 템플릿 단락에 번호 매기기를 지정하면 해당 번호 스타일을 유지합니다.
158
+
159
+ #### 표 셀 플레이스홀더
160
+
161
+ 표 셀 스타일을 세부적으로 지정하려면 아래 12개 플레이스홀더를 사용하세요.
162
+
163
+ - `{{CELL_HEADER_LEFT}}`, `{{CELL_HEADER_CENTER}}`, `{{CELL_HEADER_RIGHT}}`
164
+ - `{{CELL_TOP_LEFT}}`, `{{CELL_TOP_CENTER}}`, `{{CELL_TOP_RIGHT}}`
165
+ - `{{CELL_MIDDLE_LEFT}}`, `{{CELL_MIDDLE_CENTER}}`, `{{CELL_MIDDLE_RIGHT}}`
166
+ - `{{CELL_BOTTOM_LEFT}}`, `{{CELL_BOTTOM_CENTER}}`, `{{CELL_BOTTOM_RIGHT}}`
167
+
168
+ 사용 예:
169
+
170
+ ```bash
171
+ md2hwpx input.md --reference-doc=my_template.hwpx -o output.hwpx
172
+ ```
173
+
174
+ ### 방법 2: 스타일 직접 편집
175
+
176
+ 1. 기본 템플릿 복사:
177
+ ```bash
178
+ python -c "import md2hwpx; import shutil; shutil.copy(md2hwpx.__path__[0] + '/blank.hwpx', 'my_template.hwpx')"
179
+ ```
180
+ 2. 한컴오피스에서 **서식 > 스타일(F6)** 메뉴로 편집
181
+ 3. 참조 템플릿으로 사용
182
+
183
+ ## 지원하는 마크다운 요소
184
+
185
+ | 요소 | 지원 |
186
+ |------|------|
187
+ | 제목 (1–9) | 지원 |
188
+ | 문단 | 지원 |
189
+ | 굵게 / 기울임 / 취소선 | 지원 |
190
+ | 링크 | 지원 (HWPX 하이퍼링크) |
191
+ | 이미지 | 지원 (임베딩) |
192
+ | 표 (GFM) | 지원 (정렬 + 컬럼 비율) |
193
+ | 글머리/번호 목록 | 지원 (중첩) |
194
+ | 코드 블록 | 지원 |
195
+ | 인라인 코드 | 지원 |
196
+ | 인용문 | 지원 (중첩) |
197
+ | 수평선 | 지원 |
198
+ | 각주 | 지원 |
199
+ | 위첨자 / 아래첨자 | AST에 있으면 출력 지원 |
200
+
201
+ ## 보안 및 제한 사항
202
+
203
+ - 입력/템플릿 파일 크기 제한 (기본 50 MB)
204
+ - 이미지 개수 제한 (기본 500)
205
+ - 이미지 경로 검증(절대 경로/상위 경로 차단)
206
+
207
+ ## 개발
208
+
209
+ ```bash
210
+ # 개발 설치
211
+ pip install -e .
212
+
213
+ # 테스트 실행
214
+ python -m pytest tests/ -v
215
+
216
+ # 자세한 로그로 실행
217
+ md2hwpx test.md -o output.hwpx --verbose
218
+ ```
219
+
220
+ ## 포크 이후 변경 사항
221
+
222
+ 원본 포크 이후 주요 변경 사항:
223
+
224
+ - 헤더/리스트/표 셀 플레이스홀더 기반 스타일
225
+ - GFM 표 정렬 및 컬럼 비율 처리
226
+ - 프론트매터 메타데이터(title) 반영
227
+ - 리스트 시작 번호 및 템플릿 번호 매기기 개선
228
+ - 보안 제한(파일 크기, 이미지 개수, 경로 검증)
229
+
230
+ ## 라이선스
231
+
232
+ MIT License. 자세한 내용은 `LICENSE`를 참고하세요.
@@ -0,0 +1,200 @@
1
+ # md2hwpx
2
+
3
+ **md2hwpx**는 마크다운(`.md`)을 아래아 한글 HWPX(`.hwpx`)로 변환해주는 파이썬 도구입니다. Pandoc 없이 순수 파이썬으로 동작합니다.
4
+
5
+ [pypandoc-hwpx 포크](https://github.com/msjang/pypandoc-hwpx)이며, 새로운 기능과 개선을 계속 추가하고 있습니다.
6
+
7
+ [English README](https://github.com/msjang/md2hwpx/blob/main/README.en.md)
8
+
9
+ ## 주요 기능
10
+
11
+ - **Pandoc 없이 변환**: Marko 파서 + XML 생성으로 순수 파이썬 변환
12
+ - **CLI 및 Python API** 제공
13
+ - **YAML 프론트매터** 지원: 문서 `title` 메타데이터 작성
14
+ - **템플릿 기반 스타일**: 제목/본문/리스트/표 셀 플레이스홀더로 WYSIWYG 스타일링
15
+ - **표 지원**: GFM 표, 정렬 및 컬럼 비율 반영
16
+ - **리스트**: 중첩 목록과 시작 번호 지원
17
+ - **이미지 임베딩**: 로컬 이미지 삽입, 크기 보정, 경로 검증
18
+ - **인용문, 수평선**
19
+ - **각주**
20
+ - **확장 헤더**: 1–9 레벨
21
+ - **디버그 출력**: `.json` AST, `.html` 출력
22
+
23
+ ## 요구 사항
24
+
25
+ - **Python 3.9+**
26
+ - **라이브러리**: marko, python-frontmatter, Pillow
27
+
28
+ ## 설치
29
+
30
+ ### PyPI 설치 (권장)
31
+
32
+ ```bash
33
+ pip install md2hwpx
34
+ ```
35
+
36
+ ### 소스 설치
37
+
38
+ ```bash
39
+ git clone https://github.com/msjang/md2hwpx.git
40
+ cd md2hwpx
41
+ pip install -e .
42
+ ```
43
+
44
+ ## 사용 방법
45
+
46
+ ### CLI
47
+
48
+ ```bash
49
+ # Markdown -> HWPX
50
+ md2hwpx input.md -o output.hwpx
51
+
52
+ # 참조 템플릿 지정
53
+ md2hwpx input.md --reference-doc=custom.hwpx -o output.hwpx
54
+
55
+ # 디버그: JSON AST 출력
56
+ md2hwpx input.md -o debug.json
57
+
58
+ # 디버그: HTML 출력
59
+ md2hwpx input.md -o output.html
60
+ ```
61
+
62
+ ### CLI 옵션
63
+
64
+ | 옵션 | 설명 |
65
+ |------|------|
66
+ | `input_file` | 입력 마크다운 파일 (.md, .markdown) |
67
+ | `-o`, `--output` | 출력 파일 (.hwpx, .json, .html) |
68
+ | `-r`, `--reference-doc` | 스타일/페이지 설정용 참조 HWPX (기본: 내장 blank.hwpx) |
69
+ | `--verbose` | 디버그 로그 출력 |
70
+ | `-q`, `--quiet` | 오류 외 출력 억제 |
71
+ | `-v`, `--version` | 버전 출력 |
72
+
73
+ ### 프론트매터 (title)
74
+
75
+ ```markdown
76
+ ---
77
+ title: 문서 제목
78
+ ---
79
+
80
+ # 제목
81
+ ```
82
+
83
+ `title` 값은 HWPX 문서 메타데이터에 기록됩니다.
84
+
85
+ ### Python API
86
+
87
+ ```python
88
+ from md2hwpx import MarkdownToHwpx, MarkoToPandocAdapter
89
+
90
+ adapter = MarkoToPandocAdapter()
91
+ ast = adapter.parse("# Hello World\n\nThis is a paragraph.")
92
+
93
+ MarkdownToHwpx.convert_to_hwpx(
94
+ input_path="input.md",
95
+ output_path="output.hwpx",
96
+ reference_path="blank.hwpx",
97
+ json_ast=ast,
98
+ )
99
+ ```
100
+
101
+ ## 스타일 커스터마이징 (템플릿)
102
+
103
+ 한컴오피스에서 참조 HWPX 템플릿을 편집하면 출력 스타일을 손쉽게 제어할 수 있습니다.
104
+
105
+ ### 방법 1: 플레이스홀더 방식 (권장)
106
+
107
+ 템플릿에 플레이스홀더 텍스트를 넣고 원하는 서식을 적용합니다.
108
+
109
+ | 플레이스홀더 | 마크다운 요소 |
110
+ |-------------|---------------|
111
+ | `{{H1}}` | `# 제목 1` |
112
+ | `{{H2}}` | `## 제목 2` |
113
+ | `{{H3}}` | `### 제목 3` |
114
+ | `{{H4}}`–`{{H9}}` | `####`–`#########` |
115
+ | `{{BODY}}` | 본문 |
116
+
117
+ #### 리스트 플레이스홀더
118
+
119
+ 리스트 레벨(1–7)별 스타일을 정의할 수 있습니다.
120
+
121
+ - `{{LIST_BULLET_1}}` … `{{LIST_BULLET_7}}`
122
+ - `{{LIST_ORDERED_1}}` … `{{LIST_ORDERED_7}}`
123
+
124
+ 플레이스홀더 앞 텍스트는 접두(prefix)로 사용됩니다(예: `1. `, `가. `).
125
+ 템플릿 단락에 번호 매기기를 지정하면 해당 번호 스타일을 유지합니다.
126
+
127
+ #### 표 셀 플레이스홀더
128
+
129
+ 표 셀 스타일을 세부적으로 지정하려면 아래 12개 플레이스홀더를 사용하세요.
130
+
131
+ - `{{CELL_HEADER_LEFT}}`, `{{CELL_HEADER_CENTER}}`, `{{CELL_HEADER_RIGHT}}`
132
+ - `{{CELL_TOP_LEFT}}`, `{{CELL_TOP_CENTER}}`, `{{CELL_TOP_RIGHT}}`
133
+ - `{{CELL_MIDDLE_LEFT}}`, `{{CELL_MIDDLE_CENTER}}`, `{{CELL_MIDDLE_RIGHT}}`
134
+ - `{{CELL_BOTTOM_LEFT}}`, `{{CELL_BOTTOM_CENTER}}`, `{{CELL_BOTTOM_RIGHT}}`
135
+
136
+ 사용 예:
137
+
138
+ ```bash
139
+ md2hwpx input.md --reference-doc=my_template.hwpx -o output.hwpx
140
+ ```
141
+
142
+ ### 방법 2: 스타일 직접 편집
143
+
144
+ 1. 기본 템플릿 복사:
145
+ ```bash
146
+ python -c "import md2hwpx; import shutil; shutil.copy(md2hwpx.__path__[0] + '/blank.hwpx', 'my_template.hwpx')"
147
+ ```
148
+ 2. 한컴오피스에서 **서식 > 스타일(F6)** 메뉴로 편집
149
+ 3. 참조 템플릿으로 사용
150
+
151
+ ## 지원하는 마크다운 요소
152
+
153
+ | 요소 | 지원 |
154
+ |------|------|
155
+ | 제목 (1–9) | 지원 |
156
+ | 문단 | 지원 |
157
+ | 굵게 / 기울임 / 취소선 | 지원 |
158
+ | 링크 | 지원 (HWPX 하이퍼링크) |
159
+ | 이미지 | 지원 (임베딩) |
160
+ | 표 (GFM) | 지원 (정렬 + 컬럼 비율) |
161
+ | 글머리/번호 목록 | 지원 (중첩) |
162
+ | 코드 블록 | 지원 |
163
+ | 인라인 코드 | 지원 |
164
+ | 인용문 | 지원 (중첩) |
165
+ | 수평선 | 지원 |
166
+ | 각주 | 지원 |
167
+ | 위첨자 / 아래첨자 | AST에 있으면 출력 지원 |
168
+
169
+ ## 보안 및 제한 사항
170
+
171
+ - 입력/템플릿 파일 크기 제한 (기본 50 MB)
172
+ - 이미지 개수 제한 (기본 500)
173
+ - 이미지 경로 검증(절대 경로/상위 경로 차단)
174
+
175
+ ## 개발
176
+
177
+ ```bash
178
+ # 개발 설치
179
+ pip install -e .
180
+
181
+ # 테스트 실행
182
+ python -m pytest tests/ -v
183
+
184
+ # 자세한 로그로 실행
185
+ md2hwpx test.md -o output.hwpx --verbose
186
+ ```
187
+
188
+ ## 포크 이후 변경 사항
189
+
190
+ 원본 포크 이후 주요 변경 사항:
191
+
192
+ - 헤더/리스트/표 셀 플레이스홀더 기반 스타일
193
+ - GFM 표 정렬 및 컬럼 비율 처리
194
+ - 프론트매터 메타데이터(title) 반영
195
+ - 리스트 시작 번호 및 템플릿 번호 매기기 개선
196
+ - 보안 제한(파일 크기, 이미지 개수, 경로 검증)
197
+
198
+ ## 라이선스
199
+
200
+ MIT License. 자세한 내용은 `LICENSE`를 참고하세요.