Dear Sir or Madam,
Currently we build TOC by adding TC entries like this:
string fieldBody = string.Format("TC \"{0}\"\\f x", "Section1");
documentBuilder.InsertField(fieldBody);
...
fieldBody = string.Format("TC \"{0}\"\\f x", "Section2");
documentBuilder.InsertField(fieldBody);
...
fieldBody = string.Format("TC \"{0}\"\\f x", "Note1");
documentBuilder.InsertField(fieldBody);
and then insert TOC field:
db.InsertField(string.Format("TOC \\f x" );
How can I do a multilevel TOC (see an image attached)?
Thank you in advance,
Regards,
AlexToc.PNG (11.9 KB)
@AlexanderNovickov You can use "\l"
switch in the TC
field to specify level. Please see TC field documentation for more information. Please see the following simple code example:
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Insert a TOC at the beginning.
builder.InsertField(@"TOC \f x");
builder.InsertBreak(BreakType.PageBreak);
// Insert few items;
builder.InsertField(string.Format("TC \"{0}\"\\f x \\l 1", "First level"));
builder.Writeln("First level");
builder.InsertField(string.Format("TC \"{0}\"\\f x \\l 2", "Second level"));
builder.Writeln("Second level");
builder.InsertField(string.Format("TC \"{0}\"\\f x \\l 3", "Third level"));
builder.Writeln("Third level");
doc.UpdateFields();
doc.Save(@"C:\Temp\out.docx");
The result looks like this:
Thank you Alexey, it’s what I was looking for.
Alex
1 Like