이번 블로그에서는 DocBook xml 파일을 epub 파일로 변환하는 작업과 변환작업을 자동화하는 것을 보여줄 것입니다.
1. DocBook xml 파일을 epub 파일로 변환하는 작업
개발자들이 장편의 기술적인 문서를 유지할 필요가 있을때 선호하는 도구가 DocBook 입니다.
전통적인 워드파일과는 다르게 텍스트베이스의 버전관리시스템에서 DocBook 출력물이 관리할수 있는 장점이 있습니다.
DocBook 은 xml 이기 때문에 다양한 출력 양식으로 변환할 수 있고, 또한 출력양식으로 epub도 지원하고 있습니다.
docbook-xsl-1.77.1 압축파일을 인터넷에서 다운로드합니다.
이 패키지내에 EPUB 생성을 위한 XSL 파일이 있습니다. docbook.xsl
$ xsltproc /path/to/docbook-xsl-1.74.0/epub/docbook.xsl docbook.xml Writing OEBPS/bk01-toc.html for book Writing OEBPS/pr01.html for preface(preface) Writing OEBPS/ch01.html for chapter(chapter1) Writing OEBPS/ch02.html for chapter(end-notes) Writing OEBPS/index.html for book Writing OEBPS/toc.ncx Writing OEBPS/content.opf Writing META-INF/container.xml
$ echo "application/epub+zip" > mimetype $ zip -0Xq my-book.epub mimetype $ zip -Xr9D my-book.epub * $ java -jar epubcheck.jar my-book.epub No errors or warnings detected
2. Python 과 Lxml을 이용하여 docbook 을 epub 로 자동으로 변환하기
python 모듈로 위의 과정을 함수로 만들어서 자동으로 파일을 생성하고 취합하도록 할수 있습니다.
import os.path from lxml import etree def convert_docbook(docbook_file): docbook_xsl = os.path.abspath('docbook-xsl/epub/docbook.xsl') # Give the XSLT processor the ability to create new directories xslt_ac = etree.XSLTAccessControl(read_file=True, write_file=True, create_dir=True, read_network=True, write_network=False) transform = etree.XSLT(etree.parse(docbook_xsl), access_control=xslt_ac) transform(etree.parse(docbook_file))
이모듈을 실행하면 epub 파일이 만들어 집니다.
Adobe Digital Edition 프로그램을 열어서 확인할 수 있습니다.
지금까지는 정상적으로 수행되었는데 컨텐츠를 한글로 하면 깨져서 보입니다.
docbook.xsl 로 생성된 html 파일이 한글을 지원하지 않는 것 같습니다. 임시해결책은 아래와 같습니다.
생성 태그 : <html xmlns="http://www.w3.org/1999/xhtml">
수정 태그 : <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko">
해결책을 찾아 봐야 할듯 합니다.