Author | Message |
---|
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 (в основном для мазохистов, но не только ):
1) Распаковать куда-нибудь с сохранением директорий. 2) Запустить утилиту из командную строки:
Code: | fb2toepub -sf <директория-с-фонтами-и-стилями> <файл-fb2> <файл-epub> |
В качестве <директории-с-фонтами-и-стилями> можно подставить custom-emb, если вы хотите иметь встроенные в файл фонты, или custom-noemb, если вы не хотите встраивать фонты, а хотите использовать фонты в устройстве (оно в этом случае должно быть русифицировано, если исходный файл был на русском языке). Утилита НЕ БУДЕТ автоматически строить имя выходного файла по входному или автоматически добавлять расширения. Всё нужно задавать в явном виде.
Это всего лишь первая версия, код очень сырой, я постоянно нахожу в нём новые ошибки, поэтому не судите строго. К тому же я не специалист (скорее дилетант) в XML, HTML, CSS, фонтах, Linux, ARM и т.д., поэтому просьба сильно ногами не пинать, если я где-то проявил вопиющую безграмотность.
Разумная критика приветствуется! Сообщения о найденных ошибках принимаются с благодарностью (просьба при этом сообщать версию, а также предоставлять файлы, на которых произошла ошибка).
В данный момент конвертер НЕ ПОДДЕРЖИВАЕТ невалидные fb2 файлы! Это сделано не специально, а ввиду недостатка времени на разработку и желания как можно быстрее представить продукт разработчикам, и будет исправлено в ближайших версиях.
Благодарности: Roman, sorotokin - за их замечательные конвертеры (1, 2), дающие возможность "подглядеть в ответ" ; 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
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 |
| | | AlexeyB Guest
| Posted: 01.12.2010 08:32 | |
| Да, у меня бродят такие мысли. Это не самое приоритетное, конечно, направление, но тем не менее. Я, правда, изучаю джавовские исходники Соротокина. Спасибо за ссылку! |
| | | kartu Developer
Joined: 23 Nov 2007 Posts: 2111
| | | | AlexeyB Guest
| Posted: 07.12.2010 23:43 | |
| kartu Нет-нет, ничего не простаивает , девелопмент идёт полным ходом, просто праздники кончились и времени мало. Из последнего - сделал (по настоятельному совету Соротокина) манглинг встроенных фонтов. Замечательно, что это совершенно не повлияло на скорость. Исправлено много ошибок. Всё пока в branch, скоро реинтегрируюсь в trunk. Но сначала надо, наконец, разобраться с азиатскими кодировками. |
| | | kartu Developer
Joined: 23 Nov 2007 Posts: 2111
| Posted: 10.12.2010 15:13 | |
| AlexeyB А в чём польза от манглинга то? скрывать от юзверя его собственные фонт файлы? Надеюсь это опция которую можно выключить. Вообще в ПРС+ (чувствую, что повторяюсь ) скорее всего не будет использоваться встраивание фонтов, буду исходить из того, что раз фонт есть в читалке, значит на него всегда можно сослаться, а значит, незачем встраивать. _________________ Папки, игры, fb2, история книг для 505/300/600/x50 |
| | | Mike Sinkovsky Член клуба The eBook
Joined: 09 Mar 2007 Posts: 1066
Location: Пермь
| Posted: 10.12.2010 17:18 | |
| Действительно непонятно зачем вообще в сгенеренный на устройстве epub встраивать шрифты - встроить можно только то что уже есть на устройстве, но тогда на них можно с тем же успехом просто сослаться. Что-то не догоняю... |
| | | AlexeyB Guest
| Posted: 10.12.2010 17:30 | |
| Mike Sinkovsky Во-первых, надо же было как-то тестироваться. Ни ADE, ни Reader Library русский текст в epub не показывают, хоть как их русифицируй. Значит, надо перегонять каждый построенный тестовый файл на ридер и там смотреть? Слишком утомительная процедура. Во-вторых, раз уж это реализовано, не убирать же . А кроме того, кто-то может всё-таки захотеть использовать конвертер на десктопе.
Добавлено спустя 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 (сломался стилус - теперь из бамбука) |
| | | 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
Joined: 04 Feb 2009 Posts: 2985
Location: Юго-Запад СССР
| | | | 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 | |
| не могу под линуксом (убунту) собрать пишет scanner.cpp:312: fatal error: FlexLexer.h: Нет такого файла или каталога хотя FlexLexer.h имеется.... Может кто сталкивался? |
| | | Дотошный Рыжик Член клуба The eBook
Joined: 04 Feb 2009 Posts: 2985
Location: Юго-Запад СССР
| Posted: 30.01.2011 15:49 | |
| xam_death wrote: | fatal error: FlexLexer.h: Нет такого файла или каталога |
include path правильный? |
| | | 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 | |
| спасибо! я именно этот файлик (который в комплекте) и имел в виду я его даже скопировал в каталог fb2toepub - не собирается так то не смертельно... wine fb2toepub.exe тоже работает, хотя это и извращение
да и актуальность, похоже уменьшилась видимо в моём случае нужнее конвертер в пдф |
| | | kartu Developer
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 |
| | | 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
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 |
| | |
| 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
|