Format RTF file to be sent as body using MFMailComposeViewController

3

I have to send a text report (with formatting) that I put in an RTF file within my project.

When I set the email body using the method below, the formatting of the RTF file is not recognized by the MFMailComposeViewController.

Here is the code I'm using and the NSString returned from my RTF file:

NSString *path = [[NSBundle mainBundle] pathForResource:@"relatorio"
                                                 ofType:@"rtf"];

NSString *emailBody = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

[picker setMessageBody:emailBody isHTML:NO];

I have tried several encodings and did not change the contents of emailBody, below the beginning of the NSString emailBody:

{\rtf1\ansi\ansicpg1252\cocoartf1265
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\margl1440\margr1440\vieww9000\viewh8400\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\qc

\f0\b\fs24 \cf0 Relat\'f3rio \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural
\cf0 Desenvolvido por Finaltap\

Placing in HTML is not an option because the report is too large and has been taken from an MS Word file.

Any ideas ???

    
asked by anonymous 03.03.2014 / 00:27

1 answer

1

The simplest idea is to send as an attachment. If you do not need to make changes at runtime, it is an extremely simple solution and should solve your problem.

You will start a NSData with the contents of the file and pass it on addAttachmentData of picker . Done!

Now if you really need to put the content directly into the email body, I believe some conversions will be required for HTML . You say changing the source file is not an option, but I'll cite the possibility of doing this conversion at runtime.

NSAttributedString has a initWithData that supports receiving NSData of a RTF file. After the conversion, you will probably be able to get the text in attributed strings or even in HTML , if working correctly with the output generated.

    
15.04.2014 / 07:41