iphone pdf保存到文档存储

时间:2010-12-13 08:38:39

标签: iphone directory pdf-generation documents

我通过创建一个pdf上下文并给它一个如下定义的路径来渲染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的“文件共享”区域找不到它。我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

要查看PDF文件,您可以使用网页浏览。

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];

答案 1 :(得分:0)

不是你问题的最终解决方案,但我会添加类似的东西 在NSString *文件行之后NSFileManager createFileAtPath:someObject writeToFile:file atomically:YES];并验证是否创建了任何文件。

在模拟器中运行应用程序,然后打开终端并执行

  

find ~/* | grep mypdf.pdf

该命令应该在Simulators文档目录下找到该文件。使用越狱设备和ssh shell,您可以在手机上尝试相同的测试,但是对于创建文件,模拟器可以正常工作。

假设您已在info.plist中设置了UIFileSharingEnabled,您的应用将在iTunes中显示。如果创建了mypdf.pdf,即使是空的,它也应该在iTunes中显示。 iTunes不会过滤,但会显示位于文档目录中的任何内容。

确认可以创建文件后,继续逐步执行您发布的第二个代码块,使用调试器查看数据的处理方式。我从来没有创建过PDF文件,因此我无法帮助你。