0

我通过创建 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 的文件共享区域下找不到它。我错过了什么吗?

4

2 回答 2

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];
于 2010-12-13T09:53:14.623 回答
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 文件,因此我无法为您提供太多帮助。

于 2010-12-13T10:46:56.787 回答