Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
$doc->{'delimiters'}{'text:span'} = { 'begin' => BOLD, 'end' => RESET };
$doc->outputDelimitersOn();
print scalar $doc->getTextContent();
Как можно видеть, разделители – это просто хэш, на который указывает свойство delimiters объекта OODoc::Text. Его ключами являются имена элементов: text:h соответствует заголовкам (они у нас выводятся красным цветом), text:a – гиперссылкам (синий цвет), text:list-item – элементам списков (желтая звездочка в качестве маркера – стандарт OpenDocument различает нумерованные и ненумерованные списки не на уровне тегов, как HTML, а на уровне стилей, и мы вернемся к этому вопросу чуть позже), а text:span – стилевому выделению (жирный, курсив и т. п.). Соответствующие константы определены в модуле Term::ANSIColor.
К сожалению, в версии 2.035 (и, по-видимому,
более ранних) в классе OODoc::Text присутствует ошибка, которая препятствует
корректному выводу списков в методе getTextContent(). Исправление для нее можно
найти на сайте журнала
Легкость применения ограничителей одновременно является и плюсом, и минусом, поскольку серьезно сужает их область применения. Ограничитель можно связать только с именем элемента, поэтому, например, различить заголовки различных уровней (за это отвечает атрибут text:outline-level) с их помощью невозможно. Для более серьезных целей необходимо использовать другой подход – и один из возможных вариантов мы рассмотрим в следующем разделе.
HTML-конвертер
Преобразование OpenDocument в HTML едва ли можно назвать трудной задачей – соответствующий экспортный фильтр включен в стандартную поставку OpenOffice.org; существуют и внешние XSLT-таблицы, например, расширение для Mozilla Firefox [6]. И в то же время каждый, кто сталкивался с необходимостью опубликовать документ OpenDocument на своем веб-сайте, думаю, согласится: с данной задачей указанные инструменты справляются далеко не на «пятерку». Проблема в том, что они (из лучших, разумеется, побуждений) стремятся максимально сохранить внешний вид документа, в результате чего он обрастает встроенными стилями и CSS-таблицами, а вам-то необходимо сохранить смысловую разметку и внедрить документ в уже имеющийся дизайн! Умело используя OpenOffice::OODoc, можно экспортировать в HTML только те аспекты документа, которые действительно нужны, и игнорировать остальное.
Спецификация OpenDocument 1.0 насчитывает 700 страниц, но, к счастью, далеко не все из перечисленного в ней может встретиться вам в «рядовом» документе. Приведенный ниже пример поддерживает заголовки, абзацы, списки, стилевые выделения, гиперссылки и изображения; в случае необходимости можно легко добавить и другие элементы (первая кандидатура – очевидно, таблицы).
my $doc = ooDocument(file => $i_file, member => 'content');
my $meta = ooMeta(file => $i_file);
$doc->outputDelimitersOff();