Работа с пунктами

Параграф - это набор символов, объединенных в логический блок и заканчивающихся специальным персонажем - разрывом параграфа. в Aspose.Words, пункт представлен в виде Paragraph класс.

Включить пункт

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

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

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

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir_WorkingWithDocument();
// Initialize document.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Specify font formatting
Font font = builder.Font;
font.Size = 16;
font.Bold = true;
font.Color = System.Drawing.Color.Blue;
font.Name = "Arial";
font.Underline = Underline.Dash;
// Specify paragraph formatting
ParagraphFormat paragraphFormat = builder.ParagraphFormat;
paragraphFormat.FirstLineIndent = 8;
paragraphFormat.Alignment = ParagraphAlignment.Justify;
paragraphFormat.KeepTogether = true;
builder.Writeln("A whole paragraph.");
dataDir = dataDir + "DocumentBuilderInsertParagraph_out.doc";
doc.Save(dataDir);

Пункт формата

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

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

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Set paragraph formatting properties
ParagraphFormat paragraphFormat = builder.ParagraphFormat;
paragraphFormat.Alignment = ParagraphAlignment.Center;
paragraphFormat.LeftIndent = 50;
paragraphFormat.RightIndent = 50;
paragraphFormat.SpaceAfter = 25;
// Output text
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.");
dataDir = dataDir + "DocumentBuilderSetParagraphFormatting_out.doc";
doc.Save(dataDir);

Применяйте стиль параграфа

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

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

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

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Set paragraph style
builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Title;
builder.Write("Hello");
dataDir = dataDir + "DocumentBuilderApplyParagraphStyle_out.doc";
doc.Save(dataDir);

Вставить разделитель стилей, чтобы поместить различные стили абзацев

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

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

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Style paraStyle = builder.Document.Styles.Add(StyleType.Paragraph, "MyParaStyle");
paraStyle.Font.Bold = false;
paraStyle.Font.Size = 8;
paraStyle.Font.Name = "Arial";
// Append text with "Heading 1" style.
builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading1;
builder.Write("Heading 1");
builder.InsertStyleSeparator();
// Append text with another style.
builder.ParagraphFormat.StyleName = paraStyle.Name;
builder.Write("This is text with some other formatting ");
dataDir = dataDir + "InsertStyleSeparator_out.doc";
// Save the document to disk.
doc.Save(dataDir);

Определить пункт Разделитель стилей

Aspose.Words разоблачает BreakIsStyleSeparator государственной собственности на Paragraph класс для идентификации абзаца с разделителем стилей, как показано в примере ниже:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir_RenderingAndPrinting();
// Initialize document.
string fileName = "TestFile.doc";
Document doc = new Document(dataDir + fileName);
foreach (Paragraph paragraph in doc.GetChildNodes(NodeType.Paragraph, true))
{
if (paragraph.BreakIsStyleSeparator)
{
Console.WriteLine("Separator Found!");
}
}

Применять границы и переход к абзацу

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

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

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

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

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Set paragraph borders
BorderCollection borders = builder.ParagraphFormat.Borders;
borders.DistanceFromText = 20;
borders[BorderType.Left].LineStyle = LineStyle.Double;
borders[BorderType.Right].LineStyle = LineStyle.Double;
borders[BorderType.Top].LineStyle = LineStyle.Double;
borders[BorderType.Bottom].LineStyle = LineStyle.Double;
// Set paragraph shading
Shading shading = builder.ParagraphFormat.Shading;
shading.Texture = TextureIndex.TextureDiagonalCross;
shading.BackgroundPatternColor = System.Drawing.Color.LightCoral;
shading.ForegroundPatternColor = System.Drawing.Color.LightSalmon;
builder.Write("I'm a formatted paragraph with double border and nice shading.");
dataDir = dataDir + "DocumentBuilderApplyBordersAndShadingToParagraph_out.doc";
doc.Save(dataDir);

Пункты графа

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

// The path to the documents directory.
string dataDir = RunExamples.GetDataDir_WorkingWithDocument();
string fileName = "Properties.doc";
Document document = new Document(dataDir + fileName);
var collector = new LayoutCollector(document);
var it = new LayoutEnumerator(document);
foreach (Paragraph paragraph in document.GetChildNodes(NodeType.Paragraph, true))
{
var paraBreak = collector.GetEntity(paragraph);
object stop = null;
var prevItem = paragraph.PreviousSibling;
if (prevItem != null)
{
var prevBreak = collector.GetEntity(prevItem);
if (prevItem is Paragraph)
{
it.Current = collector.GetEntity(prevItem); // para break
it.MoveParent(); // last line
stop = it.Current;
}
else if (prevItem is Table)
{
var table = (Table)prevItem;
it.Current = collector.GetEntity(table.LastRow.LastCell.LastParagraph); // cell break
it.MoveParent(); // cell
it.MoveParent(); // row
stop = it.Current;
}
else
{
throw new Exception();
}
}
it.Current = paraBreak;
it.MoveParent();
// We move from line to line in a paragraph.
// When paragraph spans multiple pages the we will follow across them.
var count = 1;
while (it.Current != stop)
{
if (!it.MovePreviousLogical())
break;
count++;
}
const int MAX_CHARS = 16;
var paraText = paragraph.GetText();
if (paraText.Length > MAX_CHARS)
paraText = $"{paraText.Substring(0, MAX_CHARS)}...";
Console.WriteLine($"Paragraph '{paraText}' has {count} line(-s).");
}