Ru-Board.club
← Вернуться в раздел «Программы»

» Sumatra PDF / SumatraPDF

Автор: Krot66
Дата сообщения: 10.02.2016 14:59
Простучал бы кто-нибудь автору насчет форматирования в fb2. Половина стихотворных книг отображается в прозе

Автор: VictorVG2
Дата сообщения: 10.02.2016 15:43
Krot66

Если вы сможете подготовить скриншоты и методику проверки ошибки - можно попробовать. Иначе ребята попросят уточнения, а что им сказать? Нужно дать что-то из чего им станет понятно что и где править, тогда шансы есть, иначе В морг!©zg.
Автор: antabu
Дата сообщения: 10.02.2016 16:38

Цитата:
на древней htm2chm 3.0.9.3
Пробовал пользоваться - не понравилось. По мне удобнее и гибче коммандерный плагин CHMDir. Наверное, с полтыщи документов собрано им, причём с кириллическими именами .html , а баг обнаружил только вчера. И что мне теперь, все перебирать заново?
А с картинками другая фигня. С целью уменьшить вес приходится оптимизировать форматы и цветность из первоисточника между .jpg, .png и .gif. пакетной обработкой. А затем, чтобы не возиться со ссылкой на каждый рисунок, в исходном .html удаляются все расширения.
В винде такие, без расширения, и с кириллицей (в .chm) открываются без проблем.

Автор: VictorVG2
Дата сообщения: 10.02.2016 17:07
antabu

Ну, я TC как-то не пользуюсь, а зову эту тулзу через mc в вине когда работаю в основной ОС (демон), или если в винде (эта у меня в вирталбоксе крутится), то через ПКМ из Far, а ТС у меня за четверть века (я с ним ещё в 89-м(?) примерно встретился когда он звался Windows Commander) так и не прижился.

Что до расширений (в терминах UNIX протоколов) - ОС распаковывает контейнер в ОЗУ, и в фоне запускается движок IE который читает HTML файл из контейнера, а при отсутствии расширения графического файла в теге вызывает MIME/Type детектор и тот, если формат опознан вызывает его обработчик, а CHMEngine в суматре выполняет разбор HTML-файла внутри CHM-контейнера строго в соответствии со спецификациями W3C HTML , и если в тэге <img> файл указан без расширения, то вместо него выводится заглушка "Не известный тип файла", так что тут проявляется ошибка неверных исходных предпосылок выбранных при создании документа .
Автор: uaixovich
Дата сообщения: 10.02.2016 17:36

Цитата:
Вряд ли получится комфортно


Цитата:
Вот выключение средствами Autohotkey

спасибо, работает.

Автор: Krot66
Дата сообщения: 10.02.2016 19:13
VictorVG2
Вот здесь лежит полдюжины стихотворных книг, самых школьных и из уважаемых библиотек (из сотен таких книг номально не отображаются процентов 60-70, если не больше). В архив включены английские версии AlReader, CoolReader и STDUViewer, показывающие их как надо. В каких-то скриншотах здесь едва ли есть нужда, т.к. поэзия от собранных в абзацы строк отличается довольно зримо, что по русски, что по польски
Автор: Skif_off
Дата сообщения: 10.02.2016 19:52
VictorVG2
Смотрю https://github.com/sumatrapdfreader/sumatrapdf/blob/master/src/EbookFormatter.cpp

Код: void Fb2Formatter::HandleHtmlTag(HtmlToken *t)
Автор: VictorVG2
Дата сообщения: 10.02.2016 20:39
Krot66

Так баг-репорт на гит с парой-тройкой скриншотов и книгой-другой примером в Zip. Тогда есть шанс что поправят, а мне там лишний раз пока репортить не стоит.

Skif_off

Ну что мы хотим коли сама разметка FB2 создана по принципу кто в лес, кто по дрова.
Автор: Krot66
Дата сообщения: 10.02.2016 21:07
VictorVG2
Вот - два файла-образца и по два скриншота (правильный и неправильный) к каждому с одного и того же места
Автор: Skif_off
Дата сообщения: 10.02.2016 21:08
VictorVG2
Не, она не так уж и плоха Да, не без недостатков. Думаю, просто разрабы не в курсе деталей и того, как оформляется поэзия,
Читать <v></v> как <p></p> - самое очевидно решение в рамках существующей _базовой_ поддержки FB2


Цитата:
Так баг-репорт на гит с парой-тройкой скриншотов и книгой-другой примером в Zip.

Там пары-тройки не нужно, достаточно [more=сохранить это]

Код: <?xml version="1.0" encoding="utf-8" ?>
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.1" xmlns:l="http://www.w3.org/1999/xlink">
<description>
<title-info>
<genre>reference</genre>
<author>
<nickname>x</nickname>
</author>
<book-title>Poetry</book-title>
<annotation>
<p>Test-file for poetry</p>
</annotation>
<lang>en</lang>
</title-info>
<document-info>
<author>
<nickname>x</nickname>
</author>
</document-info>
</description>

<body>
<title>
<p>Poetry's tags</p>
</title>
<section>
<title>
<p>For example</p>
</title>
<p>Max</p>
<poem>
<title>
<p>The End</p>
</title>
<stanza>
<v>This is the end</v>
<v>Beautiful friend</v>
<v>This is the end</v>
<v>My only friend, the end</v>
</stanza>
<stanza>
<v>Of our elaborate plans, the end</v>
<v>Of everything that stands, the end</v>
<v>No safety or surprise, the end</v>
<v>I'll never look into your eyes...again</v>
</stanza>
<text-author>The Doors</text-author>
</poem>
<p>Min</p>
<poem>
<stanza>
<v>This is the end</v>
<v>Beautiful friend</v>
<v>This is the end</v>
<v>My only friend, the end</v>
</stanza>
<stanza>
<v>Of our elaborate plans, the end</v>
<v>Of everything that stands, the end</v>
<v>No safety or surprise, the end</v>
<v>I'll never look into your eyes...again</v>
</stanza>
</poem>
</section>
</body>
</FictionBook>
Автор: antabu
Дата сообщения: 11.02.2016 10:02
VictorVG2
Бог с ними, с расширениями картинок, таких файлов у меня не так много. но на будущее учту.
А что делать с кириллицей в именах .htm внутри .chm ? Пример такого файла: http://chemistry-chemists.com/forum/download/file.php?id=52228
Прошу прощения, почему-то файл по ссылке скачивается с расширением .pdf. Следует заменить на .chm.
Автор: VictorVG2
Дата сообщения: 11.02.2016 13:21
antabu

Самое простое решение - переименовать в латиницу. Я с этим когда-то встретился на BSD UNIX - реально на Win кириллица это пёстрая смесь из доброго десятка кодировок которые могут использоваться в одной оси и тогда писал специальную инструкцию как решить сию задачу в PC-BSD 7 - Russian_on_PC-BSD7_Final.htm. Дело в том, что системы разработки исторически в основном основаны на латинице и с другими алфавитами нужны специальные приёмы обеспечивающие их поддержку на уровне машинного кода. Так что разумнее просто перекодировка и правка ссылок в тексте, благо FB2 по большому счёту это просто текст который не столь и сложно поправить.
Автор: antabu
Дата сообщения: 11.02.2016 17:35
В приведённом файле оказалось достаточным переименовать .htm, а папку с картинками и ссылки на них переделывать не пришлось.
Автор: VictorVG2
Дата сообщения: 11.02.2016 18:16
antabu

Так всё в его имя упирается.
Автор: SERG691018
Дата сообщения: 12.02.2016 09:05
Обновился с версии 3 до 3.1.1. При запуске суматры сообщение "точка входа в процедуру GetProcessHandleFromHwnd не найдена в библиотеке dll oleacc.dll " операциока windows xp
Автор: antabu
Дата сообщения: 12.02.2016 10:08

Цитата:
...реально на Win кириллица это пёстрая смесь из доброго десятка кодировок которые могут использоваться в одной оси и тогда писал специальную инструкцию как решить сию задачу в PC-BSD 7 - Russian_on_PC-BSD7_Final.htm. Дело в том, что системы разработки исторически в основном основаны на латинице и с другими алфавитами нужны специальные приёмы обеспечивающие их поддержку на уровне машинного кода. Так что разумнее просто перекодировка и правка ссылок в тексте...

Так, давайте по порядку.
Sumatra PDF - вьювер для просмотра, в т.ч. файлов .chm, работающий под Windows, предполагающей имена файлов в кодировке 1251.
Тут выяснилось, что если внутри контейнера имя файла .htm(L) содержит символы из второй половины таблицы, то такой .chm программой не открывается.
В чём я неправ?
Автор: ItsJustMe
Дата сообщения: 12.02.2016 12:51
Skif_off
Благодаря вашим изысканиям по вашему рецепту попробовал добавить замену v -> p. Не знаю, работает ли, но предложенные fb2 выглядят по мне вполне читабельно.
А так как никто не выложил скрины, как они выглядят и как они должны выглядеть, мне сравнить не с чем.
http://hostingkartinok.com/show-image.php?id=0ddd951a5bc5ef01bcc675e6bce1ed93
Автор: VictorVG2
Дата сообщения: 12.02.2016 14:38
antabu

ОС внутри вообще-то в UTF-16 LE работает, и имена файлов к примеру консоли могут быть переданы в СР-866 (ANSI), CP-1251 (ASCII), CP-10007 (MAC), UTF-8/UTF-16 LE (UNICODE) для русской версии ОС в зависимости от командного процессора. Сессия CMD вообще использует CP-866 и для преобразования приходится звать функции API типа Utf8ToUtf16(), Utf16ToUtf8(), MultiByteToWideChar(t1251, 1251) и им подобные. Так что ваше предположение ошибочно.

Добавлено:
Вот вам пример Lua скрипта преобразующего кодовые страницы при вставке кривого текста из буфера обмена винды:

Цитата:
-- shmuz, 02:30 28-10-2015 http://forum.ru-board.com/topic.cgi?forum=5&topic=31718&start=7820#21
-- updated VictorVG @ VikSoft.ru Wed Oct 28 03:43:44 +0300 2015

Macro { area="Common"; key="ShiftIns"; description="Вставка кривого юникода из буфера обмена";
action = function()
local text = win.Utf8ToUtf16(mf.clip(0))
local ansi7, ucs2 = true, false

local t1251 = string.gsub(text, "(.)(.)", function(a,b)
if string.byte(a) > 127 then ansi7 = false end
if string.byte(b) ~= 0 then ucs2 = true end
return a
end)

if not ansi7 and not ucs2 then
text = win.Utf16ToUtf8(win.MultiByteToWideChar(t1251, 1251))
mf.clip(1, text)
print(text)
else
Keys('ShiftIns')
end
end;
}

так что без использования специальных приёмов работы можно т-а-а--кое получить .... мало не покажется.
Автор: Skif_off
Дата сообщения: 12.02.2016 15:22
ItsJustMe

Цитата:
попробовал добавить замену v -> p

В смысле - правка исходников SumatraPDF? Или *.fb2? Второй вариант не корректен, если остаются poem и stanza: нарушение схемы, FictionBook Editor, например, не откроет. И вообще не очень красивый
Лучше сюда написать

Добавлено:
В общем, написал. С английским у меня не очень.
Автор: ItsJustMe
Дата сообщения: 13.02.2016 01:43
Skif_off

Цитата:
В смысле - правка исходников SumatraPDF?

Ну да, а что же еще?
Автор: Skif_off
Дата сообщения: 13.02.2016 02:28
ItsJustMe

Цитата:
Ну да, а что же еще?

Я не знаю, можно и книги править, выкусив элементы поэзии регялярками Ник знакомый, но не вспомнил.
А text-author внутри poem никуда не уезжает? В выложенных выше файлах вряд ли будет text-author, пример файла можно взять здесь.
Можно бинарник и патч? Любопытно взглянуть, а с issues неизвестно, когда что будет.
Автор: VictorVG2
Дата сообщения: 13.02.2016 03:08
Skif_off

Видел, и так же не скажу когда и какой ответ будет - по идее там возни прилично, а есть ещё и старые баги правки для которых так и не придумали...
Автор: ItsJustMe
Дата сообщения: 13.02.2016 06:07
Skif_off

Цитата:
можно и книги править, выкусив элементы поэзии регялярками

Можно, конечно. Но мне было интересно, можно ли малыми усилиями сделать "лучше, чем было".

Цитата:
А text-author внутри poem никуда не уезжает?

Вот, не знаю. Я вообще редко сабжем пользуюсь, и описанная проблема мне, естественно, встретилась впервые. Я выложил скрин, как оно выглядит. Понятия не имею, как оно выглядело до, так как я сначала добавил, потом открыл.
Ладно, вы меня убедили, ща гляну.
Посмотрел. Без - хуже.
Так что, если придумаете, что делать с poem и stanza, можно будет попробовать добавить и их.

btw, ваш Test file выглядит так:
http://hostingkartinok.com/show-image.php?id=a915168a707da9193d2e1a68bd91b1c6
Автор: Skif_off
Дата сообщения: 13.02.2016 11:29
VictorVG2

Цитата:
Видел, и так же не скажу когда и какой ответ будет - по идее там возни прилично

Я не программист, пишу удобняшки на AutoIt, немного (с гуглом подчас) могу немного понять, что происходит в С/дельфи/лазарус, если знаю, что ищу, мне сложно оценить Вижу, что преобразование fb2->html идёт в void Fb2Formatter::HandleHtmlTag(HtmlToken *t), подумал, что можно по аналогии с epigraph, вроде простенько:

Код: else if (t->NameIs("epigraph"))
HandleTagAsHtml(t, "blockquote");
Автор: ItsJustMe
Дата сообщения: 13.02.2016 15:19

Цитата:
poem -> blockquote

Учитывая, что v находится внутри poem, то p внутри blockquote, полагаю, будет не очень.
Автор: Skif_off
Дата сообщения: 13.02.2016 15:33
ItsJustMe
Почему? Разве в HTML недопустимо

Код: <blockquote>
<p>text</p>
<p>text</p>
</blockquote>
Автор: ItsJustMe
Дата сообщения: 14.02.2016 10:42
Skif_off
Да, повозился я тут с этой SumatraPDF... И зачем только? Дурная голова рукам покоя не дает, видимо...
В общем, все сделал как предложено, только я заменяю не poem, а stanza на blockquote.
Вот, что получилось в результате добавления 2 строчек кода:
http://hostingkartinok.com/show-image.php?id=af047958fe362afc1917c39818132b24
Автор: Skif_off
Дата сообщения: 14.02.2016 12:22
ItsJustMe

Цитата:
только я заменяю не poem, а stanza

Согласен, так лучше - сохраняется разбиение на строфы. К тому же stanza обязательный элемент poem, а значит будет раюотать всегда.

Можно увидеть патч с вашими правками? Или, может быть, вы сами напишете на гитхабе?
Думаю, если есть готовое рабочее решение, то больше шансов, что фича появится в обозримом будущем.

Добавлено:
P.S. Исправил на гитхабе poem -> stanza.
Автор: ItsJustMe
Дата сообщения: 14.02.2016 16:43
Skif_off

Цитата:
Можно увидеть патч с вашими правками?

Можно, конечно. Только эти правки более ваши, чем мои. Вы и сами написали, где и что нужно добавить, я ничего нового тут не придумал.

Примерно так:

Код: else if (t->NameIs("stanza"))
HandleTagAsHtml(t, "blockquote");
else if (t->NameIs("v"))
HandleTagAsHtml(t, "p");
Автор: Skif_off
Дата сообщения: 14.02.2016 18:01
ItsJustMe
У меня не заработало, без ошибок собрал в Visual Studio 2015 Free Community edition.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748

Предыдущая тема: c$


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.