Элементы файла content.xml, содержащие текст, могут использовать стили, описанные в файле styles.xml, обращаясь к ним по имени. Проще говоря, в элементе файла content.xml указывается имя стиля из styles.xml, которое должно применяться для текста, параграфа и т.п. Стили так же представляют из себя набор XML-элементов.
Изучать стрктуру и все элементы ODF дело скучное да и мало кому, я думаю, нужное. Для того, чтобы работать с форматом ODF на высоком уровне существует библиотека ODFDOM. На самом деле эта библиотека не такая уж и простая, и чтобы ею пользоваться нужно все же понимать устройство ODF и уметь работать с XML при помощи Apache Xerces-J. Но для действительно простой работы с ODF теперь есть надстройка над ODFDOM, которая называется Simple Java API for ODF. Раньше я писал о том, как можно работать с документами ODF из Java-программы используя OpenOffice. Использование библиотеки ODFDOM Simple Java API намного удобнее как с точки зрения написания кода, так и тем, что вам теперь не нужен установленный OpenOffice. Благодаря этой библиотеке вы сами легко можете создавать программы работающие с ODF.
Для того чтобы ей воспользоваться на момент написания статьи нужны следующие штуковины:
Из Apache Xerces необходимо два файла xercesImpl.jar и xml-apis.jar. Все библиотеки подключаем как User Libraries в свою IDE (в моем случае это Eclipse), либо пихаем в <Путь к JDK>/jre/lib/ext, либо указываем в CLASSPATH, это уж кто как привык или кто как считает правильным.
Пример простой программы с комментариями, демонстрирующий создание документа ODF и использование стилей оформления текста:
import org.odftoolkit.odfdom.dom.attribute.fo.*;
import org.odftoolkit.odfdom.dom.attribute.style.StyleTextUnderlineStyleAttribute;
import org.odftoolkit.odfdom.dom.attribute.style.StyleTextUnderlineTypeAttribute;
import org.odftoolkit.odfdom.dom.style.*;
import org.odftoolkit.odfdom.dom.style.props.*;
import org.odftoolkit.odfdom.incubator.doc.office.*;
import org.odftoolkit.odfdom.incubator.doc.style.*;
import org.odftoolkit.odfdom.incubator.doc.text.*;
import org.odftoolkit.simple.*;
public class TestOdfSimple {
public static void main(String[] args) throws Exception {
// Создаем новый текстовый документ
TextDocument textDoc = TextDocument.newTextDocument();
// Добавляем текст в конец последнего параграфа документа.
// Если параграфа нет, то он будет создан.
textDoc.addText("Просто текст");
// Создаем стили
createTextStyles(textDoc);
// Создаем параграф
OdfTextParagraph p1 = textDoc.newParagraph();
// Настраиваем стиль параграфа по умолчанию
// Размер шрифта
p1.setProperty(OdfTextProperties.FontSize, "10pt");
// Стиль шрифта - курсив
p1.setProperty(OdfTextProperties.FontStyle,
FoFontStyleAttribute.Value.ITALIC.toString());
// Обрамление параграфа. Указываем ширину полосы, стиль (сплошная) и цвет
p1.setProperty(OdfParagraphProperties.Border, "2pt solid #382EFF");
// Выравнивание текста по ширине
p1.setProperty(OdfParagraphProperties.TextAlign,
FoTextAlignAttribute.Value.JUSTIFY.toString());
// Добавляем текст, который использует стиль параграфа по умолчанию
p1.addContentWhitespace("Текст использующий стиль параграфа\n");
// Пустая строка
p1.addContentWhitespace("\n");
// Добавляем куски текста применяя подготовленные стили
p1.addStyledSpanWhitespace("style1", "Текст со стилем style1\n");
p1.addStyledSpanWhitespace("style2", "Текст со стилем style2");
p1.addStyledSpanWhitespace("style1", "Еще немного текста со стилем style1");
// Сохраняем документ
textDoc.save("test.odt");
}
/**
* Создает стили для текста документа.
*
* @param textDoc
*/
private static void createTextStyles(TextDocument textDoc) {
// Получаем стили документа (или создаем, если они отсутствуют)
OdfOfficeStyles stylesOfficeStyles = textDoc.getOrCreateDocumentStyles();
// Ссылка на объект, который будем
// использовать для создания стилей
OdfStyle style;
// Создаем стиль с именем style1
style = stylesOfficeStyles.newStyle("style1",OdfStyleFamily.Text);
// Размер шрифта
style.setProperty(OdfTextProperties.FontSize, "14pt");
// Шрифт полужирный
style.setProperty(OdfTextProperties.FontWeight, "bold");
// Цвет шрифта
style.setProperty(OdfTextProperties.Color, "#FF0A0A");
// Название шрифта
style.setProperty(OdfTextProperties.FontFamily, "Arial Black");
// Стиль style2
style = stylesOfficeStyles.newStyle("style2",OdfStyleFamily.Text);
style.setProperty(OdfTextProperties.FontSize, "18pt");
// Цвет фона
style.setProperty(OdfTextProperties.BackgroundColor, "#0CFF0C");
// Цвет подчеркивающей линии
style.setProperty(OdfTextProperties.TextUnderlineColor, "#FFEF56");
// Тип подчеркивающей линии - двойная
style.setProperty(OdfTextProperties.TextUnderlineType,
StyleTextUnderlineTypeAttribute.Value.DOUBLE.toString());
// Стиль подчеркивающей линии - волнистая
style.setProperty(OdfTextProperties.TextUnderlineStyle,
StyleTextUnderlineStyleAttribute.Value.WAVE.toString());
// Весь текст будет отображаться в верхнем регистре
style.setProperty(OdfTextProperties.TextTransform,
FoTextTransformAttribute.Value.UPPERCASE.toString());
}
}
В результате выполнения этой программы получаем вот такой гениальный и потрясающий своей красотой текст:
Хорошие, простые и более полезные примеры по работе с текстом (поиск, вырезание, замена и т.п.), таблицами и презентациями можно поглядеть тут и тут.


Комментариев нет:
Отправить комментарий