LINUX.ORG.RU

Как преобразовать odt в текст в скрипте?


0

0

Существует ли простой способ преобразовать текст или таблицу в формате Open Office в текст? Помимо запуска OOo и сохранения документа в другом формате. Наподобие antiword и antixls. Подойдёт и вариант с вызовом OOo без запуска GUI.

Заранее спасибо.

★★★★★

Ответ на: комментарий от JackYF

> odt2txt

Спасибо. Скачал, собрал, пробую. Что-то медленно он работает с большими файлами. По сравнению с unzip -p | sed . Полчаса на 4-мегабайтный odt -- нормально для него?

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

Итого на odt объёмом 4,3М (объём content.xml — 29М) odt2txt затратил 109 минут. Зато даже встречаются читаемые формулы.

Нашёл другую программу: o3read — http://siag.nu/o3read/. Она справилась за 1 минуту 13 секунд. Правда, качество форматирования ниже, и читаемые формулы почти отсутствуют.

Следующий скрипт:

|sed 's/<text:tab\/>/\t/g'| sed 's/<\/text:p>/\n/g'| sed 's/<style:.*>//g' | sed 's/<text:.*>//g' |sed 's/<office:.*>//g'|sed 's/<draw:.*>//g'|sed 's/<\/draw:.*>//g'| sed 's/&quot;/\"/g' | sed 's/&amp;/\&/g' | sed 's/&lt;/</g' | sed 's/&gt;/>/g' | sed 's/&nbsp;/ /g' | sed 's/&iexcl;/¡/g' | sed 's/&cent;/¢/g' | sed 's/&pound;/£/g' | sed 's/&curren;/¤/g' | sed 's/&yen;/¥/g' | sed 's/&brvbar;/¦/g' | sed 's/&sect;/§/g' | sed 's/&uml;/¨/g' | sed 's/&copy;/©/g' | sed 's/&ordf;/ª/g' | sed 's/&laquo;/«/g' | sed 's/&not;/¬/g' | sed 's/&shy;/¬/g' | sed 's/&reg;/®/g' | sed 's/&macr;/¯/g' | sed 's/&deg;/°/g' | sed 's/&plusmn;/±/g' | sed 's/&sup2;/²/g' | sed 's/&sup3;/³/g' | sed 's/&acute;/´/g' | sed 's/&micro;/µ/g' | sed 's/&para;/¶/g' | sed 's/&middot;/·/g' | sed 's/&cedil;/¸/g' | sed 's/&sup1;/¹/g' | sed 's/&ordm;/º/g' | sed 's/&raquo;/»/g' | sed 's/&frac14;/¼/g' | sed 's/&frac12;/½/g' | sed 's/&frac34;/¾/g' | sed 's/&iquest;/¿/g' | sed 's/&Agrave;/À/g' | sed 's/&Aacute;/Á/g' | sed 's/&Acirc;/Â/g' | sed 's/&Atilde;/Ã/g' | sed 's/&Auml;/Ä/g' | sed 's/&Aring;/Å/g' | sed 's/&AElig;/Æ/g' | sed 's/&Ccedil;/Ç/g' | sed 's/&Egrave;/È/g' | sed 's/&Eacute;/É/g' | sed 's/&Ecirc;/Ê/g' | sed 's/&Euml;/Ë/g' | sed 's/&Igrave;/Ì/g' | sed 's/&Iacute;/Í/g' | sed 's/&Icirc;/Î/g' | sed 's/&Euml;/Ï/g' | sed 's/&ETH;/Ð/g' | sed 's/&Ntilde;/Ñ/g' | sed 's/&Ograve;/Ò/g' | sed 's/&Oacute;/Ó/g' | sed 's/&Ocirc;/Ô/g' | sed 's/&Otilde;/Õ/g' | sed 's/&Ouml;/Ö/g' | sed 's/&times;/×/g' | sed 's/&Oslash;/Ø/g' | sed 's/&Ugrave;/Ù/g' | sed 's/&Uacute;/Ú/g' | sed 's/&Ucirc;/Û/g' | sed 's/&Uuml;/Ü/g' | sed 's/&Yacute;/Ý/g' | sed 's/&THORN;/Þ/g' | sed 's/&szlig;/ß/g' | sed 's/&agrave;/à/g' | sed 's/&aacute;/á/g' | sed 's/&acirc;/â/g' | sed 's/&atilde;/ã/g' | sed 's/&auml;/ä/g' | sed 's/&aring;/å/g' | sed 's/&aelig;/æ/g' | sed 's/&ccedil;/ç/g' | sed 's/&egrave;/è/g' | sed 's/&eacute;/é/g' | sed 's/&ecirc;/ê/g' | sed 's/&euml;/ë/g' | sed 's/&igrave;/ì/g' | sed 's/&iacute;/í/g' | sed 's/&icirc;/î/g' | sed 's/&iuml;/ï/g' | sed 's/&eth;/ð/g' | sed 's/&ntilde;/ñ/g' | sed 's/&ograve;/ô/g' | sed 's/&oacute;/ò/g' | sed 's/&ocirc;/ô/g' | sed 's/&otilde;/õ/g' | sed 's/&ouml;/ö/g' | sed 's/&divide;/÷/g' | sed 's/&slash;/ø/g' | sed 's/&ugrave;/ù/g' | sed 's/&uacute;/ú/g' | sed 's/&ucirc;/û/g' | sed 's/&uuml;/ü/g' | sed 's/&yacute;/ý/g' | sed 's/&thorn;/þ/g' | sed 's/&yuml;/ÿ/g'

справился за 23 секунды при близком качестве. Более простой

|sed 's/<text:tab\/>/\t/g'| sed 's/<\/text:p>/\n/g'| sed 's/<.*>//g'

вообще за 11 секунд.

Получается, sed быстрее программ на C++?

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

> Следующий скрипт:

|sed 's/<text:tab\/>/\t/g'| [...]

Попробуй заменить sed 'foo' | sed 'bar' | sed 'baz' на sed 'foo ; bar ; baz', должно заработать еще быстрее

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

> sed 'foo' | sed 'bar' | sed 'baz' на sed 'foo ; bar ; baz',

Спасио, учту.

question4 ★★★★★
() автор топика
Ответ на: комментарий от GreyDoom

> odt2txt

Выше писал: очень медленно работает. o3totxt быстрее.

question4 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.