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

มาสร้างหนังสือ EPUB จาก Markdown กัน

ผมอยากทำหนังสือ EPUB สีกเล่ม พยายามหาเครื่องมืออยู่และได้ทดลองใช้อยู่หลายตัว เช่น ใช้ word2epub ของ LibreOffice เป็นตัวแปลงไฟล์ Writer เป็น EPUB หรือแม้กระทั่งใช้ Calibre เป็นตัวแปลงจาก Writer เป็น EPUB ก็เคยลองแล้ว ลองใช้บริการ Cloud Convert แต่ก็ยังไม่ถูกใจสักเท่าไร เนื่องจากเอกสารต้นฉบับส่วนใหญ่ของผมไม่ได้อยู่ในรูปแบบ Writer หรือ HTML แต่เป็น Markdown ดังนั้นเครื่องมือข้างต้นช่วยผมไม่ได้สักเท่าไร ก็เลยต้องหาเครื่องมืออื่น หลายคนอาจจะสงสัยว่าทำไมผมเขียน Markdown สาเหตุก็เนื่องจากเอกสาร Markdown สะอาดและอ่านรู้เรื่อง สามารถแปลงไปเป็นรูปแบบอื่นๆ ได้ง่าย ถ้าใครใช้ Github อยู่แล้วจะทราบว่าเขียน Markdown แล้วแปลงไปเป็น Website ด้วย Github Page ทำได้ง่ายมากๆ แต่ถ้าอยากแปลงเป็น EPUB ก็เริ่มยากละ ปัญหาของผมคือเอกสาร Markdown แปลงไปเป็น EPUB หรือเอกสารรูปแบบอื่น หลังจากที่ค้นหาข้อมูลก็พบเครื่องมือที่ถูกใจมาก มีชื่อว่า pandoc ซึ่ง pandoc สามารถแปลงเอกสารได้หลายรูปแบบ ทั้ง HTML, EPUB, Doc, Docx, Mobi, LaTex, Markdown เรียกได้ว่าครบวงจร และที่สำคัญใช้ lua ในการจัดรูปแบบเอกสารได้



มาลงมือกัน สำหรับ Mac, Windows ติดตั้ง pandoc จากหน้าดาวน์โหลดครับ ถ้าใช้ Ubuntu ก็ติดตั้งได้จาก Software Center หรือใช้คำสั่ง



sudo apt-get install pandoc



หลังจากได้เครื่องมือกันแล้ว มาลองสร้างหนังสือ EPUB สักเล่ม ให้ดาวน์โหลดตัวอย่างจาก github/anoochit/pandoc-example มาลองดูครับ



git clone https://github.com/anoochit/pandoc-example.git



cd pandoc-example



จากนั้นลองสร้างเอกสาร EPUB ดูด้วยคำสั่ง



pandoc --toc --epub-stylesheet=style.css --epub-cover-image=cover.jpg --epub-metadata=book.yaml
-o sample.epub title.txt chaptor01.md chaptor02.md chaptor03.md
chaptor04.md chaptor05.md chaptor06.md



เท่านี้เราก็จะได้เอกสาร EPUB ชื่อ sample.epub มาแล้ว :) ง่ายมากๆ สำหรับคนที่ใช้เครื่องมืออย่าง CI สามารถตั้งค่าเพื่อดึงเอกสารจาก Git Repository เอามาสร้างเป็นเอกสารในรูปแบบต่างๆ ได้เลย เช่น EPUB, HTML, PDF เป็นต้น เอาเอกสารที่ได้มาลองอ่านใน iBook ดูครับว่าใช้ได้หรือไม่









อ่านบน Google Book แบบเว็บ ก็ได้นะครับ





หรืออ่านบน Android Tablet ก็ใช้ได้












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

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