2012-01-13 125 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