EPUB FACTORY
ทำความรู้จัก EPUB / พื้นฐาน
พื้นฐาน

ข้างในไฟล์ EPUB มีอะไรอยู่?
แตกไฟล์ออกมาแล้วดูกลไกของมัน

ไฟล์ EPUB จริง ๆ แล้วคือไฟล์ ZIP เปลี่ยนนามสกุลแล้วใครก็เปิดดูได้ บทความนี้ไล่ดูว่าข้างในนั้นมีอะไรอยู่จริง ๆ เมื่อแตกไฟล์ออกมา และแต่ละไฟล์ทำอะไร พอรู้กลไกแล้ว คุณก็เดาได้ว่าต้องดูตรงไหนเวลามีอะไรไม่แสดงผล
ในบทความนี้
  1. แตกไฟล์ EPUB
  2. รูปร่างโดยรวม
  3. mimetype ── ไฟล์ที่แปลกที่สุด
  4. container.xml ── ป้ายบอกทาง
  5. content.opf ── หัวใจของหนังสือ
  6. nav.xhtml ── สารบัญ
  7. ตัวอักษร CSS และรูปภาพ
  8. ทำไมการสร้างด้วยมือถึงยาก

แตกไฟล์ EPUB

เริ่มจากลงมือทำเลย ถ้ามีไฟล์ EPUB อยู่ในมือ ก็ทำแค่นี้พอ

1คัดลอกไฟล์ EPUB (เพื่อไม่ให้ต้นฉบับเสียหาย)
2เปลี่ยนนามสกุลจาก .epub เป็น .zip
3แตกไฟล์ตามปกติ

เท่านั้นเอง ไม่ต้องใช้ซอฟต์แวร์พิเศษอะไร EPUB คือไฟล์ ZIP มันจึงคลี่ออกมาโดยไม่มีแม้แต่คำเตือน

ทางกลับกันไม่ได้ผล

คุณอาจคิดว่า "ถ้าแตกไฟล์ได้ งั้นบีบอัดโฟลเดอร์แล้วเปลี่ยนชื่อเป็น .epub ก็น่าจะได้ EPUB สิ" มันไม่ง่ายขนาดนั้น เพราะมี กฎเรื่องวิธีที่มันต้องถูกบีบอัด ซึ่งอธิบายไว้ในหัวข้อถัดไป

รูปร่างโดยรวม

พอแตกออกมาแล้ว โดยทั่วไปมันจะหน้าตาแบบนี้

โฟลเดอร์ที่แตกออกมา
├── mimetype       บอกว่ากล่องนี้คือ EPUB
├── META-INF/
│  └── container.xml  ชี้ว่าตัวหนังสือจริง ๆ อยู่ตรงไหน
└── OEBPS/       โฟลเดอร์ที่บรรจุตัวหนังสือ
  ├── content.opf   ข้อมูลหนังสือ รายการเนื้อหา ลำดับการอ่าน
  ├── nav.xhtml    สารบัญ
  ├── text/
  │  ├── p001.xhtml  ตัวอักษร (หน้าละหนึ่งไฟล์)
  │  └── p002.xhtml
  ├── image/
  │  └── cover.jpg   ปกและรูปภาพอื่น ๆ
  └── style/
    └── book.css   หน้าตา

OEBPS — ชื่อโฟลเดอร์นั้น และวิธีที่ของข้างในถูกแบ่ง ต่างกันไปตามเครื่องมือที่สร้างมันขึ้นมา มันอาจเป็น item หรือ xhtml แทนก็ได้ และแบบนั้นก็ไม่มีปัญหาอะไร

สิ่งที่คุณเปลี่ยนไม่ได้ ทั้งชื่อและตำแหน่ง คือ mimetype ที่อยู่ลำดับแรกสุด และ META-INF/container.xml สองอย่างนั้นตายตัว ส่วนที่เหลือเป็นอิสระ — นั่นคือขั้นที่หนึ่งของการเข้าใจโครงสร้าง

mimetype ── ไฟล์ที่แปลกที่สุด

เนื้อหาของมันมีแค่บรรทัดเดียว

application/epub+zip

หน้าที่ของมันคือประกาศว่า "ไฟล์ ZIP นี้คือ EPUB" แต่มันมาพร้อม กฎเข้มงวดที่ไฟล์อื่นไม่มี

แอปอ่านสามารถตัดสินได้ว่า "นี่คือ EPUB" โดยอ่านแค่ไม่กี่ไบต์แรกของไฟล์ ตำแหน่งและรูปแบบของมันจึงถูกตอกตรึงไว้

ตรงนี้แหละที่ EPUB ที่ทำด้วยมือล้มก่อนเพื่อน

บีบอัดโฟลเดอร์ด้วยเครื่องมือทั่วไปแล้วคุณเลือกลำดับไฟล์ไม่ได้ และ mimetype ก็ถูกบีบอัดไปพร้อมกับทุกอย่างที่เหลือ ผลก็คือ คุณเปลี่ยนชื่อเป็น .epub แล้ว แอปอ่านก็เปิดมันไม่ได้

การจะผ่านเงื่อนไข "ลำดับแรก ไม่บีบอัด" นั้นหมายถึงต้องรันการบีบอัดเป็นสองขั้นแยกกัน นั่นคือสิ่งแรกที่สุดที่เครื่องมือสร้าง EPUB ทำ

container.xml ── ป้ายบอกทาง

META-INF/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>

มันทำอยู่อย่างเดียวเป๊ะ ๆ คือ มันบอกว่า "ข้อมูลหนังสืออยู่ใน OEBPS/content.opf "

เพราะป้ายบอกทางนั้นเอง ชื่อโฟลเดอร์จึงเป็นอิสระได้ แอปอ่านจะดู META-INF/container.xml ก่อนแล้วไปยังที่ที่มันชี้

content.opf ── หัวใจของหนังสือ

นี่คือไฟล์ที่สำคัญที่สุดใน EPUB มันแบ่งออกเป็นสามส่วน

ส่วนทำอะไร
metadataชื่อหนังสือ ผู้แต่ง ภาษา — ข้อมูลของตัวหนังสือเอง
manifestรายการของไฟล์ทุกไฟล์ที่บรรจุอยู่
spineลำดับการพลิกหน้า

metadata ── ข้อมูลของหนังสือ

<metadata>
  <dc:title>อลิซในแดนมหัศจรรย์</dc:title>
  <dc:creator>Lewis Carroll</dc:creator>
  <dc:language>th</dc:language>
  <dc:identifier id="uid">urn:uuid:xxxxxxxx</dc:identifier>
  <meta property="dcterms:modified">2026-08-04T00:00:00Z</meta>
</metadata>

ตัวที่ต้องคอยดูคือ dc:title สิ่งที่ปรากฏบนชั้นหนังสือของแอปอ่านคือค่านี้ ไม่ใช่ชื่อไฟล์ คุณจะตั้งชื่อไฟล์อย่างพิถีพิถันแค่ไหน ถ้าตรงนี้ว่างเปล่า ชั้นหนังสือก็จะแสดงว่า "Untitled"

dc:language ก็สำคัญเหมือนกัน ให้ใส่ th สำหรับภาษาไทย และ ja สำหรับภาษาญี่ปุ่น ถ้าไม่มีมัน แอปอ่านอาจไม่ใช้กฎการจัดตัวอักษรของภาษานั้น — ซึ่งกระทบหนักที่สุดกับภาษาญี่ปุ่น

manifest ── รายการไฟล์ที่บรรจุอยู่

<manifest>
  <item id="nav" href="nav.xhtml" media-type="application/xhtml+xml" properties="nav"/>
  <item id="p001" href="text/p001.xhtml" media-type="application/xhtml+xml"/>
  <item id="css" href="style/book.css" media-type="text/css"/>
  <item id="cover" href="image/cover.jpg" media-type="image/jpeg"/>
</manifest>

ทุกไฟล์ใน EPUB ต้องถูกลงทะเบียนไว้ตรงนี้ เพิ่มรูปเข้าไปหนึ่งรูปแล้วลืมลงทะเบียน แค่นั้นก็เป็นข้อผิดพลาดแล้ว ทางกลับกัน — ลงทะเบียนไว้แต่ไม่มีอยู่จริง — ก็เป็นข้อผิดพลาดเช่นกัน

ไฟล์สารบัญถูกกำกับด้วย properties="nav" ซึ่งเป็นวิธีที่มันบอกว่า "ไฟล์นี้คือสารบัญ"

spine ── ลำดับการอ่าน

<spine page-progression-direction="rtl">
  <itemref idref="p001"/>
  <itemref idref="p002"/>
</spine>

manifest คือรายการว่ามีอะไรอยู่ข้างใน ส่วน spine คือ ลำดับที่มันถูกอ่าน ลำดับตรงนี้จะกลายเป็นลำดับหน้า

และส่วนที่สำคัญที่สุดสำหรับหนังสือภาษาญี่ปุ่นคือ page-progression-direction

ค่าความหมายหนังสือที่ใช้
rtlเดินจากขวาไปซ้ายตัวอักษรแนวตั้ง มังงะ
ltrเดินจากซ้ายไปขวาตัวอักษรแนวนอน

ถ้าละเว้นมันไปในหนังสือที่เรียงตัวอักษรแนวตั้ง หน้าก็จะพลิกกลับทาง มันเป็นหนึ่งในสิ่งแรก ๆ ที่ต้องตรวจเวลาตัวอักษรแนวตั้งทำงานไม่ถูก

nav.xhtml ── สารบัญ

EPUB 3 กำหนดให้สารบัญต้องเป็นไฟล์แยกของตัวเองเสมอ หน้าตาก็เหมือนรายการลิงก์ HTML ธรรมดา แยกแยะได้ด้วยเครื่องหมาย epub:type="toc"

<nav epub:type="toc">
  <ol>
    <li><a href="text/p001.xhtml">บทที่ 1</a></li>
    <li><a href="text/p002.xhtml">บทที่ 2</a></li>
  </ol>
</nav>

นี่คือสิ่งที่ขึ้นมาเวลาผู้อ่านกดปุ่มสารบัญ ถ้าไฟล์ที่ถูกลิงก์ไปหายไป คุณก็จะได้หนังสือที่เดินทางข้างในไม่ได้

คุณอาจเจอ toc.ncx อยู่ในนั้นด้วย

ใน EPUB 2 รุ่นเก่า มีไฟล์ชื่อ toc.ncx ทำหน้าที่สารบัญ EPUB 3 เปลี่ยนมาใช้ nav.xhtml แทน แต่ EPUB บางไฟล์ก็ใส่ทั้งสองอย่างไว้เพื่อให้แอปอ่านรุ่นเก่ายังทำงานได้

ตัวอักษร CSS และรูปภาพ

จากตรงนี้ไปก็แทบจะเหมือนหน้าเว็บทุกประการ

จะแบ่งตัวอักษรอย่างไรก็แล้วแต่คุณ แต่ ไฟล์เดียวที่ใหญ่เกินไปทำให้แอปอ่านอืดลง การแบ่งตามบทจึงเป็นเรื่องปกติ

ทำไมการสร้างด้วยมือถึงยาก

อย่างที่คุณเห็น โครงสร้างของ EPUB ไม่ได้ซับซ้อนเลย ตัวอักษร รูปภาพ และคำสั่งการออกแบบ ถูกห่อไว้ในกล่องพร้อมป้ายบอกทางและรายการหนึ่งชุด — มีแค่นั้น

แต่กฎที่ต้องทำตามนั้นจุกจิกมาก

ขาดไปข้อเดียวหนังสือก็เปิดไม่ได้ หรือถูกตีกลับตอนส่งขึ้นร้าน และ สาเหตุของข้อผิดพลาดนั้นโดยทั่วไปมองไม่เห็นจากสิ่งที่ปรากฏบนหน้าจอ

ในการผลิตจริงจึงใช้เครื่องมือที่ประกอบโครงสร้างขึ้นมาจากต้นฉบับหรือจากรูปภาพ ถึงอย่างนั้น การเคยดูข้างในสักครั้งก็หมายความว่า คุณเดาได้ว่าต้องดูตรงไหนเวลามีอะไรผิดพลาด — และนั่นแหละคือจุดประสงค์ของบทความนี้

โครงสร้างถูกประกอบให้คุณ

EPUB FACTORY สร้างทุกส่วนของโครงสร้างที่อธิบายไว้ตรงนี้ให้อัตโนมัติ แค่เลือกโฟลเดอร์รูปภาพหรือต้นฉบับข้อความ ไม่ต้องสมัครสมาชิก ไม่ต้องติดตั้งอะไร

ลองใช้ EPUB FACTORY