Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

Обратите внимание, что деление на классы происходит по типу содержимого, а не документа, то есть, например, OODoc::Text используется как для ODT, так и для ODS. На вершине иерархии находится класс OpenOffice::OODoc::Document, наследующий от OpenOffice::OODoc::Text, Image и Styles. Таким образом, экземпляром OODoc::Document может быть представлен практически любой документ, будь то текст, электронная таблица или презентация. Неприятным исключением из этого перечня являются диаграммы – с ними OpenOffice::OODoc работать не умеет (хочется надеяться, что пока).

Из всего перечисленного выше наиболее развитым интерфейсом обладает OODoc::Text. Для большинства текстовых элементов поддерживаются следующие действия: вставить/добавить в конец документа (insertXXX/appendXXX), найти по стилю/содержимому/чему-то еще (selectByXXX), получить список всех элементов заданного типа/конкретное вхождение по его номеру (getXXX), удалить (removeXXX), а также некоторые другие. Интересно, что в объектной модели OpenOffice::OODoc методы часто приписываются не к самому элементу, а к документу в целом. Так, например, для получения текстового содержимого элемента используется конструкция $document->getText($element),
а не $element->getText, как можно было бы ожидать.

Прослойки, реализуемые указанными выше классами, весьма упрощают выполнение типовых операций над документом, но при этом являются сравнительно «тонкими», так что знание основ формата все же не помешает. Спецификацию OpenDocument (в форматах ODT и PDF) можно загрузить с [4], а также [5], если вас интересует неофициальный русскоязычный перевод.

Думаю, на сегодня теории достаточно. В составе POD-документации OpenOffice::OODoc имеется страница Intro, помогающая глубже разобраться с возможностями модуля. Мы же посмотрим, как применить его к решению стандартных задач. Приведенные примеры были сделаны нарочито простыми, но в то же время расширяемыми, так что при необходимости их можно превратить в полноценные программы. Полный исходный код можно скачать на сайте журнала www.samag.ru, в соответствующем разделе.

Первый шаг

OpenOffice::OODoc позволяет как создавать новые документы «с нуля» (точнее, на основе заранее подготовленных шаблонов, хранящихся в виде несжатых XML-файлов в каталоге, путь к которому возвращается функцией ooTemplatePath()), так и преобразовывать уже существующие. Традиционно, вторая задача считается более сложной, поэтому мы сфокусируемся именно на ней.

Пожалуй, первое, что приходит в голову в этой связи – это чтение файла OpenDocument и вывод его в виде простого текста. Соответствующий скрипт занимает всего восемь строк:

1: #!/usr/bin/perl

2: use strict;

3: use OpenOffice::OODoc;

4: my $file = shift;

5: die "Usage: $0 filename.odt" unless ($file);

6: my $doc = ooDocument(file => $file, member => 'content');

7: $doc->outputDelimitersOn();

8: print scalar $doc->getTextContent();

Программа принимает имя файла в качестве единственного аргумента командной строки и выводит на консоль его текстовое содержимое.


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100