而不是从我想要的资源文件夹中加载PDF 从文档目录加载它。我一直试图这样做 几天但CGPDFDocumentRef一直返回NULL。这是我的 代码:
// Get Documents Directory
NSArray *searchPaths =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectoryPath = [searchPaths objectAtIndex:0];
NSString *tempPath = [documentsDirectoryPath
stringByAppendingPathComponent:[appDelegate.issueToLoad
stringByAppendingPathExtension:@"pdf"]];
NSString *path = [tempPath
stringByReplacingOccurrencesOfString:@"localhost/" withString:@""];
NSLog(@"PATH: %@", path);
//Display PDF
CFURLRef pdfURL = CFURLCreateWithFileSystemPath (NULL,
(CFStringRef)path, kCFURLPOSIXPathStyle, FALSE);
NSLog(@"PDF URL: %@", pdfURL);
pdf = CGPDFDocumentCreateWithURL(finalURL);
NSLog(@"PDF: %@", pdf);
文件路径正确,我已检查过模拟器文档 目录和文件肯定存在。当我运行应用程序时 最后一个NSLog说(NULL)并显示一个空白页PDF。 有什么想法有什么不对? 谢谢!
答案 0 :(得分:2)
显而易见的答案是在DocumentCreate函数中使用pdfURL。 finalURL无处不在,它甚至不明显是什么。
pdf = CGPDFDocumentCreateWithURL(pdfURL);
答案 1 :(得分:1)
你确定文件存在于这条路径上吗? 我创建了一个类似于你的测试用例。并且使用名为“file 123.pdf”的文件,这似乎有效。至少我可以阅读pdf的版本。
我在你的代码示例之后添加了这个,以查看pdf是否已加载。
NSLog(@"PDF: %@", pdf);
int majorVersion;
int minorVersion;
CGPDFDocumentGetVersion(pdf, &majorVersion, &minorVersion);
NSLog(@"%d %d", majorVersion, minorVersion);
这给了我以下控制台输出:
2010-10-08 13:01:40.246 test[3517:207] PATH: /var/mobile/Applications/E9CDCAC1-430D-488E-ABC3-33F40F6A06F4/Documents/file 123.pdf
2010-10-08 13:01:40.252 test[3517:207] URL: file://localhost/var/mobile/Applications/E9CDCAC1-430D-488E-ABC3-33F40F6A06F4/Documents/file%20123.pdf
2010-10-08 13:01:40.257 test[3517:207] PDF: <NSCFType: 0x139660>
2010-10-08 13:01:40.260 test[3517:207] 1 4
内部显然有%20,所以我认为这不是您实施的问题。
编辑: 将其添加到您的代码中以确保该文件存在于此路径中。
if (![[NSFileManager defaultManager] fileExistsAtPath:path])
NSLog(@"File does not exist!");
您的路径上必须有有效 pdf文件。
答案 2 :(得分:0)
您可能在该路径中没有PDF文件。 CGPDFDocumentCreateWithURL
中的“Create”引用CGPDFDocument对象;它不会在该URL上创建文档文件。您只能为已存在的PDF文件创建CGPDFDocument对象。
另外,正如我在其他问题上提到的,我不明白为什么你要从路径中删除“localhost /”。它不太可能存在于那里(它更可能只出现在URL中),如果它确实出现在那里,应该出现在那里,并且将其剥离会使路径出错