Hi Nayyerv,
I think i like your approach of merge all the RTF blocks into a word doc (with TOC generated) and then convert that word doc into PD.
This would work just fine.
Hi Nayyerv,
I think i like your approach of merge all the RTF blocks into a word doc (with TOC generated) and then convert that word doc into PD.
This would work just fine.
can you please give me some code that will do this
i.e. merge multiple RTF content into Word
Word will auto create the TOC
Then I generate a PDF for the word
Thanks
nitin.mistry@bell.ca:
i.e. merge multiple RTF content into Word
Hi Nitin,
Thanks for your patience.
Please visit the following link for information on Joining and Appending Documents
nitin.mistry@bell.ca:
Word will auto create the TOC
I have asked my fellow worker from Aspose.Words team to answer this query. Soon you will be updated with the required information.
nitin.mistry@bell.ca:
Then I generate a PDF for the word
Please visit the following link for information on How to Convert a Document to PDF
In case it does not satisfy your requirement or you have any further query, please feel free to contact. We are sorry for your inconvenience.
Document doc1 = new Document(MyDir + "in.rtf");
Document doc2 = new Document(MyDir + "in2.rtf");
Document doc3 = new Document(MyDir + "in3.rtf");
Document doc4 = new Document(MyDir + "in4.rtf");
// Append the source document using the original styles found in the source document.
doc1.AppendDocument(doc2, ImportFormatMode.KeepSourceFormatting);
doc1.AppendDocument(doc3, ImportFormatMode.KeepSourceFormatting);
doc1.AppendDocument(doc4, ImportFormatMode.KeepSourceFormatting);
// Updates the values of fields and TOC in the whole document.
doc1.UpdateFields();
doc1.Save(MyDir + "AsposeOut.pdf");
Hope this answers your query. Please let us know if you have any more queries.
Hi Tahir,
This is a great sample code. Can you send me a sample where
I have the RTF content in a string variable - not in a physical file?
Thanks
Nitin
Hi Nitin,
Thanks for your query. Please use the following code snippet to convert RTF string to PDF file. Please let us know if you have any more queries.
<span style=“font-family: “Courier New”; color: blue;” lang=“EN-GB”>string<span style=“font-family: “Courier New”;” lang=“EN-GB”> rtfString = @“RTF
string”;<o:p></o:p>
Document doc = RtfStringToDocument(rtfString);
doc.Save(MyDir + "AsposeOut.pdf");
private static Document RtfStringToDocument(string rtf)
{
Document doc = null;
// Convert RTF string to byte array.
byte[] rtfBytes = Encoding.UTF8.GetBytes(rtf);
// Create stream.
using (MemoryStream rtfStream = new MemoryStream(rtfBytes))
{
// Open document from stream.
doc = new Document(rtfStream);
}
return doc;
}
super thank you very much. This is exactly what i needed.
So far so good. I have a couple of issues.
The first page of the final .doc file is always blank.
In each document, I have special tags like this
[#Freedom to Be~http://freedomtobe.com.au#]
This is actually a hyper link to a web site.
The first part “Freedom to Be” is the display text
and the 2nd part
“http://freedomtobe.com.au
” is the actual URL.
I have many links like this.
I need to convert these into a proper Hyperlink in my Aspose word document.
How do I do this?
============== code ==================
Aspose.Words.Document FinalDoc = new Document();
Aspose.Words.Document docCoverPage = new Document();
DocumentBuilder _DocumentBuilder = new DocumentBuilder(docCoverPage);
_DocumentBuilder.InsertImage(_EBookMaker.CoverPage.CoverPageImageFileName);
FinalDoc.AppendDocument(docCoverPage, ImportFormatMode.KeepSourceFormatting);
Document docTitlePage = AsposeHelperManager.RtfStringToDocument(_EBookMaker.TitlePage.RtfContent);
string txt = docTitlePage.Range.Text;
FinalDoc.AppendDocument(docTitlePage, ImportFormatMode.KeepSourceFormatting);
// render all chapters and sections...
foreach (EBookSectionChapter chapter in _EBookMaker.ChapterList)
{
Document ChapterDoc = AsposeHelperManager.RtfStringToDocument(chapter.RtfContent);
FinalDoc.AppendDocument(ChapterDoc, ImportFormatMode.KeepSourceFormatting);
foreach (EBookSectionChapterSection section in chapter.EBookSectionChapterSectionList)
{
Document SectionDoc = AsposeHelperManager.RtfStringToDocument(section.RtfContent);
FinalDoc.AppendDocument(SectionDoc, ImportFormatMode.KeepSourceFormatting);
}
}
FinalDoc.UpdateFields();
FinalDoc.Save(saveFileDialog1.FileName, SaveFormat.Doc);
Hi Nitin,
Thanks for your query. You can use Document.RemoveAllChildren() method to remove first blank page. Please see the code below.
1. The first page of the final .doc file is always blank.
<span style=“font-family: “Courier New”; color: rgb(43, 145, 175);” lang=“EN-GB”>Document<span style=“font-family: “Courier New”;” lang=“EN-GB”> FinalDoc = new
Document();<o:p></o:p>
FinalDoc.RemoveAllChildren();
Document docCoverPage = new Document();
DocumentBuilder _DocumentBuilder = new DocumentBuilder(docCoverPage);
_DocumentBuilder.InsertImage(@"image.jpg");
FinalDoc.AppendDocument(docCoverPage, ImportFormatMode.KeepSourceFormatting);
Document docTitlePage = RtfStringToDocument("RTF STring");
string txt = docTitlePage.Range.Text;
FinalDoc.AppendDocument(docTitlePage, ImportFormatMode.KeepSourceFormatting);
FinalDoc.Save(MyDir + "AsposeOut.doc", SaveFormat.Doc);
I am working over your second query (Hyperlinks [#Freedom to Be~http://freedomtobe.com.au#]) and will update you asap.
Thank you for your quick reply!
Now the TOC is not showing. I think this is because i did not specify chapter's title text. I actually hold this title text in another RTF string. I think i may need to set the STYLE of the title's text but I do not know how i should do this since this text is in RTF format. See the code below highlighted in yellow.
Document FinalDoc = newDocument();<?xml:namespace prefix = o />
FinalDoc.RemoveAllChildren();
Document docCoverPage = new Document();
DocumentBuilder _DocumentBuilder = new DocumentBuilder(docCoverPage);
_DocumentBuilder.InsertImage(@"image.jpg");
FinalDoc.AppendDocument(docCoverPage,ImportFormatMode.KeepSourceFormatting);
Document docTitlePage = RtfStringToDocument("RTF STring");
FinalDoc.AppendDocument(docTitlePage,ImportFormatMode.KeepSourceFormatting);
I want to insert a TOC after my title page here
Document docChapter1Title = RtfStringToDocument("chapter 1 title RTF STring");
// how do i set the style on docChapterTitle?
FinalDoc.AppendDocument(docChapter1Title,ImportFormatMode.KeepSourceFormatting);
Document docChapter1Content = RtfStringToDocument("chapter 1 content RTF STring");
FinalDoc.AppendDocument(docChapter1Content,ImportFormatMode.KeepSourceFormatting);
FinalDoc.Save(MyDir + "AsposeOut.doc", SaveFormat.Doc);
Hi Nitin,
Thanks for your query. It would be great if you please share your document/RTF along with code for investigation purposes.
Hi Nitin,
Please use the following code snippet for your your second query. Hope this helps you. Please read following documentation links for your kind reference. Please let us know if you have any more queries.
http://www.aspose.com/docs/display/wordsnet/Find+and+Replace+Overview
http://www.aspose.com/docs/display/wordsnet/How+to++Find+and+Highlight+Text
2. In each document, I have special tags like this<!–[if gte mso 10]> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:10.0pt; mso-para-margin-right:0cm; mso-para-margin-bottom:10.0pt; mso-para-margin-left:47.9pt; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;}
[#Freedom to Be~http://freedomtobe.com.au#]
<![endif]–>
Document doc = new Document(MyDir + "in.docx");
DocumentBuilder builder = new DocumentBuilder(doc);
Regex regex = new Regex("\\[#", RegexOptions.IgnoreCase);
FindLinks obj = new FindLinks();
doc.Range.Replace(regex, obj, true);
String link = "";
Node endNode = null;
Node currentNode = null;
ArrayList removenodes = new ArrayList();
foreach (Run run in obj.nodes)
{
currentNode = run;
link += currentNode.Range.Text;
removenodes.Add(currentNode);
while (!currentNode.Range.Text.Contains("#]"))
{
currentNode = currentNode.NextPreOrder(doc);
removenodes.Add(currentNode);
link += currentNode.Range.Text;
}
String[] LinkNode = link.Split(new Char[] { '~' });
link = "";
builder.MoveTo(run);
builder.InsertHyperlink(LinkNode[0].Replace("[#", ""), LinkNode[1].Replace("#]", ""), false);
}
foreach (Node node in removenodes)
{
node.Remove();
}
doc.Save(MyDir + "AsposeOut.docx");
///
/// This is called during a replace operation each time a match is found.
/// This method appends a number to the match string and returns it as a replacement string.
///
public class FindLinks : IReplacingCallback
{
//Store Matched nodes
public ArrayList nodes = new ArrayList();
ReplaceAction IReplacingCallback.Replacing(ReplacingArgs e)
{
// This is a Run node that contains either the beginning or the complete match.
Node currentNode = e.MatchNode;
nodes.Add(currentNode);
return ReplaceAction.Skip;
}
}
Hi Tahir,
here’s a complete example of what I want to achieve.
The content (of a book) is held in my Object Model in a List of Objects -
and i want to convert this content into a final word document:
My Object Model objects are as follows…
Object 1: Filepath to an image (.jpg) file
Object 2: RTF Content (Title and some Copyright information)
Object 3: How We came to Mexico (This is JUST the first chapter’s title text and is in RTF format)
Object 4: RTF Content - This is the content that belongs to the above chapter
Object 5: A Word of Protest - This is the above Chapter’s Sub Section Title Text (In RTF format)
Object 6: RTF Content - Sub Section Content (In RTF format)
Object 7 : Mexico Traditions and Celebrations - This is the 2nd chapter’s Title text in RTF format
Object 8 : RTF Content - This is the content that belongs to the “Mexico Traditions and Celebrations” chapter
Object 9 : Tips for the Traveller in Mexico - This is the above Chapter’s Sub Section Title Text (In RTF format)
Object 10: RTF Content - Sub Section Content (In RTF format)
I would like the above Object model content to be converted into a word document with a TOC on the page after the title page.
Please see the attached word doc which is the final generated word doc I would like to see.
Please note that the Chapter’s header text (and also the Chapter’s sub section’s header text is in RTF format because there is font, size, justification etc formatting on the title text)
Hi Nitin,
Hi Nitin,
Thanks for sharing the details. I have read your Object Model and suggest you following code snippet. You can get idea from following code snippet and use it in your application. Please also read following documentation links for your kind reference.
http://www.aspose.com/docs/display/wordsnet/How+to++Insert+a+Document+into+another+Documenthttp://www.aspose.com/docs/display/wordsnet/DocumentBuilder+Class
http://www.aspose.com/docs/display/wordsnet/DocumentBuilder+Members
<!–[if gte mso 9]>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>PL</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>AR-SA</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val=“Cambria Math”/>
<m:brkBin m:val=“before”/>
<m:brkBinSub m:val=“–”/>
<m:smallFrac m:val=“off”/>
<m:dispDef/>
<m:lMargin m:val=“0”/>
<m:rMargin m:val=“0”/>
<m:defJc m:val=“centerGroup”/>
<m:wrapIndent m:val=“1440”/>
<m:intLim m:val=“subSup”/>
<m:naryLim m:val=“undOvr”/>
</m:mathPr></w:WordDocument>
<![endif]–><!–[if gte mso 10]>
<![endif]–>
Document FinalDoc = new Document();
DocumentBuilder builder = new DocumentBuilder(FinalDoc);
builder.MoveTo(FinalDoc.FirstSection.Body.FirstParagraph);
//Object 1: Filepath to an image (.jpg) file
Shape image = builder.InsertImage("d:\\Chrysanthemum.jpg");
//Object 2: RTF Content (Title and some Copyright information)
Document docChapter1Title = RtfStringToDocument("chapter 1 title RTF STring");
Paragraph paragraph = builder.InsertParagraph();
InsertDocument(paragraph, docChapter1Title);
builder.Writeln("");
builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading1;
builder.Font.Color = Color.Blue;
builder.Writeln("Table of Contents ");
builder.InsertTableOfContents("\\o \"1-3\" \\h \\z \\u");
builder.Writeln("");
//Object 3: How We came to Mexico (This is JUST the first chapter's title text and is in RTF format)
builder.Writeln("How We Came to Mexico");
builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Normal;
builder.Font.Color = Color.Black;
//Object 4: RTF Content - This is the content that belongs to the above chapter
builder.Writeln(@"It started on the beaches, both in Ixtapa, on the Pacific coast, and Playa del Carmen on the Gulf. In the 90s we began to come down for ....");
builder.Writeln("");
builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading2;
builder.Font.Color = Color.Blue;
builder.Writeln("A Word of Protest");
builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Normal;
builder.Font.Color = Color.Black;
builder.Writeln(@"One of the points I made in the Conclusions section of my book on the expatriate experience, San Miguel de Allende: a Pla .....");
FinalDoc.UpdateFields();
FinalDoc.Save(MyDir + "AsposeOut.doc", SaveFormat.Doc);
public void InsertDocument(Node insertAfterNode, Document srcDoc)
{
// Make sure that the node is either a paragraph or table.
if ((!insertAfterNode.NodeType.Equals(NodeType.Paragraph)) &
(!insertAfterNode.NodeType.Equals(NodeType.Table)))
throw new ArgumentException("The destination node should be either a paragraph or table.");
// We will be inserting into the parent of the destination paragraph.
CompositeNode dstStory = insertAfterNode.ParentNode;
// This object will be translating styles and lists during the import.
NodeImporter importer = new NodeImporter(srcDoc, insertAfterNode.Document, ImportFormatMode.KeepSourceFormatting);
// Loop through all sections in the source document.
foreach (Section srcSection in srcDoc.Sections)
{
// Loop through all block level nodes (paragraphs and tables) in the body of the section.
foreach (Node srcNode in srcSection.Body)
{
// Let's skip the node if it is a last empty paragraph in a section.
if (srcNode.NodeType.Equals(NodeType.Paragraph))
{
Paragraph para = (Paragraph)srcNode;
if (para.IsEndOfSection && !para.HasChildNodes)
continue;
}
// This creates a clone of the node, suitable for insertion into the destination document.
Node newNode = importer.ImportNode(srcNode, true);
// Insert new node after the reference node.
dstStory.InsertAfter(newNode, insertAfterNode);
insertAfterNode = newNode;
}
}
}
Please let us know if you have any more queries.
Hi Tahir,
It did not work completely. Plus I think I need to clarify some more as your
understanding was not quite what i wanted.
ok, so here goes again…
The contents (of a book) is held in my Object Model in a List of Objects -
and i want to convert this content into a final word document:
My Object Model objects are as follows…
Object 1: Filepath to an image (.jpg) file - This must appear on the FIRST page and resize and fit the page.
forced page break here
Object 2: RTF Content (This is RTF content)
forced page break here
Object 3: RTF Content (This is title of the Chapter1 so this must be of style Heading 1 so that it will appear in the TOC)
Object 4: RTF Content - This is the RTF content (contains text and images) that belongs to the above chapter1
Object 5: RTF Content (This is a sub section title 1 under Chapter1 so this must be of style Heading 2 so that it will appear in the TOC under Chapter 1)
Object 6: RTF Content for section 1 - can contain text and images!
Object 5: RTF Content (This is a sub section title 2 under Chapter1 so this must be of style Heading 2 so that it will appear in the TOC under Chapter 1)
Object 6: RTF Content for section 2- can contain text and images!
** Please note that there are many many Chapters and Sub Sections in the whole book so some form
of iteration is invloved
for example
I could have the following chapter and sections
- Chapter 1
section 1a
section 1b
section 1c
- Chapter 2
section 2a
- Chapter 3
section 3a
section 3b
I would like the above Object model content to be converted into a word document with an automatically
generated TOC on the page AFTER the title page. i.e The Book Cover Image (page1), Title & Copyright (Page 2), TOC (Page 3), followed by all chapters and sections etc…
Please see the previously attached word doc which is the final generated word doc I would like to see.
Hi Nitin,
Please accept my apologies for late response. Thanks for sharing the details. We’re checking the shared scenario and will get back to you soon.
Hi Tahir,
No need to apologize. In fact I THANK YOU! You are doing an awsome job. My company and myself (of course) love your products! We have Aspose Total and it's well worth the money. Plus your support response is the very best!
I look forward to your reply for the above secanrio i have given. Plus also note that
FYI...
I am using Aspose Word version 9.5.0.0
Hi Nitin,
Thanks for your queries.You are using an old version of Aspose.Words. Please note that every new release of Aspose.Words comes up with some new features, enhancements in the existing features and bug fixes. Please use the latest version of Aspose.Words for .NET.
The code shared in my previous post is a sample code for your Object Model. You can get idea from following code snippet for your Object Model. As per your queries, you want to do followings:
<span style=“font-family: “Courier New”; color: rgb(43, 145, 175);” lang=“EN-GB”>Document<span style=“font-family: “Courier New”;” lang=“EN-GB”> FinalDoc = new
Document();<o:p></o:p>
DocumentBuilder builder = new DocumentBuilder(FinalDoc);
builder.MoveTo(FinalDoc.FirstSection.Body.FirstParagraph);
//Object 1: Filepath to an image (.jpg) file - This must appear on the FIRST page and resize and fit the page.
//forced page break here
builder.MoveToParagraph(0, 0);
//Read image from file to Image object
Image img = Image.FromFile("d:\\Chrysanthemum.jpg");
double targetHeight;
double targetWidth;
CalculateImageSize(builder, img, out targetHeight, out targetWidth);
//Add the image to the document and set it's position and size
Shape shp = builder.InsertImage(img, targetWidth, targetHeight);
shp.WrapType = WrapType.Inline;
//Object 2: RTF Content (Title and some Copyright information)
Document docChapter1Title = RtfStringToDocument("chapter 1 title RTF STring");
Paragraph paragraph = builder.InsertParagraph();
InsertDocument(paragraph, docChapter1Title);
builder.InsertBreak(BreakType.PageBreak);
//Object 3: RTF Content (This is title of the Chapter1 so this must be of style Heading 1 so that it will appear in the TOC)
builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading1;
builder.Font.Color = Color.Blue;
builder.Writeln("Table of Contents ");
builder.InsertTableOfContents("\\o \"1-3\" \\h \\z \\u");
builder.Writeln("");
// Your Code......
//Object 4: RTF Content - This is the RTF content (contains text and images) that belongs to the above chapter1
Document Object4Doc = RtfStringToDocument("Object 4: RTF Content - This is the RTF content (contains text and images) that belongs to the above chapter1");
paragraph = builder.InsertParagraph();
InsertDocument(paragraph, Object4Doc);
//Your Code...
//Call the UpdateFields method before saving the document
FinalDoc.UpdateFields();
FinalDoc.Save(MyDir + "AsposeOut.doc", SaveFormat.Doc);
//
/// Calculates size of Image
///
/// DocumentBuilder is used to determine Height and Width of current Page
/// Original image
/// Height of the image
/// Width of the image
private void CalculateImageSize(DocumentBuilder builder, Image img, out double targetHeight, out double targetWidth)
{
//Calculate width and height of the page
PageSetup ps = builder.CurrentSection.PageSetup;
targetHeight = ps.PageHeight - ps.TopMargin - ps.BottomMargin;
targetWidth = ps.PageWidth - ps.LeftMargin - ps.RightMargin;
//Get size of an image
double imgHeight = ConvertUtil.PixelToPoint(img.Height);
double imgWidth = ConvertUtil.PixelToPoint(img.Width);
if (imgHeight < targetHeight && imgWidth < targetWidth)
{
targetHeight = imgHeight;
targetWidth = imgWidth;
}
else
{
//Calculate size of an image in the document
double ratioWidth = imgWidth / targetWidth;
double ratioHeight = imgHeight / targetHeight;
if (ratioWidth > ratioHeight)
targetHeight = (targetHeight * (ratioHeight / ratioWidth));
else
targetHeight = (targetWidth * (ratioWidth / ratioHeight));
}
}
Please read following forum link for your kind reference.
https://forum.aspose.com/t/52359
Hi Tahir,
The code is still not producing the correct .doc file. Please see the attached doc files.
lion-Generated-By-Aspose.doc - created by aspose word
Lion-Good-Final.doc - Manually created by me. This is what i want the final .doc to look like.
here’s the C# code method I am using:
Document FinalDoc = new Document();
DocumentBuilder builder = new DocumentBuilder(FinalDoc);
builder.MoveTo(FinalDoc.FirstSection.Body.FirstParagraph);
builder.MoveToParagraph(0, 0);
// =============================================
// COVER PAGE
// =============================================
// Read image from file to Image object
Image img = Image.FromFile(@_EBookMaker.CoverPage.CoverPageImageFileName);
double targetHeight;
double targetWidth;
AsposeHelperManager.CalculateImageSize(builder, img, out targetHeight, out targetWidth);
//Add the image to the document and set it’s position and size
Shape shp = builder.InsertImage(img, targetWidth, targetHeight);
shp.WrapType = WrapType.Inline;
builder.InsertBreak(BreakType.PageBreak);
// =============================================
// TITLE PAGE AND COPYRIGHT INFO
// =============================================
//Object 2: RTF Content (Title and some Copyright information)
Document docTitlePage = AsposeHelperManager.RtfStringToDocument(@_EBookMaker.TitlePage.RtfContent);//“chapter 1 title RTF STring”);
Paragraph paragraph = builder.InsertParagraph();
AsposeHelperManager.InsertDocument(paragraph, docTitlePage);
builder.InsertBreak(BreakType.PageBreak);
// =============================================
// TOC
// =============================================
builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading1;
builder.Font.Color = Color.Blue;
builder.Writeln(“Table of Contents “);
builder.InsertTableOfContents(”\o “1-3” \h \z \u”);
builder.InsertBreak(BreakType.PageBreak);
// =============================================
// NOW PROCESS ALL CHAPTERS …
// =============================================
foreach (EBookSectionChapter chapter in _EBookMaker.ChapterList)
{
// Chapter Title
Document docChapterTitle = AsposeHelperManager.RtfStringToDocument(chapter.TitleAsRtf);
builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading1;
builder.Font.Color = Color.Black;
Paragraph ChapterTitleParagraph = builder.InsertParagraph();
AsposeHelperManager.InsertDocument(ChapterTitleParagraph, docChapterTitle);
// Chapter Content
Document docChapterContent = AsposeHelperManager.RtfStringToDocument(chapter.RtfContent);
builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Normal;
builder.Font.Color = Color.Black;
Paragraph ChapterContentParagraph = builder.InsertParagraph();
AsposeHelperManager.InsertDocument(ChapterContentParagraph, docChapterContent);
builder.Writeln("");
// =============================================
// PROCESS ALL SECTIONS …
// =============================================
foreach (EBookSectionChapterSection section in chapter.EBookSectionChapterSectionList)
{
// Section Title
Document docSectionTitle = AsposeHelperManager.RtfStringToDocument(chapter.TitleAsRtf);
builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading2;
builder.Font.Color = Color.Black;
Paragraph SectionTitleParagraph = builder.InsertParagraph();
AsposeHelperManager.InsertDocument(SectionTitleParagraph, docSectionTitle);
// Section Content
Document docSectionContent = AsposeHelperManager.RtfStringToDocument(chapter.RtfContent);
builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Normal;
builder.Font.Color = Color.Black;
Paragraph SectionContentParagraph = builder.InsertParagraph();
AsposeHelperManager.InsertDocument(SectionContentParagraph, docSectionContent);
builder.Writeln("");
}
}
// =============================================
// REFRESH THE TOC …
// =============================================
FinalDoc.UpdateFields();
FinalDoc.Save(OutputFilePath, SaveFormat.Doc);