Новая подверсия:
DjVu Imager v2.3http://www.djvu-soft.narod.ru/soft/djvu_imager_v2_3.rar (1,17 МБ)
Исходники:
http://www.djvu-soft.narod.ru/soft/djvu_imager_v2_3_src.rar (77 КБ)
Что нового:
Новая подверсия исправляет 2 глюка, оба связаны с такими страницами, где на чисто белый лист вставляется иллюстрация:
- Теперь на таких страницах корректируется флаг ориентации (если было 0, то ставится 1). Ранее такая коррекция осуществлялась только в случае, когда на страницу с текстом вклеивалась иллюстрация.
- Изменён сам принцип вклейки иллюстраций на чисто белые страницы: ранее это делалось просто подсовыванием DjVu-иллюстрации под сборку во время djvmcvt. Это оказалось неправильным - уже готовые DjVu-книги со вклеенными по такому принципу иллюстрациями не открывались в DjVu Reader 2.0.0.26 - вываливалась ошибка (а в DjVu Reader 2.0.0.20 - открывались, и отображались без малейших проблем).
Теперь DjVu-иллюстрация разбирается, из неё извлекается BG44-чанк, он подсовывается на djvumake, там собирается назад в DjVu-страницу - и только она уже подаётся на djvmcvt.
Для иллюстрации проблемы я сделал пример:
http://www.djvu-soft.narod.ru/scan/djvu_reader_problem_files.rar (211 КБ)
Там внутри 2 файла: good.djvu - открывается в DjVu Reader 2.0.0.26 (файл был получен при помощи Document Express Professional 6) и bad.djvu - не открывается в DjVu Reader 2.0.0.26 - вызывая ошибку-исключение (файл был получен при помощи DjVu Imager v2.2 или ранее).
Таким образом, все DjVu-книги, куда были вклеены иллюстрации посредством DjVu Imager v2.2 и меньше, будут "вылетать" с ошибкой при открытии их в DjVu Reader 2.0.0.26 (а в DjVu Reader 2.0.0.20 будут без проблем открываться) - в случае, если там есть чисто белые листы, куда были вклеены иллюстрации. Примером таких файлов и служит bad.djvu.
Эти "нехорошие" DjVu-книги можно поправить - по крайней мере, через Document Express Professional 6 (ручная удаление-вставка чисто белых листов, куда были вклеены иллюстрации).
Утилита djvudump тоже вываливается с ошибкой при попытке обработать bad.djvu:
djvudumpm bad.djvu bad.txt
*** ** Unrecognized DjVu Message:
** Message name: ♥IFFByteStream.corrupt_mangled
*** (D:\djvulibre-3.5.17\libdjvu\IFFByteStream.cpp:232)
В общем, проблема в том, что я не знаю пока, чем отличаются good.djvu и bad.djvu. Буду разбираться - неплохо бы найти способ поисправлять все "ошибочные" DjVu-книги.