Робота з параграфами
Пабзац є набором символів, що поєднуються в логічний блок і закінчуючи особливим характером – розбиттям *. У 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 в 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)."); | |
} |