Xcode с VFR Reader загрузка PDF ошибка

Я использую VFR / Reader для открытия файлов PDF. Когда я открываю первый файл PDF, мое приложение открывает его правильно, но когда я открываю другой, мое приложение снова открывает первый файл.

Это моя функция для чтения файла PDF

-(void)readIssue:(IssueMath *)issue {

    NSString *filePath = [[issue.contentURL path] stringByAppendingPathComponent:@"Mathematics.pdf"];

    NSLog(@"Read Path 1: %@ ",filePath);

    ReaderDocument *document = [ReaderDocument withDocumentFilePath:filePath password:nil];
    NSLog(@"Read Path 2: %@ ",document.fileURL);

    ReaderViewController *readerViewController = [[ReaderViewController alloc] initWithReaderDocument:document];
    readerViewController.delegate = self; // Set the ReaderViewController delegate to self

    readerViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    readerViewController.modalPresentationStyle = UIModalPresentationFullScreen;

    [self presentModalViewController:readerViewController animated:YES];
}

А это NSLog выход:

2012-11-02 20:09:31.081 MAGAZINE[314:15203] Read Path 1: /Users/eakmotion/Library/Application Support/iPhone Simulator/5.0/Applications/EC25BC08-E1E7-44B6-9AD8-0A321EEAC8B6/Library/Caches/ISSUE3_2011/Mathematics.pdf 

2012-11-02 20:09:31.109 MAGAZINE[314:15203] Read Path 2: file://localhost/Users/eakmotion/Library/Application%20Support/iPhone%20Simulator/5.0/Applications/EC25BC08-E1E7-44B6-9AD8-0A321EEAC8B6/Library/Caches/ISSUE2_2011/Mathematics.pdf 

Я хочу прочитать "ISSUE3_2011/Mathematics.pdf", но приложение все еще читает первый путь "ISSUE2_2011/Mathematics.pdf"

Зачем filePath все тот же?

Как я могу решить эту проблему?

3 ответа

Решение

Да, ваше решение работает, но если вы хотите отслеживать все ваши PDF-документы (например, текущей страницы нет)

Вы должны дать уникальные имена для ваших локальных файлов PDF. Потому что он будет искать файл Mathematics.plist в локальной папке устройства, чтобы прочитать номер текущей страницы..

/ Пользователи / eakmotion / Библиотека / Поддержка приложений / iPhone Simulator/5.0/ Приложения /EC25BC08-E1E7-44B6-9AD8-0A321EEAC8B6/ Библиотека / Кэши /ISSUE3_2011/Mathematics.pdf

Файл://localhost/Users/eakmotion/Library/Application%20Support/iPhone%20Simulator/5.0/Applications/EC25BC08-E1E7-44B6-9AD8-0A321EEAC8B6/Library/Caches/ISSUE2_2011/Mathematics.pdf

эти файлы ищут один и тот же файл Mathematics.plist в методе класса ReaderDocument "unarchiveFromFileName"

NSString *archivePath = [ReaderDocument applicationSupportPath]; // Application's "~/Library/Application Support" path

NSString *archiveName = [[filename stringByDeletingPathExtension] stringByAppendingPathExtension:@"plist"];

попробуйте изменить этот раздел кода или дать своим файлам уникальные имена, такие как Mat Matrix_ISSUE3_2011.pdf и Mat Matrix_ISSUE2_2011.pdf.

Я знаю, что этому вопросу уже несколько месяцев, но на случай, если кто-то столкнется с такой же проблемой (как и я), я нашел решение для него.

В источнике vfr/Reader найдите Sources/ReaderDocument.m файл и найдите функцию с именем + (ReaderDocument *)withDocumentFilePath:,

Там закомментируйте условие, которое предотвращает перезагрузку документа, как показано ниже.

+ (ReaderDocument *)withDocumentFilePath:(NSString *)filePath password:(NSString *)phrase
{
    ReaderDocument *document = nil; // ReaderDocument object

    document = [ReaderDocument unarchiveFromFileName:filePath password:phrase];

    //if (document == nil) // Unarchive failed so we create a new ReaderDocument object
    //{
    document = [[ReaderDocument alloc] initWithFilePath:filePath password:phrase];
    //}

    return document;
}

Это был мой быстрый и грязный подход к загрузке документов. Предостережение в этом решении заключается в том, что программа чтения PDF не будет отслеживать, где вы остановились на своих страницах PDF, что в моем приложении не имело значения.

Я столкнулся с той же проблемой и нашел следующее решение:

// Path to first PDF file
NSString *filePath = 
    [[NSBundle mainBundle] pathForResource:@"someBookeName" ofType:@"pdf"];

Просто измените путь к файлу, как показано выше. Как видите, теперь вам не нужно NSArray * PDF,

Другие вопросы по тегам