.korpse
Казалось бы, всё просто, даже готовые программы есть для этого. Но есть одно "но":
1. печать в pdf, которая есть в гноме, съедает всю память, после чего система виснет
2. печать на cups pdf printer приводит к тому же результату
3. утилита djvu2pdf - аналогично
4. jpeg2pdf, которая написана на ruby, вообще не запускается из-за внезапного появления двоичных символов в коде
5. даже в винде печать на pdf принтер заканчивается созданием документа с ~100 страницами и ошибками.
С маленькими pdf-ками всё хорошо, а вот с большими.. В моём случае это были 916 страниц книги Олифера по компьютерным сетям.

Как будем конвертить?
1. с помощью djvm из комплекта djvulibre определяем число страниц
2. с помощью ddjvu из комплекта djvulibre вытаскиваем каждую страницу в формате tiff. DJVU файл размером 45.5Мб внезапно распаковывается в 5Гб картинок.
3. с помощью imagemagick (плагин php-imagick) пережимаем картинки, уменьшая их размер до 800 пикселей по ширине страницы и попутно сохраняя в jpeg. Получаем 276.1Мб файликов.
4. с помощью java-библиотеки itext создаём pdf-ку, состоящую из всех наших картинок. Получаем 276.6Мб, почти в 6 раз больше, чем оригинал.

Если пережимать с ограничением 600х800 (вместо 800х??), получим где-то 64Мб

Первые три пункта делает скрипт на php, последние - короткая прога на джаве. По непонятным причинам интерпретатор php падает с ошибкой сегментирования после завершения работы скрипта, но скрипт, разумеется, свою работу сделать успевает. Причина вызвана использованием ресайза в imagick.

Скачать можно из SVN: