Werken met alinea's

Een alinea is een verzameling tekens die worden gecombineerd tot een logisch blok en eindigend met een speciaal karakter, een paragraf break. In Aspose.Words, een lid wordt vertegenwoordigd door de Paragraph Klasse.

Paragraaf invoegen

Om een nieuwe paragraaf in het document in te voegen, moet je er een paragraaf breekteken in voegen. DocumentBuilder.Writeln voegt niet alleen een tekstreeks in het document in, maar voegt ook een paragraafbreuk toe.

De huidige lettertypeopmaak wordt ook gespecificeerd door de Font eigenschap, en de huidige alinea opmaak wordt bepaald door de ParagraphFormat eigendom. In het volgende deel gaan we nader in op paragraafopmaak.

Het volgende voorbeeld van code laat zien hoe je een paragraaf in een document invoegt:

// 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);

Formaat paragraaf

De huidige paragraafopmaak wordt vertegenwoordigd door de ParagraphFormat object dat door de ParagraphFormat eigendom. Dit object inkapselt verschillende alinea-opmaak eigenschappen beschikbaar in Microsoft Word. U kunt eenvoudig reset een alinea’s formatteren op zijn standaard ClearFormatting.

Het volgende voorbeeld van code laat zien hoe je paragraafopmaak instelt:

// 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);

Paragraafstijl toepassen

Sommige opmaakobjecten, zoals Font of ParagraphFormat, ondersteuningsstijlen. Een ingebouwde of door de gebruiker gedefinieerde stijl wordt vertegenwoordigd door een Style object, dat de juiste stijl eigenschappen zoals naam, basisstijl, lettertype, stijl paragraaf formatteren, enzovoort bevat.

Bovendien heeft de Style object StyleIdentifier eigenschap, die de locale-onafhankelijke stijl identifier vertegenwoordigd door de StyleIdentifier Waarde van de opsomming. Het feit is dat de namen van de ingebouwde stijlen in Microsoft Word zijn gelokaliseerd voor verschillende talen. Met behulp van de stijl identifier, kunt u de juiste stijl te vinden, ongeacht de document taal. De opsommingswaarden komen overeen met de ingebouwde Microsoft Word stijlen zoals Normal, Heading 1,Heading 2 enzovoort. Alle door de gebruiker gedefinieerde stijlen zijn ingesteld op de StyleIdentifier.User Waarde van de opsomming.

Het volgende voorbeeld van code laat zien hoe je een alineastijl moet toepassen:

// 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);

Stijlscheiding invoegen om verschillende alineastijlen te plaatsen

Aan het einde van een alinea kan een stijlscheiding worden toegevoegd met behulp van de sneltoets Ctrl+Alt+Enter in Microsoft Word. Met deze functie kunt u twee verschillende alineastijlen gebruiken in dezelfde logische afgedrukte paragraaf. Als u wilt dat een tekst vanaf het begin van een bepaalde rubriek in de inhoudsopgave verschijnt, maar niet wilt dat de hele kop in de inhoudsopgave wordt weergegeven, kunt u deze functie gebruiken.

Het volgende voorbeeld van code laat zien hoe je een scheidingsteken invoegt om verschillende alineastijlen aan te passen:

// 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);

Paragraaf identificeren Scheidingsteken

Aspose.Words stelt BreakIsStyleSeparator openbare goederen op de Paragraph klasse om een alinea te identificeren met een stijlafscheider, zoals in het voorbeeld hieronder is aangegeven:

// 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!");
}
}

Randen en Schaduwen toepassen op een alinea

Grenzen in Aspose.Words worden vertegenwoordigd door de BorderCollection klasse Dit is een verzameling van Border objecten die toegankelijk zijn per index of per grenstype. Het grenstype wordt op zijn beurt vertegenwoordigd door de BorderType Lijst. Sommige opsommingswaarden gelden voor meerdere of slechts één documentelement. Bijvoorbeeld, BorderType.Bottom is van toepassing op een alinea of tabel, terwijl BorderType.DiagonalDown geeft alleen een diagonale rand aan in een tabelcel.

Zowel de randcollectie als elke afzonderlijke rand hebben vergelijkbare eigenschappen zoals kleur, lijnstijl, lijnbreedte, afstand tot tekst en optionele schaduw. Zij worden vertegenwoordigd door eigenschappen met dezelfde naam. U kunt verschillende grenstypes krijgen door de waarde van onroerend goed te combineren. Bovendien heeft de BorderCollection en Border objecten kunt u deze waarden te resetten naar hun standaard waarden door het aanroepen van de ClearFormatting methode.

Aspose.Words heeft Shading klasse die schaduwattributen bevat voor documentelementen. U kunt de gewenste schaduw textuur en kleuren die worden toegepast op de achtergrond en voorgrond van een element met behulp van de TextureIndex Waarde van de opsomming. TextureIndex kunt u ook verschillende patronen toe te passen op de Shading object. Om bijvoorbeeld de achtergrondkleur voor een documentelement in te stellen, gebruik de TextureIndex.TextureSolid waardeer en stel de voorgrondschaduwkleur in.

Het volgende voorbeeld van code laat zien hoe je grenzen kunt toepassen en een paragraaf kunt camoufleren:

// 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);

Paragraafregels tellen

Als u het aantal regels in een alinea voor een Word-document wilt tellen, kan het volgende codemonster worden gebruikt:

// 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).");
}