我有以下功能:CGPDFDocumentCreateWithURL失敗(NSURL的免費電話橋接至CFURLRef)
- (void)loadPdfFromPath:(NSString*)path
{
NSURL *pathUrl = [NSURL URLWithString:path];
_pdfDocument = CGPDFDocumentCreateWithURL((CFURLRef)pathUrl);
}
從文檔我帶領相信會工作,因爲你可以從一個NSURL*
來區分a CFURLRef
via Toll-Free Bridging。但是,此功能失敗,我得到的日誌中下面的輸出:
CFURLCreateDataAndPropertiesFromResource:錯誤代碼-15。
NB:-15 = kCFURLImproperArgumentsError
但是,如果我創建一個實際CFURLRef
,它工作絕對沒問題:
- (void)loadPdfFromPath:(NSString*)path
{
CGPDFDocumentRelease(_pdfDocument);
CFStringRef cgPath = CFStringCreateWithCString(NULL, [path UTF8String], kCFStringEncodingUTF8);
CFURLRef url = CFURLCreateWithFileSystemPath(NULL, cgPath, kCFURLPOSIXPathStyle, 0);
_pdfDocument = CGPDFDocumentCreateWithURL(url);
CFRelease(url);
CFRelease(cgPath)
}
我缺少什麼?我很高興在代碼中保留第二個函數,但我更想知道第一個函數失敗的原因。
+1。它不會總是甚至似乎工作,如果'path'有一個URL是無效字符,如空格。 – 2013-04-06 14:33:45
@KenThomases:好的,謝謝你的反饋! – 2013-04-06 14:36:20