Werk Met Paragrawe
‘n paragraaf is’n stel karakters wat in’n logiese blok gekombineer word en eindig met’n spesiale karakter – a paragraph break. In Aspose.Words word’n paragraaf verteenwoordig deur die Paragraph klas.
Voeg’n Paragraaf in
Om’n nuwe paragraaf in die dokument in te voeg, moet jy eintlik’n paragraaf breekkarakter daarin invoeg. DocumentBuilder.Writeln voeg nie net’n string teks in die dokument nie, maar voeg ook’n paragraafonderbreking by.
Die huidige lettertipe formatering word ook gespesifiseer deur die Font eienskap, en die huidige paragraaf formatering word bepaal deur die ParagraphFormat eienskap. In die volgende afdeling gaan ons in meer besonderhede oor paragraafformatering.
Die volgende kode voorbeeld toon hoe om’n paragraaf in’n dokument in te voeg:
// 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
Huidige paragraaf formatering word verteenwoordig deur die ParagraphFormat voorwerp wat teruggestuur word deur die ParagraphFormat eienskap. Hierdie voorwerp bevat verskeie paragraaf formatering eienskappe beskikbaar in Microsoft Word. Jy kan maklik’n paragraaf se formatering terugstel Na sy standaard Normale styl, links-in lyn, geen inkeping, geen spasiëring, geen grense, geen skadu deur ClearFormatting te bel.
Die volgende kode voorbeeld toon hoe om paragraaf formatering stel:
// 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); |
Pas Paragraafstyl Toe
Sommige formatering voorwerpe, soos Font of ParagraphFormat, ondersteun style. Een ingeboude of gebruiker-gedefinieerde styl word verteenwoordig deur’n Style voorwerp, wat die toepaslike styl eienskappe soos naam, basis styl, lettertipe, styl paragraaf formatering, en so aan bevat.
Daarbenewens, die Style voorwerp blootstel die StyleIdentifier eiendom, wat die locale-onafhanklike styl identifiseerder verteenwoordig deur die StyleIdentifier opsomming waarde. Die feit is dat die name van die ingeboude style in Microsoft Word gelokaliseer is vir verskillende tale. Deur die stylidentifiseerder te gebruik, kan u die korrekte styl vind, ongeag die dokumenttaal. Die opsomming waardes ooreenstem met die ingeboude Microsoft Word style soos Normal, Heading 1, Heading 2 en so aan. Alle gebruiker-gedefinieerde style is ingestel op die StyleIdentifier.User opsomming waarde.
Die volgende kode voorbeeld toon hoe om’n paragraaf styl toe te pas:
// 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); |
Voeg Stylskeier in Om Verskillende Paragraafstyle Te Plaas
‘n styl skeiding kan bygevoeg word aan die einde van’n paragraaf met behulp van die sleutelbord kortpad Ctrl+Alt+Enter in Microsoft Word. Met hierdie funksie kan u twee verskillende paragraafstyle in dieselfde logiese gedrukte paragraaf gebruik. As u wil hê dat’n teks aan die begin van’n spesifieke opskrif in die inhoudsopgawe moet verskyn, maar nie wil hê dat die hele opskrif in die inhoudsopgawe moet verskyn nie, kan u hierdie funksie gebruik.
Die volgende kode voorbeeld toon hoe om’n styl skeier in te voeg om verskillende paragraaf style te akkommodeer:
// 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); |
Identifiseer Paragraaf Styl Skeier
Aspose.Words stel die BreakIsStyleSeparator openbare eiendom op die Paragraph
klas bloot om’n paragraaf met’n styl skeiding te identifiseer, soos in die voorbeeld hieronder getoon:
// 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!"); | |
} | |
} |
Pas Grense en Skadu toe op’n Paragraaf
Grens in Aspose.Words word verteenwoordig deur die BorderCollection klas – dit is’n versameling van Border voorwerpe wat verkry word deur indeks of deur grens tipe. Die grens tipe word op sy beurt verteenwoordig deur die BorderType opsomming. Sommige opsomming waardes van toepassing op verskeie of net een dokument element. Byvoorbeeld, BorderType.Bottom is van toepassing op’n paragraaf of tabel sel, terwyl BorderType.DiagonalDown spesifiseer’n diagonale rand in’n tabel sel net.
Beide die randversameling en elke afsonderlike rand het soortgelyke eienskappe soos kleur, lynstyl, lynbreedte, afstand van teks en opsionele skaduwee. Hulle word verteenwoordig deur eiendomme met dieselfde naam. U kan verskillende soorte grense kry deur eiendomswaardes te kombineer. Daarbenewens kan die BorderCollection en Border voorwerpe jou toelaat om hierdie waardes te herstel na hul standaard waardes deur die ClearFormatting metode te bel.
Aspose.Words het ook die Shading klas wat skadu eienskappe vir dokument elemente bevat. Jy kan die gewenste skadu tekstuur en kleure wat toegepas word op die agtergrond en voorgrond van’n element met behulp van die TextureIndex opsomming waarde stel. TextureIndex laat jou ook toe om verskillende patrone op die Shading voorwerp toe te pas. Byvoorbeeld, om die agtergrond kleur vir’n dokument element stel, gebruik die TextureIndex.TextureSolid waarde en stel die voorgrond skadu kleur soos toepaslik.
Die volgende kode voorbeeld toon hoe om grense en skadu aan’n paragraaf toe te pas:
// 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); |
Tel Paragraaflyne
As u die aantal reëls in’n paragraaf vir enige Word-dokument wil tel, kan die volgende kodemonster gebruik 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)."); | |
} |