четвер, 22 листопада 2012 р.

Скрипт для перетворення pdf& djvu у mobi для e-ink

Як я писав раніше у G+, я придбав Kindle Paperwhite.


Так я писав раніше, про свої перші враження:

Враження змішані. З залізної частиною все прекрасно. Працює спритніше ніж всі рідери, які я використовував раніше. Підсвітка виправдала мої очікування. Ну і загальні враження від Хардварі хороші (хіба що * SD слота не вистачає).Як я писав раніше у G+, я придбав Kindle Paperwhite.
Враження змішані. З залізної частиною все прекрасно. Працює спритніше ніж всі рідери, які я використовував раніше. Підсвітка виправдала мої очікування. Ну і загальні враження від Хардварі хороші (хіба що * SD слота не вистачає).
Але от з софтварню частиною - на мій погляд це суворий такий фейл.
1) Купа неочевидності в інтерфейсі. (нехай ще жести які якнебудь показуються в стартовому туторіали, але, наприклад, перемикання формату часу (24-12) через зміну мови це просто шедевр думки).
І ще одна річ яка мене особливо засмучує і рішення якої я поки не можу знайти - відступи по краях екрану, які додаються штучно і я не маю гадки як їх прибрати. Одне текстові файли, там з цим можна змириться, але якщо у вас є бажання почитати PDF - то це сущий жах ..

Але остання проблема не давала мені спокою, і не знайшовши рішення на просторах інтернету, я почав досліджувати це питання (коротко можна знайти історію моїх думок тут  http://www.kindle.copiny.com/question/details/id/82435). Отже у підсумку, вималювалася така схема:

без рамки можна дивитися комікси, комікси подаються у форматі KF8, тож якщо ми представимо нашу книжку у вигляді коміксу то можна буде комфортно її читати.
Отже я взяв скрипт звідси http://habrahabr.ru/post/130308/ я доопрацював його щоб він міг представляти вихідний файл у вигляді Mobi.
Рішення доволі "брудне" але, на жаль, я не знаю кращого.
Як вказано у посиланні вище, скрипт не тільки перетворює файли до mobi, а робить його більш зручним для читання з маленького екрану.

Враховуючи усю костильність цього рішення і збільшене розширення paperwhite вихідний файл, що ми отримуємо - на порядок більше вхідного, що при великих книгах дуже сумно. (Засмучує це також і reader, який починає довго і сумно перегортати сторінки в таких книжках).

З залежностей, вам знадобиться

Для користувачів windows також знадобиться cygwin http://www.cygwin.com/ для виконання скрипту.


Власне сам скрипт: https://github.com/Stvad/C2mobi (так знаю код виглядає не найкращим чином, але це швидкий хак і власне перший скрипт на bash;)).

Інструкція по використанню:

  1. Завантажити скрипт та встановити усі залежності;
  2. Дати скрипту права на виконання;
  3. Розташувати скрипт та файл для конвертації у одній директорії;
  4. виконати команду djvu2ebook_hd_mobi _fileName_ -in_[pdf|djvu] -out_[pdf|djvu|mobi] -img_format_[jpg|png] "Title"
Де:
djvu2ebook_hd_mobi - ім’я скрипту;
_fileName_ потрібно замінити на ім’я вашого файлу;
-in_[pdf|djvu] - вибір типу вхідного файлу -in_pdf для pdf, та in_djvu для djvu відповідно;
-out_[pdf|djvu|mobi] - вибір типу вихідного файлу (здійснюється по аналогії з попереднім);
-img_format_[jpg|png] вибір проміжного формату картинок (здійснюється по аналогії з попередніми);
"Title" - так книга буде відображатися у рідері.
Потрібно вибрати один із варіантів у квадратних дужках. Title - так книга буде відображена на рідері. 
Приклад:
для книги з файлу file.pdf, конвертуємо у mobi, проміжний формат - png.
 djvu2ebook_hd_mobi file.pdf -in_pdf -out_mobi -img_format_png "SomeTitle"

Користувачі Windows перед виконанням скрипта повинні встановити cygwin і виконувати скрипт з під cygwin.

Буду радий побажанням з покращення.

7 коментарів:

  1. Здравствуйте, не могли бы Вы, пожалуйста, сделать инструкцию для "чайников"? По ссылке выше открывается код скрипта, как его сохранить, запустить, что куда кидать? Заранее благодарен.

    ВідповістиВидалити
    Відповіді
    1. Скачал Kindlegen и скрипт с разрешением "файл", что дальше делать пока не разобрался... Куда нужно положить скрипт и необходимый для конвертирования файл?

      Видалити
    2. Распаковал файл скрипта в папку с Kindlegen (C:\KindleGen\), необходимый файл для конвертирования поместил в папку с кindlegen.exe, прописываю через командную строку следующее:
      C:\KindleGen\kindlegen djvu2ebook_hd_mobi file.pdf-in_pdf-out_mobi-img_format_png "SomeTitle"

      Выходит ошибка:
      Error(kindlegen):E30005: Could not find file SomeTitle

      Где подвох?

      Видалити
    3. C:\KindleGen>kindlegen djvu2ebook_hd_mobi file.pdf -in_pdf -out_mobi -img_format
      _png "SomeTitle"

      *********************************************************
      * Amazon.com kindlegen(Windows) V2.7 build 1019-d6e4792 *
      * A command line e-book compiler *
      * Copyright Amazon.com 2012 *
      *********************************************************

      Error(kindlegen):E30010: Unsupported argument -in_pdf

      Видалити
    4. Может я не выполнил пункт 2 вашей инструкции "Дати скрипту права на виконання"? Честно говоря я не совсем понял, как это сделать...

      Видалити
    5. Обновил пост, расширил инструкцию.
      Вам для начал надо установить все указанные зависимости(я написал полный список в посте)
      установить cygwin
      потом скачать файл скрипта, сохранить его в файл. в свойствах файла поставте галочку "исполняемый"
      и потом запускать как указано в примере, заменив имя скрипта и входного файла на ваши.

      Видалити
    6. Запускать, как я написал в посте, вам надо будет его из под cygwin.

      Видалити