Создать PDF из представления для отправки по электронной почте - PullRequest
0 голосов
/ 07 февраля 2011

Я очень плохо знаком с Objective C, поэтому, пожалуйста, помогите мне.

У меня есть представление с несколькими метками и текстовыми представлениями.Я пытаюсь создать PDF-файл для этой страницы / просмотра и прикрепить его к электронному письму.

Сначала я попробовал этот подход, и кажется, что файл не создан или не прикреплен к электронному письму.Вот мои коды:

NSMutableData *pdfData = [NSMutableData data];
UIGraphicsBeginPDFContextToData(pdfData, self.view.bounds, nil);
UIGraphicsBeginPDFPage();

[self.view drawRect:self.view.bounds];

UIGraphicsEndPDFContext();

MFMailComposeViewController *mailComposer = [[[MFMailComposeViewController alloc] init] autorelease];
mailComposer.mailComposeDelegate = self;



[pdfData writeToFile:file atomically:YES];



[mailComposer addAttachmentData:pdfData mimeType:@"application/pdf" fileName:file];

[self presentModalViewController:mailComposer animated:YES];

И поскольку это не сработало, я попробовал другой подход, сначала создав отдельный PDF-файл, а затем прикрепив его к электронному письму.Затем я увидел, что файл PDF создан в этом каталоге, но он пуст !!!

Вот мои исправленные коды:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *file = [documentsDirectory stringByAppendingFormat:@"/tempFile.pdf"];

UIGraphicsBeginPDFContextToFile(file, self.view.bounds, nil);
UIGraphicsBeginPDFPage();

[self.view drawRect:self.view.bounds];

UIGraphicsEndPDFContext();

MFMailComposeViewController *mailComposer = [[[MFMailComposeViewController alloc] init] autorelease];
mailComposer.mailComposeDelegate = self;



[pdfData writeToFile:file atomically:YES];



[mailComposer addAttachmentData:pdfData mimeType:@"application/pdf" fileName:file];


[self presentModalViewController:mailComposer animated:YES];
  • Можете ли вы помочь мнеуспешно создать PDF из представления, а затем прикрепить его к электронному письму?

Я пробовал несколько способов, но не могу понять, что я делаю неправильно.Большое спасибо !!!

1 Ответ

3 голосов
/ 26 ноября 2011
NSMutableData *pdfData = [NSMutableData data];
UIGraphicsBeginPDFContextToData(pdfData, self.view.bounds, nil);
UIGraphicsBeginPDFPage();

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 

UIGraphicsEndPDFContext();

MFMailComposeViewController *mailComposer = [[[MFMailComposeViewController alloc] init] autorelease];

mailComposer.mailComposeDelegate = self;

[mailComposer addAttachmentData:pdfData mimeType:@"pdf" fileName:@"file.pdf"];

[self presentModalViewController:mailComposer animated:YES];

Примечание: Не знаю, что рисовать прямоугольник работает для представлений. Для меня это не работает!Нет необходимости записывать данные в файл. Вы можете сделать это напрямую, пока письмо составлено как

[mailComposer addAttachmentData:pdfData mimeType:@"pdf" fileName:@"file.pdf"];

. Попробуйте это. Для типа MIME требуется только строка pdf. Также добавляется расширение файла имени файла..pdf.

счастливое кодирование:)

...