Merge RTF files

  • Thread starter Thread starter Peter
  • Start date Start date
Hi Peter,

I have spent more than one hour searching a .NET class library to merge RTF
files but without success.

In fact, as Nirosh has suggested, a simple workaround is to use the
RichTextBox control to do what you want.

In detail,
1. Create two instances of RichTextBox in the application.
2. Call the RichTextBox.LoadFile method to load the first RTF file into the
first RichTextBox control.
3. Select and copy the content in the first RichTextBox control to
Clipboard by calling the SelectAll and Copy methods of the RichTextBox
class.
4. Paste the content from Clipboard to the second RichTextBox control by
calling the RichTextBox.Paste method.
5. Repeat the step2 to step4 to merge all the RTF files to the second
RichTextBox control.
6. Save the content in the second RichTextBox to a .RTF file by calling the
RichTextBox.SaveFile method.

The following is a sample:

private void MergeRTFFiles(string[] rtffiles, string outputfile)
{
RichTextBox richTextBox1 = new RichTextBox();
RichTextBox richTextBox2 = new RichTextBox();

foreach (string filepath in rtffiles)
{
if (File.Exists(filepath))
{
richTextBox1.LoadFile(filepath);
richTextBox1.SelectAll();
richTextBox1.Copy();
richTextBox2.Paste();
}
}
richTextBox2.SaveFile(outputfile);
richTextBox1.Dispose();
richTextBox2.Dispose();
richTextBox1 = null;
richTextBox2 = null;
}

Hope this helps.
If you have any question, please feel free to let me know.

Sincerely,
Linda Liu
Microsoft Online Community Support

Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
(e-mail address removed).

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
 
Thank You for your help!!!

But unfortunatly it does not work, it works for simple files but when files
have lines and graphics the Copy & Paste or RichTextBox goofs them up.


Linda Liu said:
Hi Peter,

I have spent more than one hour searching a .NET class library to merge
RTF
files but without success.

In fact, as Nirosh has suggested, a simple workaround is to use the
RichTextBox control to do what you want.

In detail,
1. Create two instances of RichTextBox in the application.
2. Call the RichTextBox.LoadFile method to load the first RTF file into
the
first RichTextBox control.
3. Select and copy the content in the first RichTextBox control to
Clipboard by calling the SelectAll and Copy methods of the RichTextBox
class.
4. Paste the content from Clipboard to the second RichTextBox control by
calling the RichTextBox.Paste method.
5. Repeat the step2 to step4 to merge all the RTF files to the second
RichTextBox control.
6. Save the content in the second RichTextBox to a .RTF file by calling
the
RichTextBox.SaveFile method.

The following is a sample:

private void MergeRTFFiles(string[] rtffiles, string outputfile)
{
RichTextBox richTextBox1 = new RichTextBox();
RichTextBox richTextBox2 = new RichTextBox();

foreach (string filepath in rtffiles)
{
if (File.Exists(filepath))
{
richTextBox1.LoadFile(filepath);
richTextBox1.SelectAll();
richTextBox1.Copy();
richTextBox2.Paste();
}
}
richTextBox2.SaveFile(outputfile);
richTextBox1.Dispose();
richTextBox2.Dispose();
richTextBox1 = null;
richTextBox2 = null;
}

Hope this helps.
If you have any question, please feel free to let me know.

Sincerely,
Linda Liu
Microsoft Online Community Support

Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
(e-mail address removed).

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================
This posting is provided "AS IS" with no warranties, and confers no
rights.
 
Hi Peter,

Thank you for your prompt reply!
it works for simple files but when files have lines and graphics the Copy
& Paste or RichTextBox goofs them up.

The RichTextBox doesn't work well with OLE shapes, such as a line in RTF
files.

Another more robust and complex solution to your problem is to use Word
automation. You can open open the RTF files in Word at background. Select
the contents of these RTF files and paste them to a new RTF file and save
the new file.

Please refer to the following documents on how to get started with Word
automation:
http://www.codeproject.com/KB/cs/Word_Automation.aspx
http://69.10.233.10/KB/cs/Simple_Ms_Word_Automation.aspx
http://msdn.microsoft.com/en-us/library/bb407305(VS.80).aspx

Hope this helps.
If you have any question, please feel free to let me know.

Sincerely,
Linda Liu
Microsoft Online Community Support

Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
(e-mail address removed).

This posting is provided "AS IS" with no warranties, and confers no rights.
 
Michael Justin said:
A Message Queue (MSMQ or others which support .NET, for example Apache
ActiveMQ) could be used to serialize the requests, and would also offer an
easy mechanism for load balancing.

In your scenario, the Message Broker Clients would send simple messages
which contain the RTF fragments to a queue. The queue will be read by a
worker app in first-in/first-out order, converted, and sent back to the
message broker client.

Hope this helps(tm) :)
--
Michael Justin
SCJP, SCJA
betasoft - Software for DelphiT and for the JavaT platform
http://www.mikejustin.com - http://www.betabeans.de


The problem I have is using MSWord on a server, in may past experiances with
MSWord (upto Word 2003) I had always had some problems with automation of
Office applications like Word hanging or openning and never closing.
Although I have never tried it with .NET, but I don't see how Office can be
any better with .NET than COM.
I don't even know if MS Word can be automated in a background process.
 
Peter said:
I don't even know if MS Word can be automated in a background process.

Does it have to be MS Word? AFAIK there are other RTF-capable products
on the market which can be run in a server mode. (Used for example to
batch convert to PDF).
 
Michael Justin said:
Does it have to be MS Word? AFAIK there are other RTF-capable products on
the market which can be run in a server mode. (Used for example to batch
convert to PDF).

--
Michael Justin
SCJP, SCJA
betasoft - Software for DelphiT and for the JavaT platform
http://www.mikejustin.com - http://www.betabeans.de

No it does not have to be MSWord. I would rather not use MSWord.

My original question was "Does anyone has .NET library to merge RTF files?"
 
Hi Peter,

Sorry for my delayed response!

I do another search and finally find a class library for RTF processing on
the codeproject web site. You may get more information about this class
library via the below link:

http://www.codeproject.com/KB/string/nrtftree.aspx

You may use this class library to combine the content of RTF files.

Hope this helps.

Sincerely,
Linda Liu
Microsoft Online Community Support

Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
(e-mail address removed).

This posting is provided "AS IS" with no warranties, and confers no rights.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top