Bagaimana Membina EPUB Anda Sendiri

Pengenalan kepada EPUB

Sekiranya anda mengenali E-Sentral.com atau pernah membaca blog ini sebelum ini, mungkin anda tahu apa itu EPUB. Tetapi mungkin juga tidak. Mungkin anda terjumpa blog ini hasil daripada carian di Google, Yahoo atau Bing. Tidak mengapa. Untuk pembaca ini, saya perjelaskan serba sedikit apa itu EPUB.

EPUB adalah satu format untuk ebook yang dibangunkan dan diselia oleh International Digital Publishing Forum (IDPF). Antara ahli-ahlinya termasuklah syarikat gergasi dan ternama seperti Apple, Adobe, Cambridge University Press, FujiFilm, HP, Kobo, Lulu, Oreilly, Samsung, kerajaan US sendiri, dan juga kami, Xentral Methods Sdn. Bhd.

EPUB adalah format yang digunakan pakai dalam penerbitan ebook oleh kebanyakan syarikat seperti Apple iBooks, Amazon Kindle, Kobo, dan kini semakin menjadi format yang penting dalam dunia penerbitan.

Pada saya, dunia penerbitan di Malaysia perlu mengorak langkah dan mula menerapkan pembinaan EPUB dalam terbitan mereka untuk bersaing maju.

Kami sebagai yang mula menekankan penggunaan EPUB di Malaysia agak berbangga melihat semakin banyak penerbit di sini mula membina EPUB mereka sendiri. Kebanyakan mereka ini menyenaraikan buku mereka di kedai buku online kami, di E-Sentral.com. Antara mereka termasuklah PTS Media, Buku Fixi, Roket Kertas (Ahadiat Akashah), Hijjaz, Mustread dan banyak lagi.

Bagaimana Membaca EPUB

Secara amnya, kita perlu tahu bahawa terdapat EPUB yang dikawal hakciptanya melalui DRM (digital rights management) dan juga EPUB terbuka. EPUB dengan DRM telah dienkrip dengan algoritma tertentu dan ianya hanya boleh dibaca menggunakan aplikasi pembaca khas. Ini bagi mengekang EPUB daripada aktiviti “piracy” atau cetak rompak. Bagi membina kepercayaan daripada penerbit, E-Sentral mengedarkan ebook-ebook penerbit dengan DRM dan boleh dibaca dengan aplikasi pembaca. Kami mempunyai aplikasi untuk platform Android, iOS (untuk iPhone dan iPad) dan juga pelayar Firefox.

Tak banyak syarikat yang menawarkan DRM untuk EPUB. Selain daripada E-Sentral.com, yang saya tahu adalah Adobe. Bagi membaca EPUB dengan Adobe DRM, anda boleh menggunakan aplikasi pembaca seperti Adobe Digital Edition, Aldiko dan Bluefire. Namun untuk membaca EPUB dengan Adobe DRM, anda terlebih dahulu perlu membuka satu akaun di Adobe.

Bagi EPUB terbuka, ianya boleh dibaca juga dengan aplikasi pembaca seperti Aldiko dan Bluefire. Kedua-duanya adalah aplikasi percuma yang boleh dimuatturun ke telefon dan tablet Android, iPad dan iPhone.

Jenis-jenis EPUB

Secara amnya terdapat dua jenis EPUB iaitu — “reflowable text” dan “fixed layout”.

Reflowable text bermaksud EPUB tersebut mempunyai kandungan berbentuk teks dan jumlah halaman boleh berbeza mengikut saiz skrin di mana EPUB dibaca, saiz font, pilihan font dan sebagainya. Sebagai contoh ringkas, sekiranya sebuah bab mempunyai 1000 patah perkataan, ianya mungkin dipisahkan kepada 10 halaman pada peranti dengan skrin yang besar. Tetapi bab yang sama mungkin menjadi 20 halaman sekiranya dibaca menggunakan peranti dengan skrin yang kecil. Namun kandungan teks dan gambar akan tetap sama.

Fixed layout pula adalah sejenis EPUB yang mempunyai saiz panjang dan lebar yang tetap, dan isi kandungan setiap halaman akan dimuatkan terus kepada saiz skrin. EPUB juga boleh dibezakan mengikut versi. Versi yang banyak digunapakai sekarang ada versi 2.0.

Di IDPF mereka sedang hangat membincangkan pembentukan format 3.0. EPUB 3.0 sepatutnya berupaya untuk mengandungi elemen-elemen interaktif seperti audio, video, interaksi dengan pengguna dan sebagainya. Tetapi itu semua bergantung kepada kesediaan aplikasi pembaca.

Untuk permulaan, mari kita bina EPUB reflowable text, yang sesuai untuk banyak buku-buku bercetak sedia ada sekarang. Ianya juga sesuai untuk novel dan buku-buku yang berasaskan teks.

Bagaimana Membina EPUB

Sebelum kita mula membina, anda perlu faham tentang format ini secara teknikal.

EPUB sebenarnya hanyalah koleksi fail-fail HTML, CSS dan gambar-gambar beserta fail maklumat metadata yang disimpan di dalam fail berjenis ZIP dan namakan semula dengan ekstensyen .EPUB (biasanya berhuruf kecil).

Cuba baca balik definisi EPUB saya di atas. Sekiranya anda boleh:

  • membina laman web
  • membina fail ZIP

… membina EPUB adalah satu tugasan yang sangat mudah bagi anda.

Apabila membina EPUB, biasanya satu fail HTML dijadikan satu bab. Gambar-gambar juga boleh digunakan berselang-selang dengan teks sekiranya perlu.

CSS ringkas juga boleh digunakan. Namun penggunaan CSS untuk font dan saiz teks tidak digalakkan. Ini kerana aplikasi pembaca biasanya mempunyai pilihan kepada pengguna untuk menukarnya bagi memudahkan pembacaan mengikut pilihan masing-masing.

Selain daripada fail-fail HTML, CSS dan gambar, fail-fail lain yang diperlukan adalah.

  • META-INF/container.xml – memberitahu di mana  fail content.opf
  • mimetype – menetapkan format kepada application/epub+zip
  • content.opf – mengandungi maklumat tentang keseluruhan EPUB
  • toc.ncx – mengandungi maklumat tentang susunan isi kandungan EPUB dan fail yang berkaitan

Sekarang anda mengetahui perkara ini, anda boleh muatturun mana-mana EPUB terbuka dan membukanya dengan aplikasi ZIP seperti 7ZIP atau WinZip. Anda boleh mencuba laman web seperti Gutenberg Project dan EPUBBooks.

Fail-fail penting di dalam EPUB

Beberapa bahagian selepas ini mungkin sedikit teknikal — jangan risau sebab kemudian saya akan beritahu aplikasi yang kita boleh gunakan untuk memudahkan proses ini.

Bagi folder AOPS, ianya boleh dinamakan apa-apa sahaja. Tetapi META-INF perlu ada, dan perlu mengandungi container.xml.

Dibawah ini adalah contoh isi kandungan fail container.xml

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

Kalau diperhatikan di situ, apa yang penting adalah lokasi fail content.opf, yang mana ianya di dalam folder AOPS. Maka di sini, saya ulangi lagi, folder untuk kandungan HTML anda dan juga content.opf tidak semestinya dalam folder AOPS. Ia boleh berada dalam apa jua folder, tetapi pastikan anda menamakannya dengan betul di container.xml

Ini pula contoh isi kandungan fail content.opf.

<?xml version="1.0" encoding="UTF-8"?>
<package xmlns="http://www.idpf.org/2007/opf" unique-identifier="EPB-UUID" version="2.0">
<metadata xmlns:opf="http://www.idpf.org/2007/opf"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:title>Alice in Wonderland</dc:title>
<dc:creator opf:role="aut" opf:file-as="Carroll, Lewis">Lewis Carroll</dc:creator>
<dc:creator opf:role="ill" opf:file-as=""/>
<dc:date opf:event="original-publication">1916</dc:date>
<dc:publisher>epubBooks (www.epubbooks.com)</dc:publisher>
<dc:date opf:event="epub-publication">2011-06-15</dc:date>
<dc:subject>Young Readers</dc:subject>
<dc:subject>Fantasy</dc:subject>
<dc:source>Project Gutenberg</dc:source>
<dc:rights>
Provided for free by epubBooks.com. Not for commercial use.
This EPUB eBook is released under a Creative Commons (BY-NC-ND/3.0) Licence.
Source text and images are in the Public Domain.
</dc:rights>
<dc:identifier id="EPB-UUID">urn:uuid:19c2b129-40b2-40f4-88e3-59d12871da25</dc:identifier>
<dc:language>en</dc:language>
</metadata>
<manifest>
<!-- Content Documents -->
<item id="titlepage" href="title.html" media-type="application/xhtml+xml"/>
<item id="epubbooksinfo" href="epubbooksinfo.html" media-type="application/xhtml+xml"/>
<item id="chapter-001" href="chapter-001.html" media-type="application/xhtml+xml"/>
<item id="chapter-002" href="chapter-002.html" media-type="application/xhtml+xml"/>
<item id="chapter-003" href="chapter-003.html" media-type="application/xhtml+xml"/>
<item id="chapter-004" href="chapter-004.html" media-type="application/xhtml+xml"/>
<item id="chapter-005" href="chapter-005.html" media-type="application/xhtml+xml"/>
<item id="chapter-006" href="chapter-006.html" media-type="application/xhtml+xml"/>
<item id="chapter-007" href="chapter-007.html" media-type="application/xhtml+xml"/>
<item id="chapter-008" href="chapter-008.html" media-type="application/xhtml+xml"/>
<item id="chapter-009" href="chapter-009.html" media-type="application/xhtml+xml"/>
<item id="chapter-010" href="chapter-010.html" media-type="application/xhtml+xml"/>

<!-- CSS Style Sheets -->
<item id="title-page-css" href="css/titlepage.css" media-type="text/css"/>
<item id="main-css" href="css/book.css" media-type="text/css"/>

<!-- Images -->
<item id="epubbooks-logo" href="images/epubbooks-logo.png" media-type="image/png"/>
<item id="img-bookcover-jpeg" href="images/bookcover.jpg" media-type="image/jpeg"/>
<item id="img-i001-jpeg" href="images/i001.jpg" media-type="image/jpeg"/>
<item id="img-i002-jpeg" href="images/i002.jpg" media-type="image/jpeg"/>
<item id="img-i003-jpeg" href="images/i003.jpg" media-type="image/jpeg"/>
<item id="img-i004-jpeg" href="images/i004.jpg" media-type="image/jpeg"/>
<item id="img-i005-jpeg" href="images/i005.jpg" media-type="image/jpeg"/>
<item id="img-i006-jpeg" href="images/i006.jpg" media-type="image/jpeg"/>
<item id="img-i007-jpeg" href="images/i007.jpg" media-type="image/jpeg"/>
<item id="img-i008-jpeg" href="images/i008.jpg" media-type="image/jpeg"/>
<item id="img-i009-jpeg" href="images/i009.jpg" media-type="image/jpeg"/>
<item id="img-i010-jpeg" href="images/i010.jpg" media-type="image/jpeg"/>
<item id="img-i011-jpeg" href="images/i011.jpg" media-type="image/jpeg"/>
<item id="img-i012-jpeg" href="images/i012.jpg" media-type="image/jpeg"/>
<item id="img-i013-jpeg" href="images/i013.jpg" media-type="image/jpeg"/>
<item id="img-i014-jpeg" href="images/i014.jpg" media-type="image/jpeg"/>
<item id="img-i015-jpeg" href="images/i015.jpg" media-type="image/jpeg"/>
<item id="img-i016-jpeg" href="images/i016.jpg" media-type="image/jpeg"/>
<item id="img-i017-jpeg" href="images/i017.jpg" media-type="image/jpeg"/>
<item id="img-i018-jpeg" href="images/i018.jpg" media-type="image/jpeg"/>
<item id="img-i019-jpeg" href="images/i019.jpg" media-type="image/jpeg"/>
<item id="img-i020-jpeg" href="images/i020.jpg" media-type="image/jpeg"/>
<item id="img-i021-jpeg" href="images/i021.jpg" media-type="image/jpeg"/>
<item id="img-i022-jpeg" href="images/i022.jpg" media-type="image/jpeg"/>
<item id="img-plate01-jpeg" href="images/plate01.jpg" media-type="image/jpeg"/>
<item id="img-plate02-jpeg" href="images/plate02.jpg" media-type="image/jpeg"/>
<item id="img-plate03-jpeg" href="images/plate03.jpg" media-type="image/jpeg"/>
<item id="img-plate04-jpeg" href="images/plate04.jpg" media-type="image/jpeg"/>
<item id="img-title-jpeg" href="images/title.jpg" media-type="image/jpeg"/>

<!-- NCX -->
<item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/>
</manifest>
<spine toc="ncx">
<itemref idref="titlepage" linear="yes"/>
<itemref idref="epubbooksinfo" linear="yes"/>
<itemref idref="chapter-001" linear="yes"/>
<itemref idref="chapter-002" linear="yes"/>
<itemref idref="chapter-003" linear="yes"/>
<itemref idref="chapter-004" linear="yes"/>
<itemref idref="chapter-005" linear="yes"/>
<itemref idref="chapter-006" linear="yes"/>
<itemref idref="chapter-007" linear="yes"/>
<itemref idref="chapter-008" linear="yes"/>
<itemref idref="chapter-009" linear="yes"/>
<itemref idref="chapter-010" linear="yes"/>
</spine>
</package>

Contoh ini diambil daripada EPUB untuk Alice in Wonderland. Sekiranya kita lihat dengan teliti, di dalam content.opf, ianya menyenaraikan semua fail dalam EPUB di dalam <manifest>. Kemudian kita ada <spine> yang memberitahu aplikasi pembaca susun atur bacaan EPUB ini. Ini berbeza dengan Table of Content atau Kandungan. Kita juga boleh memaklumkan kepada aplikasi pembaca tentang Kandungan buku melalui toc.ncx. toc.ncx adalah seperti senarai penanda-penanda penting dalam EPUB.

<?xml version="1.0" encoding="UTF-8"?>
<!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>
<!--The following four metadata items are required for all
NCX documents, including those conforming to the relaxed
constraints of OPS 2.0-->
<meta name="dtb:uid" content="19c2b129-40b2-40f4-88e3-59d12871da25"/>
<meta name="epub-creator" content="epubBooks (www.epubbooks.com)"/>
<meta name="dtb:depth" content="1"/>
<meta name="dtb:totalPageCount" content="0"/>
<meta name="dtb:maxPageNumber" content="0"/>
</head>
<docTitle>
<text>Alice in Wonderland</text>
</docTitle>
<docAuthor>
<text>Lewis Carroll</text>
</docAuthor>
<navMap>
<navPoint id="navpoint-1" playOrder="1">
<navLabel>
<text>Title Page</text>
</navLabel>
<content src="title.html"/>
</navPoint>
<navPoint id="navpoint-2" playOrder="2">
<navLabel>
<text>epubBooks Information</text>
</navLabel>
<content src="epubbooksinfo.html"/>
</navPoint>
<navPoint id="navpoint-3" playOrder="3">
<navLabel>
<text>I—DOWN THE RABBIT–HOLE</text>
</navLabel>
<content src="chapter-001.html"/>
</navPoint>
<navPoint id="navpoint-4" playOrder="4">
<navLabel>
<text>II—THE POOL OF TEARS</text>
</navLabel>
<content src="chapter-002.html"/>
</navPoint>
<navPoint id="navpoint-5" playOrder="5">
<navLabel>
<text>III—A CAUCUS–RACE AND A LONG TALE</text>
</navLabel>
<content src="chapter-003.html"/>
</navPoint>
<navPoint id="navpoint-6" playOrder="6">
<navLabel>
<text>IV—THE RABBIT SENDS IN A LITTLE BILL</text>
</navLabel>
<content src="chapter-004.html"/>
</navPoint>
<navPoint id="navpoint-7" playOrder="7">
<navLabel>
<text>V—ADVICE FROM A CATERPILLAR</text>
</navLabel>
<content src="chapter-005.html"/>
</navPoint>
<navPoint id="navpoint-8" playOrder="8">
<navLabel>
<text>VI—PIG AND PEPPER</text>
</navLabel>
<content src="chapter-006.html"/>
</navPoint>
<navPoint id="navpoint-9" playOrder="9">
<navLabel>
<text>VII—A MAD TEA–PARTY</text>
</navLabel>
<content src="chapter-007.html"/>
</navPoint>
<navPoint id="navpoint-10" playOrder="10">
<navLabel>
<text>VIII—THE QUEEN'S CROQUET GROUND</text>
</navLabel>
<content src="chapter-008.html"/>
</navPoint>
<navPoint id="navpoint-11" playOrder="11">
<navLabel>
<text>IX—WHO STOLE THE TARTS?</text>
</navLabel>
<content src="chapter-009.html"/>
</navPoint>
<navPoint id="navpoint-12" playOrder="12">
<navLabel>
<text>X—ALICE'S EVIDENCE</text>
</navLabel>
<content src="chapter-010.html"/>
</navPoint>
</navMap>
</ncx>

Kita lihat di atas, kita boleh menetapkan label yang bersesuaian untuk dipaparkan oleh aplikasi pembaca. Ini adalah contoh bagaimana Kandungan dipaparkan. Tetapi perlu ingat, EPUB ini masih dipaparkan kepada pengguna dengan data dari dalam content.opf.

Kandungan dipaparkan dalam aplikasi pembaca

Baiklah, saya akui. Ini semua mungkin terlalu teknikal. Tetapi memahami yang diperlukan dalam membina sebuah EPUB akan membantu dalam pembinaan EPUB dengan aplikasi lain.

Terdapat beberapa aplikasi yang boleh digunakan untuk membina EPUB. Kita mulakan dengan cadangan yang paling digemari.

Sigil – EPUB Editor

Sigil – Aplikasi Editor EPUB

EPUB memang popular di kalangan mereka yang membina EPUB. Ianya percuma dan juga sebuah projek “open source”. Dengan menggunakan Sigil, ianya membantu pembinaan Kandungan dan juga fail-fail lain yang saya maklumkan tadi. Juga terbina bersama adalah satu enjin yang mengesahkan EPUB yang anda bina.

Membina EPUB dengan Sigil memang tidak jauh rasanya seperti membina laman web. Di sebelah kiri adalah senarai fail-fail yang kita bina. Dan di sebelah kanan adalah Kandungan yang terbina sendiri. Sigil membina senarai kandungan dengan mengenalpasti teks yang menggunakan header tertentu. Ianya tidak jauh dengan membina senarai kandungan dalam Word.

Sigil dibangunkan dengan Qt dan boleh digunakan pada platform Windows dan Mac.

Sigil
http://code.google.com/p/sigil/

eCub oleh Julian Smart

eCub – oleh Julian Smart

eCub juga percuma tetapi ianya bukan projek open source. Boleh dikatakan eCub sebagai sebuah freeware sahaja. Namun ia tetap satu pilihan percuma. Secara peribadi, saya belum dapat meluangkan masa untuk mencuba eCub. Tetapi saya kira ini sesuatu yang perlu diketengahkan.

Tetapi perlu yang maklumkan (hasil daripada bacaan), eCub lebih sesuai digunakan sekiranya anda telah membina fail-fail HTML anda di luar dan hanya perlu dipakejkan kepada EPUB. Sekiranya anda tidak selesa dengan antaramuka WYSIWYG (what-you-see-is-what-you-get) di Sigil, anda boleh menggunakan aplikasi lain untuk membina fail-fail HTML anda. Dan kemudiannya anda boleh menggunakan eCub supaya fail-fail itu dipakej kepada EPUB.

Namun antara kelebihan eCub ini, ianya boleh digunakan di Windows, Mac dan juga Linux. Malah, ia mempunyai utiliti command line dan boleh digunakan bersama sistem lain. Bagi mereka yang membina aplikasi berasaskan EPUB, tidak kisahlah untuk web ataupun komputer, mungkin utiliti berguna.

eCub
http://juliansmart.com/ecub

Sekarang Saya Dah Ada EPUB… Nak Buat Apa?

Sekiranya anda sememangnya bekerja atau memiliki syarikat penerbitan, saya cadangkan anda serahkan EPUB itu kepada kami untuk kami jualkan di E-Sentral.com bersama penerbit lain seperti PTS, Hijjaz, Mustread, Buku Fixi, Roket Kertas, UM Press dan lain-lain.

Seperti yang kami maklumkan awal tadi, EPUB anda akan kami “balut” dengan DRM sebagai satu langkah pertahanan daripada cetak rompak. Maklumat lanjut terdapat di laman Penerbit kami.

Sekiranya anda seorang penulis, penerbit-penerbit di Malaysia sudah mula menerima EPUB. Anda boleh cuba menerbitkan buku anda bersama mereka, seperti penerbit-penerbit yang tersenarai di E-Sentral.com. Yang bagusnya, ianya juga akan dijual dalam bentuk fizikal di kedai-kedai.

Pilihan lain, anda juga boleh mendaftar sebagai penerbit di E-Sentral.com dan menjadi penerbit bebas atau independent publisher. Tapi memang kami tidak jual buku secara fizikal, namun ianya akan tersenarai di E-Sentral.com setanding penerbit-penerbit lain. Kalau berminat untuk meneruskan dengan pilihan ini, cubalah hubungi kami, dan kami akan maklumkan dengan lebih lanjut.