ePub 파일 만들기

이북을 도구 없이 ePub 파일을 만드는 방법을 설명한다.

EPUB이란?

EPUB은 “Electronic PUBlication"의 약자로, W3C가 규격을 제정하고 있는 국제적인 전자책 포맷입니다. 원래는 미국의 전자책 표준화 단체 중 하나인 IDPF(International Digital Publishing Forum)에서 규격을 제정하고 있었으나, 2017년 2월 1일 W3C와 정식으로 통합1되었다.

인터넷에서는 ’epub’, ’ePub’ 등으로 표기되기도 한다. 그 개방성과 단순성 때문에 대응하는 전자책 하드웨어와 전자책 애플리케이션은 많다.

2024년 4월 현재 최신 버전은 3.1이며, 그 기능은 매우 다양하다.

EPUB 역사

연도 내용
1999년 Open eBook Forum (IDPF의 전신), OeBPS 발표
2007년 IDPF, EPUB 발표
2010년 IDPF, EPUB2를 권장 사양으로 승인
2011년 IDPF, EPUB3.0 발표
2012년 전자책 판매 시작
2016년 IDPE, EPUB3.1 규격서 공개
2017년 IDPF가 W3C에 통합

EPUB은 2007년 9월 미국의 전자출판업계 국제 표준화 단체인 IDPF(International Digital Publishing Forum)에 의해 발표되었다. IDPF는 원래 ‘Open eBook Forum’이라는 이름의 단체로 전자책을 위한 표준 ‘Open eBook PublicationStructure(OeBPS)‘를 1999년에 공개한 바 있다.
IDPF는 이 OeBPS를 아래와 같이 나누어 EPUB를 만들었다.

  • Open Publication Structure(OPS) : 콘텐츠 구조에 대한 규격
  • Open Packaging Format(OPF) : 각 파일을 정리하기 위한 규격
  • OeBPS Container Format(OCF) : 각 파일을 아카이빙(Archiving)하기 위한 규격

2010년 6월에는 EPUB2.0이 초안 표준으로 공개되었고, 2011년 10월 IDPF는 EPUB3를 공식 표준으로 채택되었다. 이 EPUB3가 발표되면서 비영어권 국가들의 EPUB 보급이 더욱 활발해졌다. 그 이유는 EPUB3에서 기능 향상과 추가된 새로운 기능이 다국어 지원 확대되었기 때문이다.

EPUB3가 발표되면서 해외 전자책 서점들이 EPUB3 리더를 많이 채택하였고, 이로부터 지금까지 주류였던 전자책 포맷에서 EPUB로 흐름이 바뀌게 되었다. 그리고 현재 EPUB은 전자책 포맷으로 대중적으로 정착되어 가고 있다.

그리고 2017년 2월, IDPF는 W3C(World Wide Web Consortium)에 통합되었다. W3C는 HTML, CSS, SVG, XML 등 웹 기술의 근간을 수립하는 세계적인 표준화 단체다. EPUB이 이러한 웹 기술을 활용하고 있다는 점을 감안하면 이러한 통합은 매우 납득할 만하다.

EPUB 만드는 방법

EPUB 파일을 만드는 방법은 여러 가지가 있는데, 가장 일반적인 방법은 다음과 같다.

  1. 원본 콘텐츠 준비: 먼저 EPUB 파일로 변환할 콘텐츠를 준비한다. 보통 워드 프로세서나 출판 소프트웨어를 사용하여 책이나 문서를 작성한다. 원본 파일은 주로 Microsoft Word나 Adobe InDesign과 같은 프로그램에서 작성된다.
  2. EPUB 변환 도구 사용: 준비된 원본 파일을 EPUB 파일로 변환하는 도구를 사용한다. 여러 가지 도구가 있지만, 가장 일반적으로 사용되는 몇 가지를 예로 들면 다음과 같다.
    • Calibre: Calibre는 무료로 사용할 수 있는 오픈 소스 전자책 관리 소프트웨어이다. 이 소프트웨어를 사용하여 다양한 형식의 문서를 EPUB로 변환할 수 있다.
    • Sigil: Sigil은 또 다른 무료 오픈 소스 EPUB 편집기이다. Sigil을 사용하면 EPUB 파일을 직접 생성하고 편집할 수 있다.
  3. EPUB 파일 생성 및 편집: 선택한 도구를 사용하여 원본 파일을 EPUB 파일로 변환한다. 대부분의 도구는 변환 후에도 콘텐츠를 편집할 수 있는 기능을 제공한다. 이를 통해 목차를 생성하거나 이미지를 삽입하는 등의 작업을 수행할 수 있다.
  4. 검수 및 테스트: EPUB 파일이 완성되면 검수하고 테스트해야 한다. 다양한 디바이스나 EPUB 뷰어를 사용하여 파일이 제대로 표시되는지 확인한다. 레이아웃, 이미지, 텍스트 흐름 등이 올바르게 표시되는지 확인해야 한다.
  5. 배포: EPUB 파일이 완성되고 테스트되면, 이를 원하는 플랫폼에 업로드하거나 배포할 수 있다. 이는 Google Play Books, Amazon Kindle Direct Publishing, Apple Books 등을 통해 가능하다.

위의 단계를 따라 EPUB 파일을 만들고 배포하면 된다. 원하는 경우 추가적인 편집이나 커스터마이징을 위해 EPUB 파일을 수정할 수 있다.

EPUB 파일 형식 이해

EPUB는 일정한 규칙을 따르는 구조를 가진 Zip 아카이브 파일로, EPUB 파일 구조를 쉽게 그림으로 표현하면 다음과 같다. 이번에는 EPUB 버전 3.0을 기준으로 한다.

EPUB 파일

파일의 위치, 이름까지 사양으로 고정된 것과 임의로 파일 이름, 위치를 변경할 수 있는 두 가지로 나뉜다. 하나씩 그 역할에 대해 알아보겠다.

mimetype

파일의 미디어 타입을 지정하기 위한 파일이다. 전자책 폴더 바로 아래에 위치한다. 파일 이름은 고정이다. 파일 내용은 다음과 같다.

application/epub+zip

container.xml

container.xml은 이름 고정 파일로, META-INF 폴더 아래에 위치하도록 규칙화되어 있다.

META-INF/container.xml

<?xml version="1.0" ?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
  <rootfiles>
    <rootfile full-path="OEBPS/package.opf" media-type="application/oebps-package+xml" />
  </rootfiles>
</container>

<rootfile> 태그에서 패키지 문서의 파일 경로를 지정한다. 여기서는 OEBPS 폴더 아래에 있는 package.opf 파일을 패키지 문서로 지정한다.

OEBPS

사용할 콘텐츠 자체(HTML, 이미지 등)를 배치하는 폴더이다. 이 폴더의 생성은 임의적이며, 이름도 자유롭게 정할 수 있다. 일반적으로 ‘OEBPS2‘라고 표현하는 경우가 많다. EPUB3에서는 이 폴더의 생성을 권장하고 있다. 또한, 이 폴더에는 콘텐츠의 구조를 정의하는 파일도 배치한다.

예를 들어, toc.ncx에는 목차가 설정되어 있고, package.opf에는 출판물의 제목, 저자 등의 메타데이터와 문서 파일의 읽기 순서 등이 기술되어 있다.

패키지 문서

전자책 자체의 정보를 관리하기 위한 파일이다. 파일 위치, 이름은 임의적이지만, 위에 container.xml 파일에서 해당 경로를 지정해야 한다.

OEBPS/package.opf

<?xml version="1.0" encoding="utf-8"?>
<package unique-identifier="idName" version="3.0" xmlns="http://www.idpf.org/2007/opf" xml:lang="ko">
  <!-- 책 정보 -->
  <metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
    <dc:identifier id="idName">urn:uuid:9f3b7eb2-8724-4f8a-a80c-f667f4668378</dc:identifier>
    <dc:publisher>저자명</dc:publisher><!-- 저자명 -->
    <dc:title>첫 전자책</dc:title><!-- 전자책 제목 -->
    <dc:language>ko-KR</dc:language>
    <meta property="dcterms:modified">2024-04-14T09:46:40Z</meta><!-- 수정일 -->
  </metadata>
  <manifest>
    <item id="nav" href="toc.xhtml" media-type="application/xhtml+xml" properties="nav" />
    <item id="main_xhtml" href="main.xhtml" media-type="application/xhtml+xml" />
  </manifest>
  <spine page-progression-direction="default">
    <itemref idref="nav" />
    <itemref idref="main_xhtml" />
  </spine>
 </package>

네이게이션 문서(목차)

파일 이름은 임의로 정할 수 있다. 어떤 파일이 내비게이션 파일인지는 위의 패키지 문서에서 지정한다.

OEBPS/toc.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops">
<head>
  <title>목차</title>
</head>
<body>
  <nav epub:type="toc">
    <h1>목차</h1>
    <ol>
      <li><a href="main.xhtml">첫 페이지</a></li>
    </ol>
  </nav>
</body>
</html>

도서 내용

도서 내용 자체를 보관하는 파일이다. 파일 이름은 임의이다. 또한 여러 개의 파일로 분할하는 것도 가능하다. 크기가 커지는 경우에는 여러 개의 파일로 분할하는 것을 권장한다. 파일의 표시 순서는 패키지 문서 내에서 정의할 수 있다.

OEBPS/main.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops">
<head>
  <title>본문</title>
</head>
<body>
첫 전자 내용이다.
</body>
</html>

EPUB을 직접 만들어 보기

EPUB 파일의 구조를 이해했다면, 위의 구조에 맞춰 각각의 파일을 생성한다.

% tree
.
├── META-INF
│   └── container.xml
├── OEBPS
│   ├── main.xhtml
│   ├── package.opf
│   └── toc.xhtml
└── mimetype

이제 이 파일들을 Zip으로 압축하여 보관하기만 하면 된다.

다만, 그 전에 한 가지 더 알아두어야 할 EPUB 포맷의 사양으로 ‘Zip 파일의 첫 번째 파일은 비압축 상태의 mimetype 파일을 포함해야 한다’는 것이 있다.

따라서 Zip 압축을 할 때는 다음과 같은 절차가 필요하다.

  1. mimetype을 압축률 0(비압축)으로 Zip 파일에 입력.
    zip -0 sample.epub mimetype
    
  2. 기타 파일을 압축률 최고(9)로 압축하여 Zip 파일에 입력.
    zip -9r sample.epub META-INF OEBPS
    

실제 명령을 차례 실행하면 아래와 같이 실행된다.

% zip -0 sample.epub mimetype
  adding: mimetype (stored 0%)
% zip -9r sample.epub META-INF OEBPS
  adding: META-INF/ (stored 0%)
  adding: META-INF/container.xml (deflated 33%)
  adding: OEBPS/ (stored 0%)
  adding: OEBPS/main.xhtml (deflated 17%)
  adding: OEBPS/toc.xhtml (deflated 27%)
  adding: OEBPS/package.opf (deflated 45%)

실제로 완성된 EPUB 파일을 EPUB 뷰어로 열 수 있는지 확인해 보자. 다음과 같이 파일이 열리면, 성공적으로 EPUB 파일 생성 완료이다.

EPUB 쌤픔

마무리

이번 시간에는 EPUB 파일 생성 방법을 통해 간단한 EPUB 포맷에 대한 설명하였다. 조금이나마 EPUB 포맷 이해에 도움이 되었으면 좋겠다.


  1. https://www.w3.org/press-releases/2017/idpf-w3c-combination/ ↩︎

  2. 이후에 소개할 장(EPUB의 역사)에 나오는 ‘Open eBook PublicationStructure’에서 유래한 것 같다. ↩︎




최종 수정 : 2024-04-17