Конвертер из fb2 в epub, предназначенный для встроенных систем
Goto page 1, 2, 3, 4, 5  Next
 
Libroom Forum IndexПрограммное обеспечение
AuthorMessage

AlexeyB
Guest









Posted: 30.11.2010 10:03    

Последняя версия исходников 1.0_4 (на C и C++) лежит здесь:
http://code.google.com/p/fb2-to-epub-converter/downloads/detail?name=f b2toepub-1.0_4.zip&can=2&q=

Построенный исполняемый файл под Windows последней версии 1.0_4 лежит здесь:
http://code.google.com/p/fb2-to-epub-converter/downloads/detail?name=f b2toepub-1.0_4.win.release.zip&can=2&q=

Построенный конвертер для Mac OS X с Drag & Drop GUI (спасибо ZeroChaos):
http://zerolab.net/2011/03/14/fb2toepub-for-mac-os-x-dragdrop-converte r/
libroom.net/viewtopic.php?p=621761#621761


Для нужд kartu и его проекта PRS+ написал конвертер из fb2 в epub, ещё один в дополнение к множеству уже существующих. Данный конвертер, однако, в первую очередь предназначен для работы внутри ридеров, а не на внешнем десктопе, и пользователями его предполагаются другие разработчики, встраивающие его в embedded-системы. В связи с этим основные требования к нему были такие: маленький размер; по возможности, независимость от внешних библиотек; экономия ресурсов; быстрота конвертации; переносимость. Это его плюсы, а основной минус вытекает из тех же требований: у него вряд ли когда-нибудь будет очень удобный пользовательский интерфейс. Он работает только в режиме командной строки, и таким и будет в обозримое время. Пользоваться на десктопе им, разумеется, можно, но это никогда не будет так удобно, как пользоваться конвертерами Roman и sorotokin.
В то же время исходники проекта открыты, и желающие могут их использовать для любых своих целей (при условии соблюдения GNU General Public License 3).


Как пользоваться утилитой под Windows (в основном для мазохистов, но не только Smile):

1) Распаковать куда-нибудь с сохранением директорий.
2) Запустить утилиту из командную строки:
Code:
fb2toepub -sf <директория-с-фонтами-и-стилями> <файл-fb2> <файл-epub>

В качестве <директории-с-фонтами-и-стилями> можно подставить custom-emb, если вы хотите иметь встроенные в файл фонты, или custom-noemb, если вы не хотите встраивать фонты, а хотите использовать фонты в устройстве (оно в этом случае должно быть русифицировано, если исходный файл был на русском языке).
Утилита НЕ БУДЕТ автоматически строить имя выходного файла по входному или автоматически добавлять расширения. Всё нужно задавать в явном виде.

Это всего лишь первая версия, код очень сырой, я постоянно нахожу в нём новые ошибки, поэтому не судите строго. К тому же я не специалист (скорее дилетант) в XML, HTML, CSS, фонтах, Linux, ARM и т.д., поэтому просьба сильно ногами не пинать, если я где-то проявил вопиющую безграмотность.

Разумная критика приветствуется! Сообщения о найденных ошибках принимаются с благодарностью (просьба при этом сообщать версию, а также предоставлять файлы, на которых произошла ошибка).

В данный момент конвертер НЕ ПОДДЕРЖИВАЕТ невалидные fb2 файлы! Это сделано не специально, а ввиду недостатка времени на разработку и желания как можно быстрее представить продукт разработчикам, и будет исправлено в ближайших версиях.

Благодарности:
Roman, sorotokin - за их замечательные конвертеры (1, 2), дающие возможность "подглядеть в ответ" Smile;
sorotokin - также за утилиту epubcheck, без которой какое-либо нормальное тестирование было бы просто невозможно;
Roman - также за формат файла translit.xml, который я у него беззастенчиво позаимствовал без изменений, и за файл со стилями css, который я тоже взял у него, но немного переделал для своих целей;
boroda, kartu - за тестирование утилиты на ридере и Linux, правку кода и ценные советы;
kaznelson - за тестовый fb2 файл, который мне очень пригодился;
а также всем тем, кто мне помогал советами и отвечал на вопросы.

Страница проекта:
http://code.google.com/p/fb2-to-epub-converter/

Всю предысторию можно найти в этой теме:
libroom.net/viewtopic.php?t=12929

Что нового в версии 1.0_4:
Никакой новой функциональности нет, но:
- исправлено множество ошибок, в том числе местами сильно переписан сканер XML,
- сообщения об ошибках теперь более информативные,
- проверяется поле fsType фонтов для определения, можно ли встраивать этот фонт,
- (это, главным образом, облегчает жизнь мне самому) добавлен windows makefile. В оба makefile добавлена возможность задать номер версии в командной строке.

Что нового в версии 1.0_3:
- добавлен элемент <meta name="cover" content=.../> в секцию "metadata" файла content.opf;
- добавлена возможность отключения азиатских кодировок (по умолчанию отключена);
- добавлен адобовский манглинг фонтов, а также в случае, если исходный fb2 файл не имеет валидного UUID, его генерация;
- добавлена возможность конфигурации максимальных размеров xhtml файла (по умолчанию 192K);
- для kartu добавлены флаги gcc компилятора в linux makefile, отключающие string compare и азиатские кодировки (флаги закомментарены);
- исправлено много мелких ошибок.


Last edited by AlexeyB on 14.03.2011 23:27; edited 8 times in total
 
^

viktorz
Член клуба The eBook

Член клуба The eBook



Joined: 22 Sep 2007
Posts: 3209


Location: San Jose, CA

Posted: 01.12.2010 07:45    

А вот наткнулся, может, пригодится?

http://fontcode.sourceforge.net/

fontcode wrote:
fontcode is a collection of C libraries and utility programs for manipulating TrueType fonts, developed for use in the Prince formatter and made available under an open-source license.

Currently it includes the following programs:

* subset, which can be applied to TrueType fonts to produce a new font that contains a subset of the glyphs found in the original font, handy for saving space on disk and in PDF files.

* font_info, which can be applied to font files to print information about the font, including the available features and ligatures found in the OpenType glyph substitution table (GSUB).

To build these programs you will require the FreeType library.

_________________
Nothing Is Ever Easy fb2pdf
 
View user's profile ^

AlexeyB
Guest









Posted: 01.12.2010 08:32    

Да, у меня бродят такие мысли. Это не самое приоритетное, конечно, направление, но тем не менее. Я, правда, изучаю джавовские исходники Соротокина.
Спасибо за ссылку!
 
^

kartu
Developer

Developer

Donate

Joined: 23 Nov 2007
Posts: 2111



Posted: 07.12.2010 18:49    

На случай если талант простаивает, CHM формат:
http://www.russotto.net/chm/chmformat.html

Smile

На первый взгляд, вроде "тот же епаб" с уже готовыми хтмл файлами, просто со своим мета файлом.

ЗЫ
В ПРС+ буду пытаться включить где-то в январе, в RL накопилось дел. Confused
_________________
Папки, игры, fb2, история книг для 505/300/600/x50
 
View user's profile ^

AlexeyB
Guest









Posted: 07.12.2010 23:43    

kartu
Нет-нет, ничего не простаивает Smile, девелопмент идёт полным ходом, просто праздники кончились и времени мало.
Из последнего - сделал (по настоятельному совету Соротокина) манглинг встроенных фонтов. Замечательно, что это совершенно не повлияло на скорость. Исправлено много ошибок. Всё пока в branch, скоро реинтегрируюсь в trunk. Но сначала надо, наконец, разобраться с азиатскими кодировками.
 
^

kartu
Developer

Developer

Donate

Joined: 23 Nov 2007
Posts: 2111



Posted: 10.12.2010 15:13    

AlexeyB
А в чём польза от манглинга то? скрывать от юзверя его собственные фонт файлы? Smile Надеюсь это опция которую можно выключить.
Вообще в ПРС+ (чувствую, что повторяюсь Smile) скорее всего не будет использоваться встраивание фонтов, буду исходить из того, что раз фонт есть в читалке, значит на него всегда можно сослаться, а значит, незачем встраивать.
_________________
Папки, игры, fb2, история книг для 505/300/600/x50
 
View user's profile ^

Mike Sinkovsky
Член клуба The eBook

Член клуба The eBook



Joined: 09 Mar 2007
Posts: 1066


Location: Пермь

Posted: 10.12.2010 17:18    

Действительно непонятно зачем вообще в сгенеренный на устройстве epub встраивать шрифты - встроить можно только то что уже есть на устройстве, но тогда на них можно с тем же успехом просто сослаться.
Что-то не догоняю... Rolling Eyes
 
View user's profile ^

AlexeyB
Guest









Posted: 10.12.2010 17:30    

Mike Sinkovsky
Во-первых, надо же было как-то тестироваться. Ни ADE, ни Reader Library русский текст в epub не показывают, хоть как их русифицируй. Значит, надо перегонять каждый построенный тестовый файл на ридер и там смотреть? Слишком утомительная процедура.
Во-вторых, раз уж это реализовано, не убирать же Smile. А кроме того, кто-то может всё-таки захотеть использовать конвертер на десктопе.

Добавлено спустя 1 час 41 минуту 14 секунд:

kartu
Манглинг, конечно, нужен главным образом при использовании на десктопе, исключительно для того, чтобы избежать потенциальных проблем с правообладателями фонтов. Ибо если кто-то вставит коммерческие фонты, которые не разрешено вставлять, в незашифрованном виде, то проблемы могут быть как у него, так и у меня.
Отключение я сначала хотел сделать, но потом решил, что нет смысла. Скорость это не изменит: фонт в любом случае пакуется ровно один раз той же самой процедурой deflate, а сам манглинг (простой XOR) занимает пренебрежимо малое время. На размер утилиты тоже практически не влияет. (Гораздо полезнее в этом смысле предложенное вами удаление азиатских кодировок, это сильно уменьшает размер файла. Это, кстати, уже сделано и появится в следующей версии, скорее всего в выходные.)
А если на устройстве фонты не встраиваются, то и вообще пофигу, есть манглинг или нет.

Добавлено спустя 1 час 53 минуты 47 секунд:

Выложил 1.0_2 сейчас, не дожидаясь выходных.

Что нового:
- добавлен элемент <meta name="cover" content=.../> в секцию "metadata" файла content.opf;
- добавлена возможность отключения азиатских кодировок (по умолчанию отключена);
- добавлен адобовский манглинг фонтов, а также в случае, если исходный fb2 файл не имеет валидного UUID, его генерация;
- добавлена возможность конфигурации максимальных размеров xhtml файла (по умолчанию 192K);
- для kartu добавлены флаги gcc компилятора в linux makefile, отключающие (кроме string compare) азиатские кодировки (флаги закомментарены);
- исправлено много мелких ошибок.

Добавлено спустя 6 часов 29 минут 30 секунд:

Упс, ошибочка. Если нет встроенных фонтов, файла encryption.xml быть не должно, а он есть - с пустым корневым элементом <encryption> (что есть нарушение схемы.)
Сегодня поправлю.

Update: Исправил, последняя версия стала 1.0_3.
Поспешишь - ...
 
^

TJ27
Бывалый участник форума

Бывалый участник форума



Joined: 20 Oct 2010
Posts: 136


Location: Саратов

Posted: 14.12.2010 12:10    

Может что-то не понял, но:
Как этим счастьем на устройстве пользоваться? Сони PRS-350 1.05f boroda
_________________
КПК Sony Clie TJ27->КПК Acer N311->Sony Reader PRS-350 (сломался стилус Sad - теперь из бамбука)
 
View user's profile ^

AlexeyB
Guest









Posted: 14.12.2010 20:05    

На устройстве самостоятельно - никак. Надо ждать, пока kartu встроит в PRS+. Он писал, что начнёт работать над этим, скорее всего, в январе.
 
^

AlexeyB
Guest









Posted: 01.01.2011 03:05    

К Новому Году - новую версию!

В версии 1.0_4 никакой новой функциональности нет, но:
1) исправлено множество ошибок, в том числе местами сильно переписан сканер XML,
2) сообщения об ошибках теперь более информативные,
3) проверяется поле fsType фонтов для определения, можно ли встраивать этот фонт,
4) (это, главным образом, облегчает жизнь мне самому) добавлен windows makefile. В оба makefile добавлена возможность задать номер версии в командной строке.

В дальнейших планах - прежде всего (и наконец-то) рефакторинг кода. Если он будет сделан, пакет будет содержать отдельный модуль-читалку fb2. Этот модуль который можно будет снабдить любой писалкой, не обязательно именно epub. В результате, например, будет сильно облегчено написание встраиваемого fb2->lrf конвертера.

Поздравляю всех с Новым Годом!
 
^

Дотошный Рыжик
Член клуба The eBook

Член клуба The eBook



Joined: 04 Feb 2009
Posts: 2985


Location: Юго-Запад СССР

Posted: 04.01.2011 19:05    

libroom.net/viewtopic.php?t=17420 - пригодится?
 
View user's profile ^

AlexeyB
Guest









Posted: 04.01.2011 19:33    

Дотошный Рыжик
Почему бы и нет. У меня конвертер не парсит CSS, но это, как вы сами заметили, и не нужно. Я внимательно слежу за топиком.

(Кстати, если кому-нибудь интересно: сейчас при конвертации полностью игнорируются и атрибут style и элемент stylesheet.)

Добавлено спустя 2 часа 35 минут 20 секунд:

Дотошный Рыжик wrote:
имя, которое не совпадает ни с одним ключевым словом языка CSS (а заодно - и ни с одним именем тэга FB2 и HTML

Вот это, по-моему, ключевое место, это надо хорошо продумать и определить. У меня, например, конвертер генерирует очень много своих собственных классов (напр. <div class="body_main"> для основного body, <div class="body_notes"> для notes и <div class="body_comments"> для комментариев - это только маленький пример). Пока я уверен, что эти имена мои собственные - нет проблем, но вдруг я найду это имена в fb2?
Хотя, пока писал, понял, что тут нет проблемы - я всегда могу ко всем стилям, найденным в fb2, например, добавить префикс "fb2_". Но всё равно, обговорить это стОит.
 
^

xam_death
Недавний участник форума

Недавний участник форума



Joined: 30 Jan 2011
Posts: 14



Posted: 30.01.2011 10:10    

не могу под линуксом (убунту) собрать Sad
пишет
scanner.cpp:312: fatal error: FlexLexer.h: Нет такого файла или каталога
хотя FlexLexer.h имеется....
Может кто сталкивался?
 
View user's profile ^

Дотошный Рыжик
Член клуба The eBook

Член клуба The eBook



Joined: 04 Feb 2009
Posts: 2985


Location: Юго-Запад СССР

Posted: 30.01.2011 15:49    

xam_death wrote:
fatal error: FlexLexer.h: Нет такого файла или каталога
include path правильный?
 
View user's profile ^

AlexeyB
Guest









Posted: 01.02.2011 08:13    

Присоединяюсь к Дотошному Рыжику.
Но если уж совсем по-простому, если ничего не получится, то можете использовать файл FlexLexer.h, лежащий в fb2toepub/win_FlexLexer. Я его положил для тех, кто хочет скомпилировать утилиту под Windows, поскольку под Windows нет нормальной версии flex. Но и для linux он, естественно, тоже должен работать - поскольку я включаю построенный файл scanner.cpp, совместимый именно с этой версией FlexLexer.h, всё должно построиться нормально.
 
^

xam_death
Недавний участник форума

Недавний участник форума



Joined: 30 Jan 2011
Posts: 14



Posted: 01.02.2011 20:00    

спасибо!
я именно этот файлик (который в комплекте) и имел в виду Sad
я его даже скопировал в каталог fb2toepub - не собирается Sad
так то не смертельно... wine fb2toepub.exe тоже работает, хотя это и извращение Smile

да и актуальность, похоже уменьшилась
видимо в моём случае нужнее конвертер в пдф Sad
 
View user's profile ^

kartu
Developer

Developer

Donate

Joined: 23 Nov 2007
Posts: 2111



Posted: 03.03.2011 12:22    

Пробую 1.0.4 версию, всё работает.
Пока единственное пожелание: хотелось бы иметь возможность подключать ресурсы поимённо, а не папками. Т.е. если имеем:

/a/font.ttf
/b/d/somestyle.css
/e/otherstyle.css

включить их так (как обозвать ключ, неважно):

fb2toepub -r /a/font.ttf -r /b/d/somestyle.css -r /e/otherstyle.css <input> <output>

PS
Нактнулся на пачку файлов на которых конвертер спотыкается. Запостил один из них как issue на сайте проекта.
_________________
Папки, игры, fb2, история книг для 505/300/600/x50
 
View user's profile ^

AlexeyB
Guest









Posted: 03.03.2011 23:02    

kartu wrote:
Пока единственное пожелание: хотелось бы иметь возможность подключать ресурсы поимённо, а не папками. Т.е. если имеем:

/a/font.ttf
/b/d/somestyle.css
/e/otherstyle.css

включить их так (как обозвать ключ, неважно):

fb2toepub -r /a/font.ttf -r /b/d/somestyle.css -r /e/otherstyle.css <input> <output>

Сделаю в следующей версии. Выпуск её несколько затянулся ввиду нехватки свободного времени, но тем не менее работа идёт. Впрочем, если нужно, могу выпустить срочную версию с небольшими изменениями.

Я ещё когда-то обещал сделать описание классов для CSS, генерируемых конвертером в ePub - это ещё актуально, или вы сами разобрались?

kartu wrote:
Нактнулся на пачку файлов на которых конвертер спотыкается. Запостил один из них как issue на сайте проекта.

Спасибо, гляну обязательно.

Добавлено спустя 42 минуты 7 секунд:

Файл, вообще говоря, невалидный - нарушен порядок элементов в title-info (а именно, src-lang должен находиться после lang, а не перед book-title). Пока что конвертер такие ошибки не обрабатывает. Насколько много таких файлов? Они все с одной и той же ошибкой?
 
^

kartu
Developer

Developer

Donate

Joined: 23 Nov 2007
Posts: 2111



Posted: 04.03.2011 14:58    

AlexeyB wrote:
Впрочем, если нужно, могу выпустить срочную версию с небольшими изменениями.

Не, не стоит.

AlexeyB wrote:
Я ещё когда-то обещал сделать описание классов для CSS, генерируемых конвертером в ePub - это ещё актуально, или вы сами разобрались?

В целом, в будущем, хорошо бы знать, кого и как метит конвертер. В первой версии возможности подстраивать стиль прямо из опций ПРС+ не будет, так что не актуально, но только пока.

AlexeyB wrote:
Файл, вообще говоря, невалидный - нарушен порядок элементов в title-info (а именно, src-lang должен находиться после lang, а не перед book-title).Пока что конвертер такие ошибки не обрабатывает. Насколько много таких файлов? Они все с одной и той же ошибкой?

Я тестировал на книгах Льва Толстого из "библиотеки траума". Из примерно десятка книг с такой ошибкой было больше половины. Исходя только из этого трудно сказать, насколько это типичная ошибка. Пощупаю еще вечером.
_________________
Папки, игры, fb2, история книг для 505/300/600/x50
 
View user's profile ^
Libroom Forum IndexПрограммное обеспечениеAll times are GMT + 4 Hours
Goto page 1, 2, 3, 4, 5  Next
Page 1 of 5

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

© Libroom, 2021