无法创建ReaderDocument Vfr-Reader

时间:2013-01-10 17:38:56

标签: ios pdf

我搜索了很多但是无法从文件夹中用vfr-reader打开PDF。

NSString *filePath = @"/Users/***/Library/Application Support/iPhone Simulator/5.0/Applications/F2B7E9DE-9996-4F05-BC81-2A2889B4F504/Documents/Number1.pdf";
ReaderDocument *document = [ReaderDocument withDocumentFilePath:filePath password:password];

if (document != nil)
{// document comes nil here

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

}

我确信filepath与pdf文件完全相同。

在阅读器的示例代码中,它从主包打开pdf。但我需要从资源文件夹打开。

由于

4 个答案:

答案 0 :(得分:1)

我面临同样的问题,也许你也有同样的问题。

如果您不使用ARC,只需将 -fobjc-arc 写入构建面中的每个pdf阅读器文件即可。这将解决你的问题。

答案 1 :(得分:0)

您应该使用[[NSBundle mainBundle] bundlePath]stringByAppendingPathComponent:而不是对字符串进行硬编码。这非常可怕,只会在iOS模拟器上运行。

答案 2 :(得分:0)

你应该给出如下代码的文件名,不要直接给出

NSArray *pathss = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsPaths = [pathss objectAtIndex:0];
    NSString *filePaths = [documentsPaths stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",fileName]];

答案 3 :(得分:0)

我知道这是一个旧帖子,但是我遇到了类似@ user1392687的问题并想分享我如何解决问题(我从各种目录加载文件而不仅仅是Documents文件夹)。

问题:从目录中加载一系列PDF文件,使用文件名填充表格视图并支持元数据,然后在选择单元格时,使用VFR Reader打开PDF文件。

解决方案:X-Code中的文件夹是一个文件夹参考,用于启用内容更新,而无需执行组参考的删除/添加循环。下面的函数用于读取特定文件夹路径的所有内容 - URL,然后删除返回的文件路径中包含的所有/任何simlink。事先将URL传递到VRF以加载PDF文件[url path]用于RFC 1808(非转义)路径。

+ (NSArray *)enumerateContentsOfFolderWithPath:(NSURL *)aFolderPath
{
    NSError *error = nil;
    NSArray *contentProperties = @[NSURLIsDirectoryKey,
                                   NSURLIsReadableKey,
                                   NSURLCreationDateKey,
                                   NSURLContentAccessDateKey,
                                   NSURLContentModificationDateKey];

    NSArray *contents = [[NSFileManager defaultManager] contentsOfDirectoryAtURL:aFolderPath
                                   includingPropertiesForKeys:contentProperties
                                                      options:NSDirectoryEnumerationSkipsHiddenFiles
                                                        error:&error];
    if (error != nil)
        DLog(@"Content enumeration error: %@", error);

    NSMutableArray *pdfURLs = [NSMutableArray array];

    for (NSURL *item in contents)
    {
        NSURL *fileURL = [NSURL fileURLWithPath: [item path]];
        NSURL *noSimlink = [fileURL URLByResolvingSymlinksInPath];
        [pdfURLs addObject: noSimlink];
    }
    return pdfURLs;
}

使用文件夹内容和所有支持元数据填充表格视图后,当用户触摸行查看PDF文件时,VRF阅读器的设置如下:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Other setup code...

    NSURL *item = [pdfURLs objectAtIndex:(NSUInteger) indexPath.row];
    [self presentPdfViewerForItem: item];
}

- (void)presentPdfViewerForItem:(NSURL *)aItem
{
    NSString *phrase = nil; // Document password (for unlocking most encrypted PDF files)
    NSString *filePath = [aItem path];
    ReaderDocument *document = [ReaderDocument withDocumentFilePath: filePath password:phrase];

    if (document != nil) // Must have a valid ReaderDocument object in order to proceed
    {
        ReaderViewController *readerViewController = [[ReaderViewController alloc] initWithReaderDocument:document];
        readerViewController.delegate = self;
        readerViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
        readerViewController.modalPresentationStyle = UIModalPresentationFullScreen;
        [self presentViewController:readerViewController animated:YES completion:nil];
    }
}