2010-12-13 107 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