منبع اصلی نوشتار زیر در این لینک قرار دارد

فایلهای CHM و لینوکس

یکی از مشکلات من برای مهاجرت به لینوکس، فایلهای CHM بود. فایلهایی که به این صورت هستن،‌در حقیقت خیلی زیادن. کلی e-Book بود و راهنمای خیلیی از ابزارهایی که استفاده میکنم هم به این فرمت هست. مثلا PHP، البته مثلا برای این یکی میشه یه جور دیگه هم دانلود کرد مثلا به فرمت HTML معمولی (تعداد زیادی فایل) که باب طبع من نیست. مدیریت این خیلی راحت تره،‌ معمولا امکان جستجوش که خیلی مهمه و عنوانبندی هم میتونه مفید باشه. حالا ایندکس زیاد مهم نیست.

البته میشه ازwine هم استفاده کرد، ولی این رو اصلا به عنوان یه راه حل در نظر نمیگیرم چون اصولا ترجیح میدم که از خود لینوکس استفاده کنم، اگه ویندوز میخواستم که مهاجرت نمیکردم!!! توی برنامه های لینوکس نمایشگرهای مناسبی هست. همه رو امتحان کردم، بد نبودن (غیر از kchmviewer که امتحان نکردم و نمیدونم)‌ اما باز هم همه مشکل داشتن. مهمترین مشکل این بود که بی دلیل یهو میپریدن بیرون. همین!! نمیدونم چه مرگشون بود! علاوه بر این با بوکمارکهای وسط صفحه مشکل داشتن (دست کم اونی که من ازش خوشم اومد مشکل داشت CHM Viewer ). یعنی لینک به وسط صفحه رو میرفت به اول صفحه که خوب این خیلی بد بود :)‌ ‌این شد که بازم گشتم دنبال یه راه حل مناسب تر.

آخر سر به این نتیجه رسیدم که بهتره یه راهی پیدا کنم که فرمت CHM رو با یه فرمتی تو لینوکس عوض کنم. انتخابم هم DevHelp بود. بعد از کلی گشتن راهشو پیدا کردم. یه برنامه مناسب برای تبدیل فایل های CHM به DevHelp و نصب اونها توی DevHelp.

کد با Python نوشته شده و میتونید از اینجا بگیریدش. -اینم لینک مستقیم- (البته طبق معمول این کد هم توی گوگل کد هست و اونجا هم به ما اجازه گرفتن کد رو نمیده که اگه کسی مشکلی داشت بگه تا یه جایی یه کپی ازش بذارم :)‌ )‌.

بعد از دانلود فایل pyhtmlhelp-0.5 (یا نسخه های جدیدتر که ممکنه در آینده ایجاد بشن) اونو یه جایی Extract کنید. بعد تنها کاری که باید انجام بدید اینه :

hhconvert.py source.chm dest.tgz

اینجوری فایل جدیدی خواهید داشت با پسون tgz که در حقیقت نسخه مربوط به devhelp هست. مشکلی تو این مرحله ممکنه پیش بیاد که آخر نوشته توضیح میدم درباره این مشکل.

حالا این دو تا اسکریپت رو هم بگیرید. البته برای راحتی کار من کدشونو اینجا میذارم
اسکریپتی برای نصب فایل های devhelp :

#!/bin/sh

set -e

# NOTE: DevHelp authors change the book location every minor update, so YMMV...
XDG_DATA_HOME=${XDG_DATA_HOME:=$HOME/.local/share}
DEVHELP="$XDG_DATA_HOME/devhelp"

for FILE
do
	BASENAME=<code>basename &quot;$FILE&quot;</code>
	BOOK=${BASENAME%.*}
	
	mkdir -p &quot;$DEVHELP/books&quot;
	rm -rf &quot;$DEVHELP/books/$BOOK&quot;
	
	TMPDIR=<code>mktemp -dt devhelp.XXXXXX</code>

	tar -xzf &quot;$FILE&quot; -C &quot;$TMPDIR&quot;

	mv &quot;$TMPDIR/book&quot; &quot;$DEVHELP/books/$BOOK&quot;
	mv &quot;$TMPDIR/book.devhelp&quot; &quot;$DEVHELP/books/$BOOK/$BOOK.devhelp&quot;

	rm -rf &quot;$TMPDIR&quot;
done

و دومی هم اسکریپتی برای حذف فایلهای نصب شده در devhelp :

#!/bin/sh

set -e

# NOTE: DevHelp authors change the book location every minor update, so YMMV...
XDG_DATA_HOME=${XDG_DATA_HOME:=$HOME/.local/share}
DEVHELP="$XDG_DATA_HOME/devhelp"

for BOOK
do
	rm -f $DEVHELP/specs/$BOOK.devhelp
	rm -rf $DEVHELP/books/$BOOK
done

اولی رو تو یه فایلی مثلا تو آدرس : /home/username/bin به اسم devhelp-install یا هر اسمی که دوست دارید ذخیره کنید دومی هم مثلا به اسم devhelp-uninstall بعد اونها رو اجرایی کنید (یا با کلیک راست توی ناتیلوس و انتخاب گزینه Allow executing file as a program در تب Permission یا با این دستور :

chmod +x devhelp-install

-که باید برای uninstall هم تکرار بشه . بعد کافیه که اونها رو اجرا کنید :

devhelp-install dest.tgz

با دادن آدرس فایل tgz ساخته شده، همه چی تمومه و این فایل chm توی devhelp نصب میشه و شما به راحتی میتونید از اون استفاده کنید.

فقط نکته ای که هست مشکلیه که توی فایلهای chm هست و اگه عنوان فهرست فایل chm شامل ” (دابل کوتیشن) باشه این برنامه تو تبدیلش گیج میزنه و از اون بخش به بعد رو توی لیست نمیاره که من یه بار با این مشکل روبرو شدم و تنها راهم این بود که فایل chm و فایل tgz ساخته شده رو extract کنم، فایل با پسوند toc توی chm رو پیدا کنم، و قسمتهای بعدی رو از تو فایل toc بخونم و تو ‌فایل با پسوند devhelp توی فایل tgz دستی اون قسمتها رو اضافه کنم. کار سختی نیست، و اگه کسی واقعا نیاز داره بگه تا راهنمایی کنم. برای extract کردن فایل chm از archmage استفاده کنید (منظورم اینه اگه لازم شد وگرنه کلا احتیاجی نیست .)‌که به این صورت میتونید توی اوبونتو نصبش کنید :

sudo apt-get install archmage

و برای استفاده هم که خیلی راحت :

archmage source.chm output-folder

همین :)‌



برچسب ها : , , , , , ,