Показаны сообщения с ярлыком e-book. Показать все сообщения
Показаны сообщения с ярлыком e-book. Показать все сообщения

четверг, 24 февраля 2011 г.

EPUB to Kindle converter

Замутил тут новую программу: EPUB to Kindle converter. Собственно, вначале просто ковырял mobi и epub на предмет добавления в лучший просмоторщик документов, потом просто ковырять стало скучно, решил применить знания на практике. Ну и являясь вполне счастливым обладателем Kindle, который собака не жрет ничего кроме MOBI и PDF, заодно написал себе инструмент для загоняния всякого для чтения на девайсе, есть там пара мыслей как все это углубить и расширить, хотя возможно и не в рамках конвертерного проекта. Мыслей правда и помимо этого до черта, вот времени на все радости к сожалению не всегда хватает.
С другой стороны интересно посмотреть на проект, сделанный фактически с нуля за месяц и на то чего из этого получится.

Про мега варианты защиты текста в XPS

В связи с STDU Viewer кинули тут замечательный XPS файл. Проблема была в том, что страницы рендерились крайне медленно, т.е. тормозило все жутчайшим образом. Первая мысль была что народ в очередной раз чего-то отсканировал c 600 dpi разрешением и закрутил в xps. Думаю, эко до чего техника дошла, раньше все в djvu и pdf гнали, а теперь значит и до xps добрались. Причем размер у файла был вполне себе достойный, больше 30 метров, что подозрения усиливало.
Но выяснилось, что все намного веселее.
Нас самом деле xps, он как бы сильно похож на pdf, т.е. то же документ с подготовленными к печати страницами, часть данных может быть представлена в векторном виде (причем вроде как тут инструментов у xps даже побогаче), часть в растровом, часть просто как текст, причем и шрифты можно внедрить. Надо сказать, xps видится мне форматом существенно прямее и четче чем pdf, хотя и не без своих заскоков. В pdf например, есть понятие потока и соответственно кодированного потока, ну и есть пяток разных кодеров, типа Deflate, jpeg, CCITT и прочем RLE, причем над данными, которые вы хотите положить в pdf файл, вы можете последовательно надругаться разными кодеками. Понятно, что по-большому счету вот это вот последовательное применение нескольких кодеков над одними и теми же данными нужно крайне редко (т.е. я вообще не припомню, чтобы с таким сталкивался, хотя и допускаю, что кто-то где-то и когда-то этим пользовался и может даже пользуется до сих пор). При этом совершенно очевидно, что ч/б картинки будут кодироваться CCITT или JBIG2, цветные jpeg или jpeg2k ну, а текстовые данные Deflate или LZ77 (вроде LZ77 там тоже есть лезть проверять в спеку лень). Но все как обычно сделано очень обще, при том, что вся эта общность вырождается во вполне конкретную частность в 95% случаев, и еще кучу работы чтобы поддержать оставшиеся 5%. В отличие от pdf в xps все проще и от того приятнее для реализации, причем сильно сомневаюсь, что можно найти pdf не переводимый в xps.
В xps правда есть свои веселые заморочки, типа virtual brush с дикой вложенностью, но в целом формат на мой вкус попрямее, и думаю если микрософт его не забросит, в конечном итоге он должен pdf придушить. Хотя судя по скорости распростронения электронных читалок, есть вполне приличная вероятность, что скоро форматы с четким разбитием на страницы сдохнут уже все скопом, а выживут всякого рода ePub, FB2 и прочие MOBI. А если учесть, что гугл всерьез решил пересканировать всю мировую литературу, перспектива, лично меня, сильно радует.
Возвращаясь к тому файлу xps с которого все началось. Итак, открываю файл начинаю разбираться чего там внутре. Честно говоря, давно я так не удивлялся.
Как известно современные шрифты (да вообщем, и не очень современные тоже, поминая METAFONT Кнута), задают каждую буквовку набором кривых, от чего собственно шрифты и называются векторными. Так вот ребята готовившие документ, не стали внедрять шрифты, а просто перевели весь текст в набор кривых, благо формат xps вполне это повзоляет.
Плюс на мой взгляд только один. Документ по сути разом стал Read Only, т.е. скопировать оттуда текст стало фактически не возможно штатными средствами. Из минусов размер документа раздулся до невозможности, т.е. если его растерезовать с разрешением 600DPI и потом загнать в pdf с JPBIG2 кодеком или в djvu, то этот самый растровый документ будет раз в 10 меньше по объему (а может и в 20). Ну и понятно что скорость рендеренга такого документа резко снизилась, потому что одно дело когда шрифт растеризуется и кешируется, и другое когда кешировать особенно нечего и каждый символ приходиться растеризовать заново.
С одной стороны столь элегантное решение по созданию Read Only документов не может не радовать, с другой плодить энтропию в таких объемах мягко говоря выглядит не экономно.

среда, 2 февраля 2011 г.

Про формат epub, русские народные сказки и прочее

Понадобилось мне тут поразбирать файлы в формате epub. Я в свое время на этот формат уже смотрел, и помнилось мне, что все там просто. Т.е. всего то запакованный в зип набор html-к, картинок и css-ок, плюс некая главная xml-ка в которой прописано, в каком порядке те html-ки собираются в книжку.
Начал смотреть. Собственно первая задача, это определить, который из файлов в зипе есть та самая главная xml-ка. Как бы сделал я будь я составителем стандарта? Я бы сделал просто. Сказал бы, вот вам граждане зип, кладите туда чего хотите, с какими хотите названиями и папками, но опосля всего этого безобразия будьте любезны положить туда же в корень архива файл main.opf, который бы описывал чего жеж с тем что вы в зип понапихали делать. Оно, конечно, может в тот момент я был бы не в духе и заставил бы бедных граждан называть тот файл general.opf, а то и TyrpYRMyrDYR.opf, всяко бывает. Но как-то вот так, да.
Как же оно реализовано мега гражданами составителями формата? Естественно, там не такие простаки, поэтому все существенно круче, а именно.
В зипе должна обязательно быть папка META-INF, в папке той должен быть обязательно файл container.xml, в том файле, который кстати "содержит XML которая использует "urn:oasis:names:tc:opendocument:xmlns:container" namespace для всех ее элементов и аттрибутов." Да так вот в этом container.xml должен содержаться элемент , который в свою очередь должен содержать по меньшей мере один элемент , имеющий media-type "application/oebps-package+xml". Но только один элемент , имеющий media-type "application/oebps-package+xml" должен быть включен. И вот наконец файл на который ссылается первый элемент, имеющий media-type "application/oebps-package+xml" будет содержать EPUB rootfile.
Я когда все это прочитал, понял, что что-то это мне напоминает.
"Смерть Кащея на конце иглы, игла в яйце, яйцо в утке, утка в зайце, заяц ларце, ларец на дубе, дуб на острове, остров хер пойми где" а теперь Ваня шкандыбай в сторону того острова и отстреливай весь этот зоопарк.
Самое интересное во всем этом мегаконструкте, полнейшее отсутствие полезности. А местами даже вредность. На 10 epub файлов скаченных из разных мест и созданных явно разными программами, не нашлось ни одного, в котором бы файл container.xml содержал что-то кроме ссылки на файл. Кто-то называл тот главный файл main.opf, кто-то general.opf, кто-то запихнул его не в корень архива, а подпапку, но по сути весь этот восторг разнообразия, программистам писавшим редакторы или конвертеры в epub вряд ли нужен. Если бы в спецификации было четко написано, как назвать главный файл они бы его так и назвали и вряд ли сильно расстроились за такое тоталитарное измывательство над креативными людьми.
Самое грустное, что это вот странное желание не упростить сложное, а усложнить простое, оно последние время наблюдается практически везде в ПО. "Давайте мы сейчас зафигачим такой формат, такой общий, такой абстрактный, что только держись". И понеслось, навертели такое, что реализовывать поддержку того формата целиком не упиралось уже даже монстрам индустрии, после чего начинаются дальнейшие радостные крики, а вот профиль 0, это когда мы из нашего мега формата отрезали вот это, вот то и еще здесь оставили только параметры от 0 до 2, а не от 0 до 2 в 32-й как было изначально, а вот профиль 1, там мы тоже все обчекрыжали и файл должен быть тока в UTF-8. Абалдеть.
Собственно, если начать сравнивать форматы сделанные лет 10-15 назад и сейчас, отличие разительно и совершенно очевидно. Берем Word-овский doc, благо теперь его открыли - все просто понятно, все пляшет от практических нужд, видно что делалось оно людьми, которые пишут программы, причем не программы вообще, а вот один из лучших текстовых редакторов (как по мне так и лучший), а не пытаются поковырявши в носу или где то там еще выдумать "чего бы там могло бы быть если бы оно бы туда бы и чтобы всем бы круто, вот". Берем DjVu тоже все четко и понятно, PDF старенький - все отлично, потом пошли формы, 3Д, мультимедиа и прочее и прочее и прочее. Смотрим, например, спецификацию 1.7. на PDF: "Sound, Movies, 3D artwork"... граждане, башку то включите, хочется интерактивных документов со всеми этими вашими мультимедиа, дык кто же спорит - здорово, но при чем тут PDF, который разбит на страницы и вообще подготовлен к печати, это ж PostScript по факту то, чего из него HTML то делать, мало что-ли HTML?
Из относительно новых, только FB2 греет мне душу, простой понятный и главное ровно то что нужно, для задачи хранения книги в библиотеки и ее отображения на компьютере. Т.е. люди представляли для чего им нужен формат, а не пытались сделать нечто чем можно и гвозди забивать, и стихи писать.
Вообщем ситуация навевает грусть, ибо вместо того чтобы сделать простое просто, а сложное постараться упростить, имеется тенденция, усложнять простое, а сложное и вовсе не делать.

четверг, 15 апреля 2010 г.

Про Amazon Kindle DX

Приобрел себе Amazon Kindle DX. Давно хотел заиметь читалку с экраном достаточно здоровым, чтобы читать pdf, потому что все тех доки идут именно что в pdf и переконвертировать их во что-то текстовое, вариант малоприемлемый, не говоря уже об интересных книжках, которые тоже либо в djvu либо в pdf. Ноутбук для чтения не подошел совершенно, так что придушил жабу и нахватил.

Ощущения после пары недель использования в основном положительные. Во-первых, устройство выглядит крайне качественно, ничего не болтается, винты не торчат, очень порадовало. Во-вторых, с e-ink экрана читать, действительно комфортнее, во всяком случае, по моим субъективным ощущениям. Правда, несколько непривычно, что в темноте не почитаешь.

Еще одно приятное ощущение, это величина экрана. Последнее время весь худ. лит. читал либо с КПК, либо с Nokia N800, с одной стороны, для художественных книжек экранчик там вроде бы вполне достаточный, но есть одно существенное "но". Которое я прочувствовал после перехода на 9.7'' kindl-а. Как не крути, а даже на 4'' экране Nokia убирается достаточно мало текста, и чтение становится "рваным" за счет постоянного перелистывания. На kindle вернулись старые ощущения от чтения книжек. И ощущения эти сильно порадовали.

Перед покупкой сильно пугали рассказы о долгом перелистывании страниц на e-ink. Как по мне, так вообще не замечаю (для pdf накладывается то, что сама страница может рендерится достаточно долго, но пока тоже никаких неприятных ощущений по этому поводу не испытал).

Так что несомненно девайс прекрасен.

О минусах.


Главный минус в том, что поддержка pdf оставляет желать лучшего. Есть несколько проблем. Во-первых, рендерер откровенно хреновый, т.е. A4 книжки в портретном режиме читать тяжко, буквы мелкие, и шрифты рендерятся отвратно. Насколько я могу судить, связано это с тем что используется черно-белое изображение, вместо градаций серого, от этого буквы куцые и читать тяжко, т.е. на той же Nokia N800 при нормальном рендере, буквы такого же физического размера читаются легче.

Но это не шибко страшно, т.к. в ландскейпе уже и A4 документы читаются вполне хорошо. Правда здесь возникает другая проблема, связанная со слабой поддержкой pdf, а именно иногда, чтобы перейти к следующей странице надо три перелистывания, причем после второго на экране будет низ страницы в полсантиметра на котором уже ничего не написано.

На самом деле есть масса вариантов как сделать просмотр pdf более удобным, даже просто возможность выставить масштаб уже решит массу проблем (хотя и привнесет новые, надо будет как-то двигать просматриваемый кусок страницы по экрану). Но совершенно понятно, что amazon-у, который зарабатывает продажей книг и отнюдь не в pdf, все это не надо, ибо денег не принесет.

Есть еще одна мелкая проблема, это невозможность в pdf ходить по внутренним ссылкам и это уже сильно грустно, ибо здесь особых сложностей в разработке нету (учитывая опыт в написании pdf читалок, я это могу утверждать со всей определенностью).

Кстати, получение kindl-a подвигло меня, таки заделать JBIG2 энкодер для картинок, теперь, у меня из djvu получаются pdf практически такого же размера, но про это напишу отдельно, если будет задор

Еще один минус (а может и не минус). Документы, загруженные на устройство, показываются одноуровневым списком. Т.е. по папочкам ничего не разложишь. Собственно, меня это не шибко чтобы трогало, потому что в любом случае, одновременно, читается максимум десяток книг (пара художественных, всяких спецификаций пяток, и еще пару чего-нибудь эдакого из математики). С другой стороны, наличие возможности разложить книжки по папкам несомненный плюс, а вот отсутствие явный минус. И в чем смысл делать так, а не иначе я не очень понимаю.

Форматы документов.


Устройство читает файлы mobi (это компрессованный и обернутый html с некоторыми доп. фичами и возможностью сделать оглавление), azw (насколько я понимаю это тот же mobi) и PDF. Список вроде как скудный, но вполне достаточный (т.е. меня, например, отсутствие djvu, epub, fb2 и прочего не шибко напрягает, хотя почему выбран mobi, а не epub сложно сказать). Т.е. по одному представителю двух основных классов электронных документов.

Для создание mobi файлов из всего чего только можно, я себе поставил Calibre. То еще неповоротливое чудовище, но с работой справляется, так что жить можно. Будет время, набросаю свой генератор mobi, и от Calibre избавлюсь (хотя есть в ней пара интересных фич по работе с rss).


Про русский язык.


Кириллические шрифты на устройстве отсутствуют. Таким образом, "из коробки" читать mobi файлы на русском языке не получится (да и в списке именованные по-русски файлы будут отображаться как набор квадратов). Опять же сказывается заточенность amazon-а на продажу контента, а он насколько я могу судить у них в основном на английском, соответственно кириллический набор в шрифтах им как бы не нужен, ну и его потому и нет.

Проблему эту, добрые люди решили, выпустив апдейт с набор нужных шрифтов. Поискать его можно на the-ebook. Без этого апдейта, по-русски можно будет читать только документы pdf, с внедренными шрифтами. Себе я такой апдейт поставил - все прекрасно работает.

Про батарейку.


Прочитал за пару-тройку недель уже страниц 500 в mobi и столько же в pdf, с полного заряда съелась половина. Т.е. не знаю, сколько будет с одного заряда страниц. Но пока претензий к энергосбережению нет.