Загрузить PDF из каталога документов - iPhone - PullRequest
0 голосов
/ 09 октября 2010

Вместо загрузки 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 отображается. Есть идеи, что не так? Спасибо!

Ответы [ 3 ]

2 голосов
/ 09 октября 2010

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

pdf = CGPDFDocumentCreateWithURL(pdfURL);

1 голос
/ 08 октября 2010

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

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

0 голосов
/ 10 октября 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...