2010-12-13 57 views
0

我通過創建一個PDF上下文並給它一個路徑渲染PDF定義如下:iphone PDF格式保存到文檔存儲

NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *file = [docsDirectory stringByAppendingPathComponent:@"mypdf.pdf"]; 

,然後使用類似下面的這條道路:

char * fileutf8 = [file UTF8String]; 
    CGContextRef pdfContext; 
CFStringRef path; 
CFURLRef url; 
CFMutableDictionaryRef myDictionary = NULL; 
path = CFStringCreateWithCString (NULL, fileutf8,kCFStringEncodingUTF8); 
url = CFURLCreateWithFileSystemPath (NULL, path,kCFURLPOSIXPathStyle, 0); 
CFRelease (path); 
myDictionary = CFDictionaryCreateMutable(NULL, 0,&kCFTypeDictionaryKeyCallBacks,&kCFTypeDictionaryValueCallBacks); 
CFDictionarySetValue(myDictionary, kCGPDFContextTitle, CFSTR("My PDF File")); 
CFDictionarySetValue(myDictionary, kCGPDFContextCreator, CFSTR("My Name")); 
pdfContext = CGPDFContextCreateWithURL (url, &size, myDictionary); 
CFRelease(url); 
CFRelease(myDictionary);// rendering code follows 

長話短說我看不到PDF是否看起來不錯,因爲我沒有在iTunes的File Sharing區域找到它。我錯過了什麼嗎?

回答

0

不是最終的解決你的問題,但我會在的NSString *文件一行之後添加類似 NSFileManager createFileAtPath:someObject writeToFile:file atomically:YES];如果創建在所有的任何文件驗證。

運行在模擬器上的應用程序,然後打開一個終端,並做了

find ~/* | grep mypdf.pdf

這個命令應該找到模擬器文件目錄下的文件。使用越獄設備和ssh外殼,您可以嘗試在手機上進行相同的測試,但對於創建文件,模擬器往往可以正常工作。

假設您已經在info.plist中設置了UIFileSharingEnabled,您的應用程序將顯示在iTunes中。如果mypdf.pdf被創建,即使是空的,也應該在iTunes中顯示。 iTunes不會過濾,但會顯示位於文檔目錄中的任何內容。

一旦您確認可以創建文件,繼續逐步瀏覽您發佈的第二個代碼塊,使用調試器並查看數據的處理方式。我從來沒有創建過PDF文件,所以我在那裏幫不了你。

+0

感謝隊友,UIFileSharingEnabled參數很有用。 – 2010-12-13 12:55:55

0

要查看PDF文件,您可以使用webviews。

NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *file = [docsDirectory stringByAppendingPathComponent:@"mypdf.pdf"]; 

// use the code for webView 

UIWebView *attachmentWebView = [[UIWebView alloc] initWithFrame:CGRectMake(10,0,300,400)]; 
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL fileURLWithPath:file]]; 
[attachmentWebView loadRequest:request]; 
[request release]; 
[self.view addSubview:attachmentWebView]; 
[attachmentWebView release]; 
+0

很有用,謝謝。只需彈出Webview並查看是否創建了任何東西就很容易。 – 2010-12-13 13:26:39