รวมไฟล์ html ภายใน chm เป็นไฟล์เดี่ยว ๆ

คราวนี้จะพูดเรื่องการทำไฟล์ html เดี่ยว ๆ จากไฟล์ chm นะครับ

เริ่มจาก chm ก่อน ไฟล์ chm หรือ Compiled HTML Help File เป็นไฟล์ที่ใช้เป็น help ของโปรแกรมส่วนใหญ่ของวินโดวส์นะครับ แต่ก็มีเอามาใช้ทำเป็น ebook อยู่เยอะเหมือนกัน

ข้อดีของ ebook ในแบบของ chm ก็คือไม่มีการแบ่งหน้าแบบ pdf ทำให้ไม่ต้องเลื่อนข้ามหน้าไปมา ทำให้อ่านได้ง่าย ส่วนข้อเสียคือถ้าจะพิมพ์ออกมาอ่านนี่จะทำให้สวยก็เหนื่อยครับ เพราะต้อง copy-paste ไปลง Word แล้วค่อยจัดหน้า จากนั้นค่อยพิมพ์ออกมา

แล้วถ้าเกิดมันมีเป็นสิบ ๆ หน้า มิต้องก๊อปกันมันเลยรึ ??? วันนี้มีวิธีมาบอกครับ

ก่อนอื่น ลองสำรวจว่าโปรแกรมแตกไฟล์ที่ใช้นั้นรองรับ cab file ของไมโครซอฟท์หรือเปล่า ??? ผมใช้ 7zip เลยไม่มีปัญหาครับ สิ่งที่ผมจะทำต่อไปก็คือ … เปิดไฟล์ chm ด้วย 7zip แบบนี้
7zip

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

พอเปิดดูเสร็จ ก็ไม่ต้องรั้งรอครับ extract ไฟล์ออกมาให้หมด ใส่ folder temp อะไรไว้ก็ได้สักอัน แล้วลองมองหาไฟล์ .hhc นะครับ ลองเปิดด้วย text editor ที่คุณถนัด ผมจะใช้ notepad นะครับ
notepad

ไฟล์นี้ก็คือไฟล์ content ที่แสดงอยู่ด้านซ้าย (หรือขวา) เวลาเปิดไฟล์ chm ขึ้นมานะครับ Tag ทั้งหมดเป็น HTML ธรรมดา ๆ นี่ล่ะ แต่ว่าจะมีการใช้ Tag Object ที่มี Attribute ชื่อว่า type มีค่าเป็น “text/sitemap” แล้วข้างในจะมี tag param ต่าง ๆ ไฟล์นี้จะใช้แท๊ก bullet (ul/li) ในการทำหน้าย่อย ๆ ข้างใน folder (อ่านแล้วน่าจะงง ๆ )

แต่ผมจะบอกว่า … ถ้าเรามองที่ tag param ที่มี attribute name=”Local” อย่างเดียว เราก็จะได้แต่ชื่อไฟล์ที่จะเอามาใช้ครับ ด้วยความโชคดีอีกอย่าง มันจะเรียงจากบนลงล่างพอดีเป๊ะ ๆ ดังนั้นแค่มอง tag นี้แท๊กเดียว ไปอ่านไฟล์ html ที่ระบุถึง คัดเอาแต่ส่วนเฉพาะที่อยู่ข้างใน tag body ก็พอ เอามาเรียงต่อ ๆ กันก็จะได้เนื้อหาของทุก ๆ ไฟล์พอดี

ในบาง chm ไฟล์ แต่ละหน้าจะมีรูปแบบส่วนหัวและท้ายหน้าที่ทำเป็น template เอาไว้ ซึ่งเราไม่ต้องการ ตอนที่ผมทำ ผมทำการแปลงไฟล์ html ให้เป็น xhtml แล้วใช้ xpath ดึงข้อมูลส่วนที่ไม่มีหัวท้ายตรงนี้ออกมาครับ

พอดีข้อมูลทุก ๆ ไฟล์ออกมาได้ เราก็เอาข้อมูลตรงนี้ไปรวมกันใน html ไฟล์นึง จะได้เป็นหน้าใหญ่ ๆ ที่มีทุก ๆ หน้ารวม ๆ กันครับ … ก็จบเรื่องของวันนี้พอดี ???

..
..
..

แล้วจะทำไปทำไม ??

บางคนยังนึกไม่ออกว่าผมจะทำไปทำไม ?? คำตอบของผมคือ ผมจะ import ไฟล์ html ที่รวมออกมาได้เข้าไปใน Word แล้ว ตกแต่ง Format ให้สวยงาม แล้วพิมพ์ออกมาอ่านครับ อิอิ
word

ปล. ผมใช้เครื่องพิมพ์เลเซอร์พิมพ์นะครับ ถ้าใช้ Inkjet ล่ะแพงกว่าซื้อใหม่แน่ ๆ (ขนาดเลเซอร์ยังถูกกว่าไม่กี่ตังค์เอง)
ปลล. รูปอาจจะไม่ค่อยครบถ้วนเท่าไหร่ เดี๋ยวว่าง ๆ จะมาอัพเดตเรื่องนี้นะครับ
ปลลล. สิ่งพิมพ์มีลิขสิทธินะครับ อย่าไปละเมิดนะ เดี๋ยวหาว่าผมไม่เตือน อิอิ ที่ผมทำนี่ผมเลือกเล่มที่ผมมีอยู่จริง ๆ บนชั้นหนังสือครับ แต่จริง ๆ ก็เป็นการละเมิดอยู่ดี 😛

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

This site uses Akismet to reduce spam. Learn how your comment data is processed.