Last Modified 2019.10.9
EPUB ebook 만들기
EPUB를 위한 디렉터리를 생성한다.
EPUB 디렉터리
MyFirstBook (ROOT Directory)
├── mimetype
├── META-INF
│ └── container.xml
└── OEBPS
├── content.opf
├── toc.ncx
├── css
| └── epub.css
├── images
| └── cover.jpg
└── xhtml
├── cover.xhtml
├── preface.xhtml
├── ch01.xhtml
└── ch02.xhtml
위 디렉터리 구조대로 파일을 생성한다.
mimetype
application/epub+zip
container.xml
<?xml version="1.0" encoding="UTF-8"?> <container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container"> <rootfiles> <rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml"/> </rootfiles> </container>
다음 자바 프로그램을 실행한다.
MakeUUID.java
import java.util.UUID; public class MakeUUID { public static void main(String[] args) { UUID uuid = UUID.randomUUID(); System.out.println(uuid); } }C:\ Command Prompt
C:\Users> javac MakeUUID.java C:\Users> java MakeUUID b5fc6c97-5eeb-44c5-af36-87843d9db1fc
content.opf
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <package xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookId" version="2.0"> <metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf"> <dc:identifier id="BookId" opf:scheme="UUID">urn:uuid:b5fc6c97-5eeb-44c5-af36-87843d9db1fc</dc:identifier> <dc:title>나의 첫 번째 책</dc:title> <dc:creator opf:role="aut">홍길동</dc:creator> <dc:language>ko</dc:language> <dc:date opf:event="modification">2019-10-09</dc:date> <dc:publisher>00 출판사</dc:publisher> <meta name="cover" content="cover-img" /> </metadata> <manifest> <item href="toc.ncx" id="ncx" media-type="application/x-dtbncx+xml" /> <item href="css/epub.css" id="epub.css" media-type="text/css"/> <item href="images/cover.jpg" id="cover-img" media-type="image/jpeg"/> <item href="xhtml/cover.xhtml" id="cover.xhtml" media-type="application/xhtml+xml"/> <item href="xhtml/preface.xhtml" id="preface.xhtml" media-type="application/xhtml+xml"/> <item href="xhtml/ch01.xhtml" id="ch01.xhtml" media-type="application/xhtml+xml"/> <item href="xhtml/ch02.xhtml" id="ch02.xhtml" media-type="application/xhtml+xml"/> </manifest> <spine toc="ncx"> <itemref idref="cover.xhtml" linear="no"/> <itemref idref="preface.xhtml"/> <itemref idref="ch01.xhtml"/> <itemref idref="ch02.xhtml"/> </spine> </package>
toc.ncx
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN" "http://www.daisy.org/z3986/2005/ncx-2005-1.dtd"> <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1"> <head> <meta content="urn:uuid:b5fc6c97-5eeb-44c5-af36-87843d9db1fc" name="dtb:uid" /> </head> <docTitle> <text>나의 첫 번째 책</text> </docTitle> <navMap> <navPoint id="navPoint-1" playOrder="1"> <navLabel> <text>1장</text> </navLabel> <content src="xhtml/ch01.xhtml"/> </navPoint> <navPoint id="navPoint-2" playOrder="2"> <navLabel> <text>2장</text> </navLabel> <content src="xhtml/ch02.xhtml"/> </navPoint> </navMap> </ncx>
epub.css
@charset "UTF-8"; html, body { font-family: sans-serif; font-size: 1em; margin: 0; padding: 0; } h1 { font-size: 2em; } p { line-height: 1.4; font-size: 0.9em; }
cover.jpg
1524 x 2339
cover.xhtml
<?xml version="1.0" encoding="utf-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>표지</title> </head> <body> <div style="text-align: center; padding: 0pt; margin: 0pt;"> <img src="../images/cover.jpg" alt="Cover" /> </div> </body> </html>
preface.xhtml
<?xml version="1.0" encoding="utf-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" xmlns:xml="http://www.w3.org/XML/1998/namespace"> <head> <title>판권지</title> </head> <body> <p><strong>나의 첫 번째 책</strong></p> <p>지은이 : 홍길동</p> <p>펴낸곳 : 00 출판사</p> <p>주소 : 서울</p> <p>전화 : 000-0000-0000</p> <p>등록 : 0000-000000</p> <p>발행 : 2019/10/9</p> <p>정가 : 5000원</p> <p>ISBN : 000-00-000000-0-0</p> <p>이메일 : 000@000.000</p> </body> </html>
ch01.xhtml
<?xml version="1.0" encoding="utf-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" xmlns:xml="http://www.w3.org/XML/1998/namespace"> <head> <title>1장</title> <link href="../css/epub.css" rel="stylesheet" type="text/css" /> </head> <body> <h1>1장</h1> <p> 가 나 다 라... </p> </body> </html>
ch02.xhtml
<?xml version="1.0" encoding="utf-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" xmlns:xml="http://www.w3.org/XML/1998/namespace"> <head> <title>2장</title> <link href="../css/epub.css" rel="stylesheet" type="text/css" /> </head> <body> <h1>2장</h1> <p> 마 바 사 아... </p> </body> </html>
EPUB 파일 생성
Info-Zip의 zip.exe 파일을 윈도에 설치해야 한다.
http://stahlworks.com/dev/index.php?tool=zipunzip에서 zip.exe를 내려받고 C:\Windows에 복사한다.
루트 디렉터리인 MyFirstBook로 이동하여 다음 명령을 차례로 실행한다.
C:\ Command Promptzip -0Xq MyFirstBook.epub mimetype zip -Xr9Dq MyFirstBook.epub META-INF OEBPS
EPUB 파일 검사
https://github.com/w3c/epubcheck/releases/tag/v4.1.1에서 epubcheck-4.1.1.zip 파일을 내려받는다. 압축을 풀고 디렉터리를 원하는 곳으로 옮긴다.
명령 프롬프트에서 다음을 실행해서 오류를 확인한다.
C:\ Command Promptjava -jar C:/epubcheck-4.1.1/epubcheck.jar C:/Users/kim/MyFirstBook/MyFirstBook.epub
테스트
MyFirstBook.epub를 iTunes를 통해 아이패드로 옮기면, 아이패드의 기본 앱인 iBooks에 등록된다.