0

我搜索了很多,但无法从文档文件夹中使用 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];

}

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

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

谢谢

4

4 回答 4

1

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

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

于 2013-04-15T07:02:06.990 回答
0

你应该像下面的代码一样给出文件名,不要直接给出

NSArray *pathss = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsPaths = [pathss objectAtIndex:0];
    NSString *filePaths = [documentsPaths stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",fileName]];
于 2013-02-09T11:32:30.727 回答
0

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

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

解决方案:X-Code 中的文件夹是一个文件夹引用,用于启用内容更新,而无需执行组引用的删除/添加循环。下面的函数用于读取特定文件夹路径的所有内容 - URL,然后删除返回的文件路径中包含的所有/任何 simlink。在将 URL 传递到 VRF 以加载 PDF 文件之前,[url 路径] 用于 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];
    }
}
于 2013-04-22T05:23:43.067 回答
0

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

于 2013-01-12T10:25:28.967 回答