Paragraflarla Çalışmak

Paragraf, mantıksal bir blok halinde birleştirilen ve özel bir karakterle (paragraf sonu) biten bir karakter kümesidir. Aspose.Words’te bir paragraf Paragraph sınıfı tarafından temsil edilir.

Paragraf Ekle

Belgeye yeni bir paragraf eklemek için aslında bir paragraf sonu karakteri eklemeniz gerekir. DocumentBuilder.Writeln belgeye yalnızca bir metin dizisi eklemekle kalmaz, aynı zamanda bir paragraf sonu da ekler.

Geçerli yazı tipi formatı da Font özelliği tarafından belirtilir ve geçerli paragraf formatı ParagraphFormat özelliği tarafından belirlenir. Bir sonraki bölümde paragraf biçimlendirme hakkında daha ayrıntılı bilgi vereceğiz.

Aşağıdaki kod örneği, bir belgeye nasıl paragraf ekleneceğini gösterir:

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

Paragrafı Biçimlendir

Geçerli paragraf biçimlendirmesi, ParagraphFormat özelliği tarafından döndürülen ParagraphFormat nesnesi tarafından temsil edilir. Bu nesne, Microsoft Word’de mevcut olan çeşitli paragraf biçimlendirme özelliklerini kapsar. ClearFormatting‘i çağırarak bir paragrafın biçimlendirmesini varsayılan değerine (Normal stil, sola hizalanmış, girintisiz, boşluksuz, kenarlıksız, gölgesiz) kolayca sıfırlayabilirsiniz.

Aşağıdaki kod örneği paragraf biçimlendirmesinin nasıl ayarlanacağını gösterir:

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

Paragraf Stilini Uygula

Font veya ParagraphFormat gibi bazı biçimlendirme nesneleri stilleri destekler. Yerleşik veya kullanıcı tanımlı bir stil, ad, temel stil, yazı tipi, stil paragraf formatı vb. gibi uygun stil özelliklerini içeren bir Style nesnesi tarafından temsil edilir.

Ayrıca Style nesnesi, StyleIdentifier numaralandırma değeriyle temsil edilen yerel ayardan bağımsız stil tanımlayıcısını döndüren StyleIdentifier özelliğini kullanıma sunar. Gerçek şu ki, Microsoft Word’deki yerleşik stillerin adları farklı diller için yerelleştirilmiştir. Stil tanımlayıcıyı kullanarak belge dilinden bağımsız olarak doğru stili bulabilirsiniz. Numaralandırma değerleri Normal, Başlık 1, Başlık 2 vb. gibi yerleşik Microsoft Word stillerine karşılık gelir. Tüm kullanıcı tanımlı stiller StyleIdentifier.User numaralandırma değerine ayarlanır.

Aşağıdaki kod örneği paragraf stilinin nasıl uygulanacağını gösterir:

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

Farklı Paragraf Stilleri Koymak için Stil Ayırıcı Ekle

Microsoft Word’te Ctrl+Alt+Enter klavye kısayolu kullanılarak paragrafın sonuna stil ayırıcı eklenebilir. Bu özellik, aynı mantıksal yazdırılmış paragrafta iki farklı paragraf stili kullanmanıza olanak tanır. Belirli bir başlığın başlangıcındaki metnin bir kısmının içindekiler bölümünde görünmesini istiyorsanız ancak başlığın tamamının içindekiler bölümünde görünmesini istemiyorsanız bu işlevi kullanabilirsiniz.

Aşağıdaki kod örneği, farklı paragraf stillerine uyum sağlamak için stil ayırıcının nasıl ekleneceğini gösterir:

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

Paragraf Stili Ayırıcıyı Tanımlayın

Aspose.Words, aşağıdaki örnekte gösterildiği gibi, bir paragrafı stil ayırıcıyla tanımlamak için Paragraph sınıfındaki BreakIsStyleSeparator ortak özelliğini kullanıma sunar:

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

Paragrafa Kenarlık ve Gölgelendirme Uygulama

Aspose.Words’teki kenarlıklar BorderCollection sınıfı tarafından temsil edilir; bu, indeks veya kenarlık türüne göre erişilen bir Border nesneleri koleksiyonudur. Kenarlık türü de BorderType numaralandırmasıyla temsil edilir. Bazı numaralandırma değerleri birden fazla veya yalnızca bir belge öğesine uygulanır. Örneğin, BorderType.Bottom bir paragrafa veya tablo hücresine uygulanırken BorderType.DiagonalDown yalnızca tablo hücresindeki çapraz kenarlığı belirtir.

Hem kenarlık koleksiyonu hem de her ayrı kenarlık, renk, çizgi stili, çizgi genişliği, metinden uzaklık ve isteğe bağlı gölge gibi benzer özelliklere sahiptir. Aynı adı taşıyan özelliklerle temsil edilirler. Özellik değerlerini birleştirerek farklı kenarlık türleri elde edebilirsiniz. Ayrıca BorderCollection ve Border nesneleri, ClearFormatting yöntemini çağırarak bu değerleri varsayılan değerlerine sıfırlamanıza olanak tanır.

Aspose.Words ayrıca belge öğeleri için gölgelendirme niteliklerini içeren Shading sınıfına da sahiptir. TextureIndex numaralandırma değerini kullanarak, bir öğenin arka planına ve ön planına uygulanan istenen gölgeleme dokusunu ve renkleri ayarlayabilirsiniz. TextureIndex ayrıca Shading nesnesine farklı desenler uygulamanıza da olanak tanır. Örneğin, bir belge öğesinin arka plan rengini ayarlamak için TextureIndex.TextureSolid değerini kullanın ve ön plan gölgeleme rengini uygun şekilde ayarlayın.

Aşağıdaki kod örneği, bir paragrafa kenarlıkların ve gölgelendirmenin nasıl uygulanacağını gösterir:

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

Paragraf Satırlarını Say

Herhangi bir Word belgesinin paragrafındaki satır sayısını saymak istiyorsanız aşağıdaki kod örneğini kullanabilirsiniz:

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