Работа с абзацами

Абзац – это набор символов, объединенных в логический блок и заканчивающихся специальным символом paragraph break. В Aspose.Words абзац представлен классом Paragraph.

Вставка абзаца

Чтобы вставить в документ новый абзац, на самом деле, вам нужно вставить в него символ разрыва абзаца. DocumentBuilder.Writeln вставляет в документ не только строку текста, но и добавляет разрыв абзаца.

Текущее форматирование шрифта также определяется свойством Font, а текущее форматирование абзаца определяется свойством ParagraphFormat. В следующем разделе мы более подробно рассмотрим форматирование абзаца.

В следующем примере кода показано, как вставить абзац в документ:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Open the document.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Font font = builder.getFont();
font.setSize(16);
font.setColor(Color.DARK_GRAY);
font.setBold(true);
font.setName("Algerian");
font.setUnderline(2);
ParagraphFormat paragraphFormat = builder.getParagraphFormat();
paragraphFormat.setFirstLineIndent(12);
paragraphFormat.setAlignment(1);
paragraphFormat.setKeepTogether(true);
builder.write("This is a sample Paragraph");
doc.save(dataDir + "InsertParagraph_out.doc");

Форматировать абзац

Текущее форматирование абзаца представлено объектом ParagraphFormat, который возвращается свойством ParagraphFormat. Этот объект инкапсулирует различные свойства форматирования абзаца, доступные в Microsoft Word. Вы можете легко изменить форматирование абзаца на стандартное – обычный стиль, выравнивание по левому краю, без отступов, без интервалов, без границ, без затенения - с помощью команды ClearFormatting.

В следующем примере кода показано, как задать форматирование абзаца:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Open the document.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
ParagraphFormat paragraphFormat = builder.getParagraphFormat();
paragraphFormat.setAlignment(ParagraphAlignment.CENTER);
paragraphFormat.setLeftIndent(50);
paragraphFormat.setRightIndent(50);
paragraphFormat.setSpaceAfter(25);
paragraphFormat.setKeepTogether(true);
builder.writeln(
"I'm a very nice formatted paragraph. I'm intended to demonstrate how the left and right indents affect word wrapping.");
builder.writeln(
"I'm another nice formatted paragraph. I'm intended to demonstrate how the space after paragraph looks like.");
doc.save(dataDir + "SetParagraphFormatting_out.doc");

Применить стиль абзаца

Некоторые объекты форматирования, такие как шрифт или ParagraphFormat, поддерживают стили. Отдельный встроенный или определяемый пользователем стиль представлен объектом Style, который содержит соответствующие свойства стиля, такие как название, базовый стиль, форматирование шрифта и абзаца стиля и так далее.

Кроме того, объект Style предоставляет свойство StyleIdentifier, которое возвращает идентификатор стиля, не зависящий от языка, представленный значением перечисления StyleIdentifier. Дело в том, что названия встроенных стилей в Microsoft Word локализованы для разных языков. Используя идентификатор стиля, вы можете найти правильный стиль независимо от языка документа. Значения перечисления соответствуют встроенным стилям Microsoft Word, таким как Normal, Heading 1, Heading 2, и т.д. Всем пользовательским стилям присваивается значение StyleIdentifier.User value.

В следующем примере кода показано, как применить стиль абзаца:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Open the document.
Document doc = new Document();
// Set paragraph style
DocumentBuilder builder = new DocumentBuilder(doc);
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.TITLE);
builder.write("Hello");
doc.save(dataDir + "ApplyParagraphStyle_out.doc");

Вставьте разделитель стилей для размещения различных стилей абзацев

Разделитель стилей можно добавить в конец абзаца, используя сочетание клавиш Ctrl + Alt + Enter в MS Word. Эта функция позволяет использовать два разных стиля абзаца в одном логичном печатном абзаце. Если вы хотите, чтобы какой-то текст из начала определенного заголовка отображался в оглавлении, но не весь заголовок целиком, вы можете воспользоваться этой функцией.

В следующем примере кода показано, как вставить разделитель стилей для соответствия различным стилям абзацев:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Style paraStyle = builder.getDocument().getStyles().add(StyleType.PARAGRAPH, "MyParaStyle");
paraStyle.getFont().setBold(false);
paraStyle.getFont().setSize(8);
paraStyle.getFont().setName("Arial");
// Append text with "Heading 1" style.
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_1);
builder.write("Heading 1");
builder.insertStyleSeparator();
// Append text with another style.
builder.getParagraphFormat().setStyleName(paraStyle.getName());
builder.write("This is text with some other formatting ");
dataDir = dataDir + "InsertStyleSeparator_out.doc";
doc.save(dataDir);

Примените границы и затенение к абзацу

Границы в Aspose.Words представлены классом BorderCollection – это коллекция объектов Border, доступ к которым осуществляется по индексу или по типу границы. Тип Border представлен перечислением BorderType. Некоторые значения перечисления применимы к нескольким или только к одному элементу документа. Например, BorderType.Bottom применимо к абзацу или ячейке таблицы, в то время как BorderType.DiagonalDown определяет диагональную границу только в ячейке таблицы.

Как коллекция рамок, так и каждая отдельная граница имеют схожие атрибуты, такие как цвет, стиль линии, ширина линии, расстояние от текста и необязательная тень. Они представлены одноименными свойствами. Комбинируя значения свойств, вы можете создавать различные типы границ. Кроме того, оба объекта BorderCollection и Border позволяют вам сбросить эти значения до значений по умолчанию, вызвав метод ClearFormatting.

Aspose.Words также содержит класс Shading, содержащий атрибуты затенения для элементов документа. Вы можете задать желаемую текстуру затенения и цвета, которые будут применяться к фону и переднему плану элемента.

Текстура затенения задается значением перечисления TextureIndex, которое позволяет применять различные узоры к объекту Shading. Например, чтобы задать цвет фона для элемента документа, используйте значение TextureIndex.TextureSolid и соответствующим образом задайте цвет затенения переднего плана. В примере кода, приведенном ниже, показано, как применить границы и затенение к абзацу.

В следующем примере кода показано, как применить границы и затенение к абзацу:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Open the document.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Set paragraph borders
BorderCollection borders = builder.getParagraphFormat().getBorders();
borders.setDistanceFromText(20);
borders.getByBorderType(BorderType.LEFT).setLineStyle(LineStyle.DOUBLE);
borders.getByBorderType(BorderType.RIGHT).setLineStyle(LineStyle.DOUBLE);
borders.getByBorderType(BorderType.TOP).setLineStyle(LineStyle.DOUBLE);
borders.getByBorderType(BorderType.BOTTOM).setLineStyle(LineStyle.DOUBLE);
// Set paragraph shading
Shading shading = builder.getParagraphFormat().getShading();
shading.setTexture(TextureIndex.TEXTURE_DIAGONAL_CROSS);
shading.setBackgroundPatternColor(Color.YELLOW);
shading.setForegroundPatternColor(Color.GREEN);
builder.write("I'm a formatted paragraph with double border and nice shading.");
doc.save(dataDir + "ApplyBordersAndShading_out.doc");