четверг, 18 ноября 2010 г.

Конвертация tiff в pdf

Иногда возникает необходимость конвертировать многостраничный tiff-файл в какой-либо другой формат. Но некоторые программы сканирования создают tiff с ошибками:
- отсутствует тэк Photometric Interpretation, определяющий используемую цветовую модель, подробности ниже;
- первая страница сделана в более низком разрешении, чем остальные

Здесь нам приходит на помощь утилита tiffset, находящаяся в пакете libtiff-tools. Устанавливается этот пакет обычным способом:

# aptitude install libtiff-tools

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

При редактировании нас будут интересовать следующие поля:

262     0x0106     PhotometricInterpretation     Используемая цветовая модель.
282     0x011A     XResolution     Количество пикселей в ResolutionUnit строки.
283     0x011B     YResolution     Количество пикселей в ResolutionUnit столбца.

Первое поле сканирующие программы зачастую просто пропускают. Программы просмотра изображений используют по умолчанию значение 1, но программы преобразования ругаются на его отсутствие.
XResolution и YResolution - поля, определяющие количество точек на ResolutionUnit, как правило - на дюйм. Часто встречаются многостраничные tiff-файлы, в которых первая страница имеет разрешение 300x300, а все остальные - 96x96. Почему так получается - я не знаю.

Чтобы изменить значение тэга, нужно выполнить следующую команду:

$tiffset -s <идентификатор тэга> <присваимое значение> <имя файла>

Например, чтобы изменить цветовую модель, нужно выполнить следующую команду:

$tiffset -s 262 1 image.tif

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

$tiffsplit image.tif

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

$for file in `ls xaa*.tif`; do tiffset -s 262 1 $file; done

Объединить несколько файлов в один можно с помощью команды tiffcp:

$tiffcp *.tif newfile.tif

Теперь полученный файл можно преобразовать, например, в pdf:

$tiff2pdf newfile.tif > newfile.pdf

В данной команде используется оператор перенаправления вывода ">", так как программа tiff2pdf выводит полученные двоичные данные на стандартный вывод

Комментариев нет:

Отправить комментарий