안녕하세요, 개발자 윤진입니다.
얼마 전에 우분투에서 사용할 수 있는 한글뷰어를 소개하였는데요,
[Ubuntu/Linux] 한글과 컴퓨터의 한글 파일(.hwp)을 우분투에서 읽어보자! (evince-hwp)
한글뷰어로는 한글파일(hwp)을 볼 수만(read) 있기 때문에,
한글파일의 내용물을 활용(write)할 수가 없습니다.
따라서 이번에는 한글 파일을 다른 형식의 파일로 변환하여,
한글파일을 소스로 활용할 수 있는 방법을 알아보도록 하겠습니다.
이번에도 무척이나 다행스럽게,
한글파일을 다른 포맷으로 변환해주는 오픈소스 프로젝트가 있습니다.
meteOr님이 고군분투하며 2014년에 어느정도 완성한 프로젝트로 보입니다.
이런 오픈소스로 인해 수많은 사람들이 어려운 작업을 쉽게 할 수 있죠. :)
pyhwp는 python 기반으로 작성되어져 있기 때문에 pip로 다운로드 받을 수 있습니다.
pip는 "Pip Installs Packages" 혹은 "Pip installs Pythons"의 약자로,
파이선으로 작성된 패키지를 손쉽게 설치/관리할 수 있도록 도와주는 프로그램입니다.
우분투에서 apt 명령어로 우선 pip를 설치할 수 있습니다.
$ sudo apt-get install python-pip
pip 설치를 위해 python 관련 패키지들이 함께 설치가 됩니다.
설치가 완료되면 pip 명령어를 바로 사용할 수 있습니다.
$ pip
Usage:
pip <command> [options]
Commands:
install Install packages.
uninstall Uninstall packages.
freeze Output installed packages in requirements format.
list List installed packages.
show Show information about installed packages.
search Search PyPI for packages.
wheel Build wheels from your requirements.
zip DEPRECATED. Zip individual packages.
unzip DEPRECATED. Unzip individual packages.
bundle DEPRECATED. Create pybundles.
help Show help for commands.
General Options:
-h, --help Show help.
-v, --verbose Give more output. Option is additive, and can be used up to 3 times.
-V, --version Show version and exit.
-q, --quiet Give less output.
--log-file <path> Path to a verbose non-appending log, that only logs failures. This log is active by default at
/home/storycompiler/.pip/pip.log.
--log <path> Path to a verbose appending log. This log is inactive by default.
--proxy <proxy> Specify a proxy in the form [user:passwd@]proxy.server:port.
--timeout <sec> Set the socket timeout (default 15 seconds).
--exists-action <action> Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
--cert <path> Path to alternate CA bundle.
storycompiler@storycompiler:~$ pip
Usage:
pip <command> [options]
Commands:
install Install packages.
uninstall Uninstall packages.
freeze Output installed packages in requirements format.
list List installed packages.
show Show information about installed packages.
search Search PyPI for packages.
wheel Build wheels from your requirements.
zip DEPRECATED. Zip individual packages.
unzip DEPRECATED. Unzip individual packages.
bundle DEPRECATED. Create pybundles.
help Show help for commands.
General Options:
-h, --help Show help.
-v, --verbose Give more output. Option is additive, and can be used up to 3 times.
-V, --version Show version and exit.
-q, --quiet Give less output.
--log-file <path> Path to a verbose non-appending log, that only logs failures. This log is active by default at
/home/storycompiler/.pip/pip.log.
--log <path> Path to a verbose appending log. This log is inactive by default.
--proxy <proxy> Specify a proxy in the form [user:passwd@]proxy.server:port.
--timeout <sec> Set the socket timeout (default 15 seconds).
--exists-action <action> Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
--cert <path> Path to alternate CA bundle.
이제 pip 명령어를 사용하여 pyhwp를 설치합니다.
$ pip install --user --pre pyhwp
홈디렉토리 아래에 총 6개의 변환 프로그램이 설치되었습니다.
$ ls -al
합계 32
drwxrwxr-x 2 storycompiler storycompiler 4096 2월 8 00:43 .
drwx------ 5 storycompiler storycompiler 4096 2월 8 00:43 ..
-rwxrwxr-x 1 storycompiler storycompiler 297 2월 8 00:43 hwp5html
-rwxrwxr-x 1 storycompiler storycompiler 295 2월 8 00:43 hwp5odt
-rwxrwxr-x 1 storycompiler storycompiler 297 2월 8 00:43 hwp5proc
-rwxrwxr-x 1 storycompiler storycompiler 297 2월 8 00:43 hwp5spec
-rwxrwxr-x 1 storycompiler storycompiler 295 2월 8 00:43 hwp5txt
-rwxrwxr-x 1 storycompiler storycompiler 297 2월 8 00:43 hwp5view
사용법은 아주 간단합니다.
$ ./hwp5html -h
HWPv5 to HTML converter
Usage:
hwp5html [options] <hwp5file> [<out-directory>]
hwp5html -h | --help
hwp5html --version
Options:
-h --help Show this screen
--version Show version
--loglevel=<level> Set log level.
--logfile=<file> Set log file
변환하고자 하는 파일과 변환한 파일을 저장할 디렉토리만 적어주면 됩니다.
$ ./hwp5html test/test.hwp test
테스트 디렉토리에 있는 test.hwp 파일을 다시 test 디렉토리에 넣어보았습니다.
-rw-rw-r-- 1 storycompiler storycompiler 49557 2월 8 00:50 index.xhtml
-rw-rw-r-- 1 storycompiler storycompiler 17849 2월 8 00:50 styles.css
위처럼 두 개의 파일이 생성되었습니다.
xhtml 문서를 열어보니 제대로 변환이 되어 있네요.
브라우저로 실행하니 표도 제법 그럴듯하게 변환되어 있었습니다. :)
이 정도면 충분히 hwp의 컨텐츠를 소스로 사용할 수 있겠네요~
오늘은 여기서 마치겠습니다.
그럼 즐거운 하루 보내세요~
끝_
* References
https://en.wikipedia.org/wiki/Pip_%28package_manager%29
https://pip.pypa.io/en/stable/
https://github.com/mete0r/pyhwp
'IT' 카테고리의 다른 글
비행기에서 최적의 자리는 어디일까요? (3) | 2016.03.13 |
---|---|
카카오톡으로 대한항공 탑승권 체크인이 되나요? (0) | 2016.03.12 |
[GoPro HERO4 Silver] 고프로 히어로4 실버 타임랩스 촬영영상(서울/플라자호텔) (2) | 2016.03.03 |
온라인 호텔 예약으로 메리어트 계열에서 rewards 받아보자! (0) | 2016.02.29 |
[GoPro Gimbal] 메이드 인 코리아, 그럴듯한 짐벌! (0) | 2016.02.13 |
[Ubuntu/Linux] 한글과 컴퓨터의 한글 파일(.hwp)을 우분투에서 읽어보자! (evince-hwp) (0) | 2016.02.07 |
[러시아] 온라인에서 러시아어 발음을 들어보자! (0) | 2016.01.12 |
[GoPro HERO4 Silver] 고프로 히어로4 실버 타임랩스 1초에 한장, 무도엑스포 촬영하기 (0) | 2016.01.09 |
[러시아] 러시아어 키보드가 어렵다! [PC버전편] (5) | 2016.01.06 |
[러시아] 개발자가 읽은 '러시아, 지금부터 10년이 기회다' (0) | 2016.01.03 |