Я предложил Леону Боту модифицировать ddjvu - так, чтобы она могла декодировать в т.ч. и битые DjVu-файлы - т.е. такие, где есть одна или больше битых страниц (а остальные страницы - нормальные).
Сейчас ddjvu просто прекращает декодирование, когда встречает битую страницу - и следующие за битой нормальные страницы остаются недекодированными. Я предложил Леону выводить белый лист - в случае если нам попадается битая страница.
Леон ответил мне следующее:
Well, if the file is broken, it should be corrected.
I believe that making ddjvu silently replace broken pages by white pages is wrong.
Assuming page 7 and 36 are broken, you can always do something like "ddjvu
--page=1-6,8-35,37-9999 error.djvu".
- L.
То есть, Леону эта идея не понравилась.
Но мне тоже не нравится вариант от Леона. Он предлагает при декодировании просто задавать диапазоны правильных страниц. Кто это будет в реальности делать? Это же нужно будет вручную как-то определить номера битых страниц. Это очень непрактичное решение.
У меня возникла иная идея: выводить не белые страницы вместо битых, а ... чёрные. Но Леону и это явно не понравилось - он промолчал в ответ.
Честно говоря, битые DjVu-страницы встречаются в жизни исключительно редко. Почти никогда. Но всё же бывают.
В общем, я решил сделать самому такой функционал в fi_ddjvu.
Кстати, кроме битых страниц, есть ещё и особенный случай пустых DjVu-страниц. Такие страницы содержат лишь только INFO-чанк - и больше ничего. Такие страницы создаёт documenttodjvu из чисто белых сканов. Забавно, что djvudecode (в том же DjVu Small) не умеет декодировать такие пустые DjVu-страницы - вываливается с ошибкой. А вот ddjvu (с относительно недавних пор) умеет (в MiniDjVu Plus том же) их декодировать (правда, с руганью "malformed DjVu page") - в чисто белые листы.
Так что у меня fi_ddjvu будет декодировать пустые DjVu-страницы в белые листы, а битые DjVu-страницы - в чёрные листы. Можно было бы ещё больше извратиться - допустим, для битых страниц выдавать белые листы, перечёркнутые крест-накрест по диагонали - но это было бы уже слишком.

Думаю, хватит (для понятности) и чёрных листов.