Преобразование файлов в другие форматы в Linux
Автор: Сергей Яремчук, grinder@ua.fm
Опубликовано: 27.11.2002
© 2002, Издательский дом «КОМПЬЮТЕРРА» | http://www.computerra.ru/
Журнал «СОФТЕРРА» | http://www.softerra.ru/
Этот материал Вы всегда сможете найти по его постоянному адресу: http://www.softerra.ru/util/22068/
Краткое резюме:
PS (PostScript) в BMP: gs -sDEVICE=bmp16m -sOutputFile=test.bmp test.ps PS в TXT a2ps --columns=4 --font-size=10 -j -encoding=koi8 shpora.txt -o shpora.ps или ps2pdf ps2ascii
SGML в HTML, RTF, TXT: linuxdoc --bakend=format(html, rtf, text ...) --papersize=size --language=ru file_name.sgml или sgml2html file_name.sgml
SGML в PDF: gml2latex --output=pdf file_name.sgml
DOC в HTML: wvHtml --charset=koi8-r test.doc test.html
Перекодировка из WINDOWS-1251 в KOI8R: iconv -f WINDOWS-1251 -t KOI8R cp1251.txt > koi8r.txt
Очень часто при работе с файлами приходится преобразовывать их в другой формат. Особенно этот вопрос актуален для пользователей 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) в другие форматы. Они будут доступны если у вас установлен пакет . После установки пакета будут доступны несколько программ предназначенных для преобразования в разные форматы. Набрав в командной строке 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, а лучше оба варианта, я заметил, что информация, выводимая при этом, иногда может отличаться. Успехов.
Телефон редакции: (095) 232-2261
E-mail редакции: inform@softerra.ru
По вопросам размещения рекламы обращаться к Алене Шагиной по телефону +7 (095) 232-2263 или электронной почте reclama@computerra.ru