How to Apply Left Indent to the Imported Content in Core DocIO?
Syncfusion® Essential® DocIO is a .NET Word Library used to create, read, edit, and convert Word documents programmatically without Microsoft Word or interop dependencies. Using this library, you can apply a left indent to the imported content after the list paragraph in a Word document using C#.
Steps to apply a left indent to the imported content after the list paragraph in Word document:
- Create a new .NET Core console application project.
- Install the Syncfusion.DocIO.Net.Core NuGet package as a reference to your project from NuGet.org.
Starting with v16.2.0.x, if you reference Syncfusion® assemblies from trial setup or from the NuGet feed, include a license key in your projects. Refer to the link to learn about generating and registering a Syncfusion® license key in your application to use the components without trail message.
- Include the following namespaces in Program.cs file
C#
using Syncfusion.DocIO;
using Syncfusion.DocIO.DLS;
- Use the following code example to import content into a main Word document and apply a left indent.
C#
// Open the existing main document from a file stream.
using (FileStream destinationStream = new FileStream(Path.GetFullPath(@"Data/DestinationDocument.docx"), FileMode.Open))
{
// Load the main Word document.
using (WordDocument destinationDocument = new WordDocument(destinationStream, FormatType.Docx))
{
// Open the existing source document from a file stream.
using (FileStream sourceStream = new FileStream(Path.GetFullPath(@"Data/SourceDocument.docx"), FileMode.Open))
{
// Load the source Word document.
using (WordDocument sourceDocument = new WordDocument(sourceStream, FormatType.Docx))
{
// Set the first section break in the source document to "NoBreak" for seamless merging.
sourceDocument.Sections[0].BreakCode = SectionBreakCode.NoBreak;
// Get the index of the last section in the destination document.
int secIndex = destinationDocument.ChildEntities.IndexOf(destinationDocument.LastSection);
// Get the index of the last paragraph in the last section of the destination document.
int paraIndex = destinationDocument.LastSection.Body.ChildEntities.IndexOf(destinationDocument.LastParagraph);
// Get the style and formatting of the last paragraph for reference.
WParagraph lastPara = destinationDocument.LastParagraph;
// Import content from the source document into the destination document, using destination styles.
destinationDocument.ImportContent(sourceDocument, ImportOptions.UseDestinationStyles);
// Modify the paragraph style for the newly added contents by applying left indentation.
AddLeftIndentation(destinationDocument, secIndex, paraIndex + 1, lastPara.ParagraphFormat.LeftIndent);
// Save the updated destination document to a new file.
using (FileStream outputStream = new FileStream(Path.GetFullPath(@"Output/Output.docx"), FileMode.Create, FileAccess.Write))
{
destinationDocument.Save(outputStream, FormatType.Docx);
}
}
}
}
}
- Use the following helper method to apply a specified left indent to all paragraphs and tables after imported sections of a Word document.
C#
/// <summary>
/// Applies left indentation to paragraphs and tables in a specified section and paragraph range of a Word document.
/// </summary>
void AddLeftIndentation(WordDocument document, int secIndex, int paraIndex, float leftIndent)
{
// Iterate through the sections added from the source document, starting from secIndex.
for (int i = secIndex; i < document.ChildEntities.IndexOf(document.LastSection) + 1; i++)
{
// Iterate through the child entities (paragraphs/tables) added from the source document.
for (int j = paraIndex; j < document.Sections[i].Body.ChildEntities.Count; j++)
{
// If the child entity is a paragraph, apply the left indent from the last paragraph.
if (document.Sections[i].Body.ChildEntities[j] is WParagraph)
{
WParagraph para = document.Sections[i].Body.ChildEntities[j] as WParagraph;
// Set the left indentation for the paragraph
para.ParagraphFormat.LeftIndent = leftIndent;
}
// If the child entity is a table, apply the same left indent to the table.
else if (document.Sections[i].Body.ChildEntities[j] is WTable)
{
WTable table = document.Sections[i].Body.ChildEntities[j] as WTable;
// Set the left indentation for the table.
table.TableFormat.LeftIndent = leftIndent;
}
}
// Reset the paragraph index for the next section to start from the beginning.
paraIndex = 0;
}
}
You can download a complete working sample to apply a left indent to the imported content after the list paragraph in a Word document from GitHub.
By executing the program, you will get the Word document as follows.
Take a moment to peruse the documentation where you can find basic Word document processing options along with the features like mail merge, merge, split, and compare Word documents, find and replace text in the Word document, protect the Word documents, and most importantly, the PDF and Image conversions with code examples.
Conclusion
I hope you enjoyed learning about how to apply left indent to the imported content after the list paragraph in a Word document.
You can refer to our ASP.NET Core DocIO feature tour page to know about its other groundbreaking feature representations and documentation, and how to quickly get started for configuration specifications. You can also explore our ASP.NET Core DocIO example to understand how to create and manipulate data.
For current customers, you can check out our components from the License and Downloads page. If you are new to Syncfusion®, you can try our 30-day free trial to check out our other controls.
If you have any queries or require clarifications, please let us know in the comments section below. You can also contact us through our support forums, Direct-Trac, or feedback portal. We are always happy to assist you!