Опубликован: 24.07.2006 | Уровень: для всех | Доступ: свободно
Лекция 13:

Программы для работы с текстом

Пакет WordViewer

Как уже говорилось выше, одна из самых больших проблем для пользователей Linux - это работа с файлами в форматах MS Word (и других программ из пакета MS Office). Ведь пока что большинство текстов создается именно в этом формате. Наиболее распространенное средство просмотра таких файлов, - это программа (точнее библиотека программ) wv, которая раньше носила более полное название mswordview.

Библиотека wv предназначена для получения доступа к файлам форматов MS Word 2000, 97, 95 и 6 из операционных систем типа UNIX, в частности из Linux. В состав дистрибутива ALT Linux Junior 1.0 включена версия 0.6.5 этого пакета, авторами которого являются Dom Lachowicz и Caolan McNamara (первый разработчик). Если у вас этот пакет не установлен, вы можете найти его на сайте http://www.wvware.com.

Идея, реализованная в этом пакете, очень проста: раз мы не имеем средств для просмотра файлов в формате MS Word, то давайте преобразуем текст из этих файлов в какой-то открытый формат. В качестве последнего можно выбрать один из следующих форматов: HTML, PS, PDF, LaTex, DVI (формат издательской системы TEX), ABW (формат текстового редактора AbiWord), Wml (формат, используемый в персональных органайзерах PDA и устройствах типа Web-телефонов), ASCII-текст. Вызов отдельных библиотечных процедур может быть использован в других приложениях. Разработчики обещают, что вскоре станет возможным и обратное преобразование: из перечисленных открытых форматов - в формат MS Word.

Пакет состоит из отдельных программ, каждая из которых предназначена для преобразования doc-файла в определенный формат. Этот формат указывается непосредственно в названиях отдельных программ пакета: wvAbw, wvCleanLatex, wvDVI, wvHtml, wvLatex, wvMime, wvPDF, wvPS, wvRTF, wvSimpleCLX, wvText, wvWml. Кроме того, в состав пакета входят две вспомогательных утилиты: wvVersion, которая служит для получения информации о версии документа MS Word, и wvSummary - эта утилита выводит общую информацию о документе, которую в самом MS Word можно ввести через пункт меню Файл | Свойства. Вот как выглядит вывод этих команд (для использованного мной в этом примере файла служебные данные не были введены; впрочем, если их ввести по-русски, то радости будет не много больше, поскольку вывод получим в кодовой странице CP-1251, так что текст на экране будет нечитаемым).

[user@linux tmp]$ wvVersion book-p1.doc
Version: word8, Encrypted: No

[user@linux tmp]$ wvSummary book-p1.doc
The title is A
The subject is
The author is kos
The keywords are
no comments found
The template was Normal.dot
The last author was kos
The rev # was 12
The app name was Microsoft Word 8.0
PageCount is 1
WordCount is 52757
CharCount is 300716
Security is 0
Codepage is 0x4e3 (1251)

Основной утилитой пакета является программа wvWare (или wvConvert ), вызов которой осуществляется следующим образом

wvWare [OPTION...] filename.doc > filename.html

Основные опции:

  • -x --config=config.xml

    Указывает на используемый выходной фильтр.

  • -c --charset=charset

    Задает кодовую страницу для iconv.

  • -p --password=password

    Задает пароль для зашифрованных документов Word.

  • -d --dir=dir

    Задает каталог, в котором будет сохранена создаваемая графика.

  • -v -version

    Выдает версию пакета wvWare.

  • -? -help

    Выводит краткую справку по использованию программы.

Выходной фильтр, указываемый опцией -x или --config=, задает формат выходного файла. Если эта опция не задана, то выходной фильтр ищется в текущем каталоге или (если в текущем не нашли) по месту установки пакета. По умолчанию используется фильтр wvHtml.xml, т. е. doc-файл преобразуется в формат HTML.

После преобразования полученный файл можно просмотреть с помощью соответствующей программы просмотра, например, html-файл - с помощью любого Web-браузера. Конечно, при этом некоторые возможности форматирования, имеющиеся в Word, теряются, и это надо иметь в виду, просматривая полученные файлы.

Насколько я могу судить, именно программы пакета wv используются для открытия файлов MS Word в некоторых текстовых редакторах для Linux, например, в AbiWord.

Программы-перекодировщики кодовых страниц

Как известно, для представления символов русского алфавита существует несколько альтернативных кодировок или кодовых страниц.

В Unix-системах наиболее распространенной является кодировка KOI8-R, Microsoft использует CP-1251 или CP-866 (DOS). Существуют еще ISO8859-5, UTF, Unicode (подробнее о кодировках можно прочитать в "Подключение и настройка аппаратных устройств" ).

Если вы встретили файл, содержимое которого "не читается", то вам потребуется программа перекодировки. Как говорится в RU.LINUX.FAQ: "Перекодировщиков CP1251 и CP866 --> KOI8-R просто огромное количество. Не надо писать новых ;-). Наиболее широко распространены iconv (входит в поставку glibc ) и GNU recode."

Программа iconv запускается следующим образом:

[user]$ iconv -f866 -tKOI8-R -o <outfile> infile

Если не указать выходной файл (опция -o ), то результат будет выдаваться на экран (используя фильтры more или less можно удобно просмотреть файл). Чтобы получить список всех возможных кодировок (а он огромен!), дайте команду iconv --list, а для получения помощи: iconv -? или iconv --usage. Между прочим, man-страница не выдается. Впрочем, других опций все равно очень немного: только --verbose (сообщать дополнительные сведения), -V, и --version (обе опции служат для вывода версии программы).

Программу recode можно найти на http://www.iro.umontreal.ca/~pinard/recode/.

Запускается она примерно так:

[user]$ recode CP1251..KOI8-R winfile.txt

Кроме упомянутых команд вы можете воспользоваться программой "Russian Anywhere", которая существует как в версии для Windows (где я с ней и познакомился), так и в версии для командной строки Linux (создатели обещают выпустить и графическую оболочку). Эту программу можно скачать (как в исходных кодах, так и в виде исполняемого модуля) с сайта разработчика http://www.livotov.org/software/.

Исполняемый модуль программы имеет название re. Его лучше поместить в один из каталогов, указанных в переменной PATH.

Программа вызывается из командной строки. Для того, чтобы перекодировать какой-то файл, который "не читается", в кодировку KOI8-R, надо дать команду:

[user]$ re <SourceFile> <DestFile> ? K

где :

  • <SourceFile> - исходный (нечитаемый) файл;
  • <DestFile> - перекодированный файл;
  • ? - сообщает RE, что кодировка исходного файла не известна и re должна проанализировать файл и самостоятельно определить его кодировку;
  • K - задает кодировку для результирующего файла (в данном случае KOI-8).

Если вы знаете кодировку исходного файла, вы можете указать ее вместо символа "?". Например, если вы хотите перекодировать файл letter.txt, который был создан в Windows, и вы знаете, что файл сохранен в кодировке 1251, то надо дать команду:

[user]$ re letter.txt letter-koi.txt W K

После этого, просмотрев файл letter-koi.txt, вы увидите вполне читаемый русский текст в KOI8-R.

Полный формат вызова перекодировщика:

[user]$ re options filename_from filename_to cp_from cp_to [s/d/f] [u/l/s]

где options: [-v][-E|-R|-N][-e|-s]

  • -v - выдавать информацию о ходе обработки;
  • -n - не выдавать информацию о ходе обработки (задано по умолчанию);
  • -E - преобразовывать все символы p, H из русских в английские;
  • -R - преобразовывать все символы p, H из английских в русские;
  • -N - оставлять все p, H (русские и английские) как в исходном тексте (задано по умолчанию);
  • -e - перекодировать все символы 0x80 - 0xFF;
  • -s - перекодировать только 64 символа русского алфавита (задано по умолчанию),

а cp_from и cp_to - любой из следующих символов, обозначающих возможные кодировки (по умолчанию - W, K).

Таблица 12.1. Обозначение кодировок в программе re
Символ Кодировка Символ Кодировка
W Windows _ (подчеркивание) _xxe
D Dos % %hex
K KOI-8 \\ \'hex
L Latin G Graph_win
I Iso < binhex
H HEX + +UTF7-
S ShiftKbrd C C_MIC
M Mac Y Y_c16
A AFF Z Z_c32
O Odd(UTF8_1) F F(UTF8_2)
B Base64 P Pict
E Express N N_Estl
T T-Html V V_Vpp855
U User X X_sp
- (тире) uue J J_diff

Как уже было сказано, если cp-from="?", то программа пытается самостоятельно определить кодировку исходного файла.

Если у вас по каким-либо причинам не оказалось ни одной из указанных программ-перекодировщиков, то для просмотра содержимого файла можно воспользоваться одним из браузеров Интернет, которые изначально ориентированы на работу с разными кодировками. Например, сгодится обычный lynx:

[user]$ lynx -assume_local_charset cp866 file.txt

Можно также загрузить "нечитаемый" файл в Netscape Navigator, после чего поменять кодировку через меню View / Character Set.

Владислав Гермак
Владислав Гермак
У Вас ошибка в курсе
Марина Дайнеко
Марина Дайнеко
Россия, Moscow, Nope, 2008
Александр Климов
Александр Климов
Россия, Московское высшее техническое училище им. Н. Э. Баумана, 1989