วันจันทร์ที่ 4 มีนาคม พ.ศ. 2556

สร้างเอกสาร EPUB แบบถึกๆ

เรื่องก่อนหน้า พูดถึงโปรแกรมสำหรับเปิดอ่านไฟล์ EPUB บนคอมฯ ไปแล้ว และแนะนำคร่าวๆ ว่า EPUB คืออะไร

ตอนนี้จะมาดูโครงสร้างของไฟล์ EPUB เพื่อจะได้เข้าใจภาพหลักๆ



ไฟล์ EPUB ที่เราเห็นๆ กันอยู่ มันเป็น container ประเภทหนึ่ง พูดง่ายๆ ว่าที่จริงมันก็คือไฟล์ที่ถูกบีบขนาด (zip) เอาไว้นั่นแหละ

ถ้าอยากดูว่าข้างในมันประกอบด้วยไฟล์อะไรบ้าง ก็เปลี่ยนนามสกุลของไฟล์ จาก .epub เป็น .zip แล้วก็แตกไฟล์เท่านั้นเอง

พอเปิดมาดู จะเห็นว่าเนื้อหาในไฟล์มันเป็นไฟล์ xml หรืออธิบายแบบรวบรัด มันก็คือหน้าเว็บที่มีการจัดรูปแบบ แล้วจับ zip เข้าไปเป็นก้อนเดียวกัน

ดังนั้นเราจึงสามารถใช้ text editor พวก notepad เขียนไฟล์ EPUB ได้เหมือนกัน แต่คงไม่มีใครทำกัน เพราะว่าเสียเวลามาก ^^'a

.

ส่วนประกอบของไฟล์ EPUB

เมื่อเราลองแตก zip ไฟล์ .epub ออกมา จะเห็นข้อมูลข้างในดังนี้ (ลองโหลดไฟล์ sample.epub มาดู)

  • ไฟล์ mimetype เป็นการระบุให้รู้ว่าไฟล์ก้อนนี้เป็นไฟล์ประเภท EPUB
  • โฟลเดอร์ META-INF มีไฟล์ container.xml เพื่อเอาไว้ระบุรายละเอียดว่า เนื้อหาของเอกสารนี้ไปเก็บอยู่ในไฟล์ชื่ออะไร
  • โฟลเดอร์ OEBPS ข้างในนี้จะเป็นเนื้อหาทั้งหมดของหนังสือ ซึ่งจะมีไฟล์และโฟลเดอร์เก็บอยู่หลายไฟล์ เช่น
    • โฟลเดอร์ images เอาไว้เก็บรูปภาพ
    • content.opf รายการของไฟล์ต่างๆ ที่อยู่ในไฟล์หนังสือนี้
    • toc.ncx สารบัญของหนังสือเล่มนี้
    • ไฟล์เนื้อหา เป็นได้ทั้ง htm, html, xhtml
    • style.css ไฟล์จัดรูปแบบหน้าตาของเอกสาร

ลองสร้างไฟล์ EPUB ดู

ไฟล์ทั้งหมดนี้ ถ้าไฟล์ไหนมีเนื้อหาที่ไม่ใช่ภาษาอังกฤษ (ไม่ว่าจะเป็นเป็นภาษาไทย จีน, ญี่ปุ่น, เกาหลี) ต้องบันทึกด้วยรูปแบบ utf-8 ไม่งั้นเวลาแสดงผลจะอ่านไม่รู้เรื่องนะ

กำหนดค่าต่างๆ

  1. ไฟล์ mimetype เก็บข้อความว่า application/epub+zip
  2. ไฟล์ content.opf เอาจากไฟล์ต้นแบบมาเลย เปลี่ยนแค่บางจุด ดูส่วนประกอบแต่ละส่วนก่อน
    • metadata ข้อมูลของหนังสือเล่มนี้
      • ชื่อหนังสือ
      • ผู้เขียน
      • ผู้ร่วมเขียน หรือชื่อคนแปลงเป็น EPUB
      • ภาษาหลักของหนังสือ เช่น ไทย (th-TH), อังกฤษ (en-US) (ดูเพิ่มเติม)
      • ชื่อสำนักพิมพ์
      • ข้อมูลจำเพาะของหนังสือเล่มนี้ ที่ "ห้ามซ้ำ" กับเล่มอื่น
    • manifest รายชื่อของไฟล์ต่างๆ ที่ใช้ในหนังสือเล่มนี้
    • spine ส่วนของการจัดลำดับเนื้อหา ว่าจะแสดงไฟล์ไหนก่อนหลัง โดยใช้ชื่อที่กำหนดจากในส่วน manifest
  3. ไฟล์ toc.ncx เป็นไฟล์สารบัญของหนังสือ ในส่วน meta name="dtb:uid" ต้องกำหนดให้ตรงกับ  และชื่อบทตอนต่างๆ ในหนังสือ ให้สัมพันธ์ตรงกันกับส่วน manifest และ spine

สร้างเนื้อหา


  1. หน้ารองปก มักจะมีชื่อหนังสือ ผู้เขียน และรายละเอียดเล็กน้อย ดูจากไฟล์ title_page.xhtml
  2. หน้าปก เป็นไฟล์รูปภาพ ขนาดที่เหมาะสมคงพูดลำบาก เพราะว่าแต่ละอุปกรณ์นั้นมีสัดส่วนขนาดหน้าจอที่ต่างกัน บางที่ก็แนะนำว่าใช้ภาพขนาด 392 x 600 แล้วตั้งชื่อว่า cover.jpg (หรือชื่ออื่นที่กำหนดในไฟล์ manifest หนังสือบางเล่มก็มีไฟล์ cover.xhtml สำหรับหน้าปกด้วย แล้วก็เอาไฟล์ cover.jpg ใส่ไว้ในโฟลเดอร์ images
  3. ส่วนเนื้อหา ถ้าเราแบ่งเนื้อหาแต่ละบทแยกเป็นไฟล์ จะมีข้อดีคือเปิดอ่านในอุปกรณ์ที่สเปคไม่สูงได้ไม่หน่วงมาก แต่ก็จะมีไฟล์ย่อยหลายไฟล์มากขึ้น
  4. เนื้อหาของหนังสือ เป็นรูปแบบ html หรือ xhtml ธรรมดา สามารถจัดรูปแบบด้วยไฟล์ css ได้ แต่ว่าพวกรูปแบบที่เป็นลูกเล่นที่ซับซ้อน มักจะไม่แสดงผลในโปรแกรมที่ใช้เปิดอ่าน การตั้งชื่อไฟล์เนื้อหา ก็ต้องสัมพันธ์กับที่กำหนดใน manifest และ spine ด้วย
  5. อย่าลืมว่า เนื้อหาที่เป็นภาษาไทย ต้องบันทึกเป็นรูปแบบ utf-8

รวมไฟล์ให้เป็นหนังสือ

จากไฟล์ทั้งหมดที่เรามี ก็จับ zip โดยเลือกไม่ต้องบีบขนาดข้อมูล โปรแกรมที่ใช้เปิดอ่านจะได้ทำงานเร็วขึ้น แล้วก็เปลี่ยนนามสกุลจาก .zip ให้เป็น .epub เป็นอันเสร็จ

ทดลองเอาไปเปิดอ่านในโปรแกรมอ่าน EPUB ได้เลย



จะเห็นว่าการทำหนังสือ EPUB ด้วยมือนั้นค่อนข้างยุ่งยากเสียเวลา และผิดพลาดได้ง่าย
การจัดหน้าตาเนื้อหาเอกสารด้วยคำสั่ง html กับ css นั้นก็ไม่ค่อยสะดวก
ดังนั้นปกติจึงนิยมใช้โปรแกรมสำเร็จมาจัดการแปลงเนื้อหาให้เป็นไฟล์ .epub มากกว่ามาทำด้วยมือ

แต่ที่มาเขียนบันทึกไว้ เพื่อจะได้เข้าใจโครงสร้างคร่าวๆ ของไฟล์ .epub สำหรับว่าถ้าจะมีการแก้ไขอะไรๆ ด้วยตัวเอง เพราะบางทีใช้โปรแกรมสำเร็จมาทำแล้วบางอย่างมีปัญหา ไม่ได้อย่างที่เราต้องการ





* * * * * * * * * *
อ้างอิง
* * * * * * * * * *

* * * * * * * * * *
Keywords
* * * * * * * * * *
EPUB, e-book, ebook, How to make an EPUB e-book by hand

ไม่มีความคิดเห็น:

แสดงความคิดเห็น