2010-10-08 4 views
0

Вместо того, чтобы загружать PDF из папки ресурсов, я хотел бы загрузить из каталога документов. Я пытался сделать это в течение нескольких дней, но CGPDFDocumentRef продолжает возвращать NULL. Вот мой код:Загрузить PDF из каталога документов - iPhone

   // 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

Предполагая, что PDF является CGPDFDocumentRef, мы используем аналогичный код. Он работает на моем, хотя. Не понимаю, почему вы терпите неудачу. – Altealice

+1

Что заставляет вас думать, что «localhost /» будет частью пути к файлу, и что вам нужно его отключить? Обычно он отображается только в URL-адресах, но вы еще не указали URL-адрес. –

ответ

1

ok, следующий попытка. Надеюсь, на этот раз это будет более полезно: -/

Вы уверены, что файл существует на этом пути?
Я создал тестовую пробку, похожую на твою. И с файлом с именем «файл 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 внутри, так что я думаю, что это не проблема с реализацией.


EDIT: Добавить это в свой код, чтобы убедиться, что файл существует на этом пути.

if (![[NSFileManager defaultManager] fileExistsAtPath:path]) 
    NSLog(@"File does not exist!"); 

Там должен быть действительного PDF-файл на вашем пути.

2

Очевидным ответом будет использование функции pdfURL in der DocumentCreate. finalURL выходит из ниоткуда, и неясно, для чего это возможно.

pdf = CGPDFDocumentCreateWithURL(pdfURL);

0

Вы, вероятно, не имеют файла PDF на этом пути. «Создать» в CGPDFDocumentCreateWithURL относится к объекту CGPDFDocument; он не будет создавать файл документа по этому URL-адресу. Вы можете создать объект CGPDFDocument для уже существующего файла PDF.

Кроме того, как я уже говорил по вашему другому вопросу, я не понимаю, почему вы пытаетесь удалить «localhost /» из пути. Вряд ли там будет существовать в первую очередь (скорее всего, это будет отображаться только в URL-адресе), и если он когда-нибудь появится там, там появится , а появится там, и удаление его приведет к неправильному пути.

Смежные вопросы