Элементы файла 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()); } }
В результате выполнения этой программы получаем вот такой гениальный и потрясающий своей красотой текст:
Хорошие, простые и более полезные примеры по работе с текстом (поиск, вырезание, замена и т.п.), таблицами и презентациями можно поглядеть тут и тут.
Комментариев нет:
Отправить комментарий