Преобразование файлов в другие форматы в Linux
АрхивПолезняшки (архив)Краткое описание некоторых популярных программ служащих для преобразования файлов различных форматов.
Очень часто при работе с файлами приходится преобразовывать их в другой формат. Особенно этот вопрос актуален для пользователей Linux, потому что в этой системе еще со времен первых Unix'ов сложились свои форматы файлов и при переносе их на компьютеры работающие под управлением Windows возникает проблема работы с файлами этих форматов, которая решается как правилом путем поиска соответствующих программ просмотра. Как вы понимаете, данный вариант не всегда приемлем, так как нужную программу еще надо найти, и еще не будешь же таскать все эти программы с собой и устанавливать на каждом компьютере. Самый простой вариант решения этой проблемы это преобразовать файлы к требуемому формату, который может быть прочитан на нужном компьютере.
В данной статье будут рассмотрены варианты преобразования только текстовых файлов из одного формата в другой, не будет затронуты вопросы преобразования графических, звуковых файлов и варианты преобразования с одного языка программирования на другой. Хочу еще предупредить, что все эти программы консольные. Что, отстой! Кричат некоторые пользователи. Да, я в принципе согласен, недостатки на лицо. Необходимо помнить не только название программы (впрочем, не совсем так, автодополнение в bash еще ни кто не отменял), но и различные параметры и опции. Но, есть и положительные стороны. К ним относится малый размер программ, малое время загрузки в оперативную память, отсюда и меньшее время выполнения, отсюда и меньшие требования к системным ресурсам (не у всех же Атлоны и четвертые пеньки).
А еще представьте такую ситуацию, что вам надо преобразовать сразу несколько файлов и еще сменить некоторые параметры, вручную через «Сохранить как …» не совсем удобно да и время, понимаете ли, а в консоли это возможно. Также в программах большинство опций унифицировано, и запомнив параметры одной, научится работать в аналогичной не составит большого труда. И еще, практически все рассмотренные программы входят в стандартную поставку так, что искать их по Интернету не придется.
Итак, по порядку. С первой проблемой с которой я столкнулся была необходимость перенести документ в формате PostScript на компьютер работающий под Windows с этого пожалуй и начнем. Итак, первая программа вызывается gs. Просто набрав данную команду с названием файла с расширением ps вы можете просто просмотреть указанный файл, а добавив опцию sDEVICE=<devname> можно преобразовать в другой формат или подготовить файл для выдачи на принтер определенной марки, а с помощью опции sOutputFile= , как вы поняли можно указать имя выходного файла. Вот так можно конвертировать файл PostScript в рисунок с расширением bmp. gs -sDEVICE=bmp16m -sOutputFile=test.bmp test.ps . Для преобразования из ps в pdf формат существуют программы специально для этого предназначенные. Они так и вызываются ps2pdf. Причем существуют несколько программ. ps2pdf – по умолчанию преобразует в формат pdf 1.2 (Acrobat 3.0 и выше) который можно сменить используя опцию -dCompatibility=1.x. Напомню, что максимальный 1.4 используется в Adobe Acrobat 5.0. Если сразу захотите задать формат, то можно воспользоваться программами ps2pdf12 или ps2pdf13. Формат вызова программы такой ps2pdf13 input.ps output.pdf , если вместо имени файла используется тире «-» то в качестве входного (выходного) файла используется стандартный ввод (вывод). Кроме этого существует множество аналогичных программ для конвертирования в другие форматы, например ps2ascii.
Следующий формат с которым часто придется сталкиваться в Linux это
SGML. Для того чтобы вы могли его преобразовать необходимо установить
пакет linuxdoc. Так как сам формат наиболее близок к HTML, то к нему и будем
по началу преобразовывать. Формат вызова команды такой:
# linuxdoc --bakend=format(html, rtf, text ...) --papersize=size --language=ru file_name.sgml
Я думаю, что приведенные параметры очевидны. Чтобы упростить жизнь
юзеру и здесь есть отдельные команды для преобразования к тому или иному
формату. Например, следующая команда конвертирует из SGML в HTML.
sgml2html file_name.sgml
А с помощью опции -I – в создаваемые файлы, можно добавить ссылку на
файлы изображения (next, prev, toc), которые копируются с каталога
/usr/share/linuxdoc-tools/icons/ (рис.1) в текущий.
А чтобы преобразовать в формат pdf выполните следующую команду:
sgml2latex --output=pdf file_name.sgml
причем в образованном файле будут работать все имеющиеся гиперссылки.
Следующие программы предназначены для конвертирования документов
набранных в формате MS Word (.doc) в другие форматы. Они будут доступны
если у вас установлен пакет wv.
После установки пакета
будут доступны несколько программ предназначенных для преобразования в
разные форматы. Набрав в командной строке wvVersion file_name.doc можно
узнать к какой версии Word принадлежит документ. Команда
wvHtml --charset=koi8-r test.doc test.html
, как вы уже поняли, перегоняет документ Word в
html-файл и устанавливает для него кодировку koi8-r. Причем программа вполне
корректно переносит таблицы и в некоторых файлах генерирует не так уж много
мусора. Добавив опцию --password=password, можно преобразовывать файлы
закрытые паролем.
Работу с другими форматами я думаю, разберете сами.
Следующая программа немного выпадает из общего плана, но полезность
ее очевидна. Это программа iconv, входящая в пакет glibs любого дистрибутива,
назначение которой перекодирования текстовых файлов с одной кодировки в
другую. Формат вызова программы такой
iconv -f исходная_кодировка -t необходимая_кодировка old_file < new_file ,
где возможные варианты кодировок можно узнать запустив программу с опцией --list. Например самая популярная задача по перекодировке выглядит так
iconv -f WINDOWS-1251 -t KOI8R cp1251.txt > koi8r.txt
Cледующая программа antiword предназначена для преобразования документов в формате Word 6, 7, 97 и 2000 в текстовый или файл формата PostScript. После установки программы (make all, make install) создайте в домашнем каталоге подкаталог .antiword (именно с точкой) и перенесите в него все файлы из каталога Resources который находится в каталоге в котором вы распаковали исходные тексты программы. Теперь с помощью вызова antiword -t -m cp1251.txt test.doc можно вывести на терминал содержимое файла test.doc, причем программа вполне корректно (как это вообще возможно на терминале) отображает как содержимое самого файла со всеми элементами форматирования так и таблицы. Если файл находится в кодировке koi8-r то опцией -m необходимо подключить файл koi8-r.txt. Если есть необходимость конвертировать Word'овский файл в формат PostScript воспользуйтесь следующей командой antiword -p a4 -m koi8-r.txt text.doc > 1.ps т.е. добавили размер страницы (доступны еще форматы letter и legal). Кстати при использовании данной программы вам нечего боятся макровирусов они попросту не будут работать.
И напоследок вкратце упомяну об очень мощной утилите a2ps с помощью
которой можно подготовить документ к выводу на печать в формате PostScript
или в файл. Опций у программы большое количество о некоторых я расскажу.
Представьте себе такую ситуацию вы как прогрессивный человек
написали себе шпору на экзамен (заметки на лекцию) на компьютере, но
естественно в формате А4 нести ее с собой я бы сказал не совсем удобно. Для этого
надо уменьшить шрифт и разбить на маленькие части. Для этого выполняем
такую команду
a2ps --columns=4 --font-size=10 -j -encoding=koi8 shpora.txt -o shpora.ps
что мы сделали, установили количество колонок текста равным четырем, размер
шрифта – 10, параметр -j означает рамку вокруг текста, указали необходимую
кодировку, исходный файл и с помощью флага -о выходной, результат
посмотрите на рисунке. Опций как я уже говорил много и с помощью них с
исходным файлом можно проделать практически все чего душа пожелает.
Вот мы кратко рассмотрели некоторые программы для работы с текстовыми файлами в Linux. Сразу скажу я не старался рассказать обо всех подобных программах по причине их большого разнообразия, а только о наиболее часто мной используемых. Более подробную информацию можно узнать запустив соответствующий man или команду с опцией --help, а лучше оба варианта, я заметил, что информация, выводимая при этом, иногда может отличаться. Успехов.