2012-01-13 33 views
17

我想附加pdf作为电子邮件附件创建。我使用以下教程在iOS设备上创建PDF。pdf作为iOS设备中的电子邮件附件

可以在此路径查看下载的pdf: /用户/“用户名”/库/应用程序支持/ iPhone模拟器/“您的应用程序目录”。

我还没有尝试在iOS设备上运行这个,但我需要将它作为电子邮件附加。

链接教程: http://www.ioslearner.com/generate-pdf-programmatically-iphoneipad/

任何建议。

+0

我不知道@PengOne。它看起来像一个成就宣言(“我创建了一个PDF!”)。也许他希望有人告诉他如何使用MFMessageComposeViewController? – 2012-01-13 05:31:48

+2

我建议您阅读文档并在您提出问题之前尝试自行实施。这里是文档:http://developer.apple.com/library/ios/#documentation/MessageUI/Reference/MFMailComposeViewController_class/Reference/Reference.html尝试一下,如果你有错误回来并告诉我们错误是什么,并且那么我们可以尝试帮助你。 – sosborn 2012-01-13 05:31:50

+0

谢谢sosborn。 – user1140780 2012-01-13 07:21:40

回答

54

创建一个MFMailComposeViewController并致电addAttachmentData:mimeType:fileName:。数据将是您创建的PDF。 mimeType将是application/pdf。而fileName将是电子邮件附件中文件的名称。该代码可能看起来像下面的东西:

从教程你需要使您的PDF到一个NSMutableData对象:

NSMutableData *pdfData = [NSMutableData data]; 
UIGraphicsBeginPDFContextToData(pdfData, bounds, nil); 

然后在未来的某些时候,你需要传递pdfData到MFMailComposeViewController

MFMailComposeViewController *vc = [[[MFMailComposeViewController alloc] init] autorelease]; 
[vc setSubject:@"my pdf"]; 
[vc addAttachmentData:pdfData mimeType:@"application/pdf" fileName:@"SomeFile.pdf"]; 
+0

感谢Evan的代码片段。 – user1140780 2012-01-13 07:19:30

+0

我仍然缺乏2点的投票声望。 :(...反正,我的代码现在正在工作。谢谢大家:D – user1140780 2012-01-13 07:39:10

+0

如何设置属性来增加安全性,以便没有人可以编辑,也可以打印/复制附件我试着像这样:// this一个是用于复制CFDictionarySetValue(myDictionary,kCGPDFContextAllowsCopying,kCFBooleanFalse); CFDictionarySetValue(myDictionary,kCGPDFContextAllowsPrinting,kCFBooleanFalse);我查看苹果的文档,但找不到保护编辑的方法http://developer.apple.com 。/library/mac/#documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_pdf/dq_pdf.html即使我的上述两种方法不工作 – user1140780 2012-01-13 21:21:35

2

查看docsMFMailComposeViewController。具体而言,您正在寻找addAttachmentData:mimeType:fileName:方法。这应该让你去。

+0

我想我不清楚我的问题。对不起,这是。 我不确定将pdf附加到电子邮件的路径。在开发人员论坛上的示例代码 : NSString * path = [[NSBundle mainBundle] pathForResource:@“rainy”ofType:@“png”]; NSData * myData = [NSData dataWithContentsOfFile:path]; 这里完整路径并不需要,因为附件已添加到项目本身。 现在,当我在设备上创建PDF时,我应该如何给发送路径? – user1140780 2012-01-13 06:08:57

+0

由于该教程将PDF保存到文件系统,因此您只需将相同的路径传递给'dataWithContentsOfFile:',即传入'generatePdfWithFilePath:'。合理? – 2012-01-13 06:16:10

+0

非常感谢杰西。 – user1140780 2012-01-13 07:17:41

相关问题