3

我正在制作一个应用程序,它从在线服务器下载文件并将其保存到应用程序的本地内存中。现在,我想要做的是,当您单击“查看 PDF”按钮时,它会将 PDF 文件直接打开到 iBooks。

这是我保存文件的代码:

        currentURL = @"http://weblink.com/folder1/folder2/file.pdf";
        NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:currentURL]];

        NSURLConnection *conn = [[NSURLConnection alloc] init];
    (void)[conn initWithRequest:request delegate:self];

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
    dispatch_async(queue, ^{
        data = [NSData dataWithContentsOfURL:[NSURL URLWithString:currentURL]];
        dispatch_sync(dispatch_get_main_queue(), ^{
        });
        resourceDocPath = [[NSString alloc] initWithString:[[[[NSBundle mainBundle]  resourcePath] stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"Documents"]];

        filePath = [resourceDocPath stringByAppendingPathComponent:@"myPDF.pdf"];
        [data writeToFile:filePath atomically:YES];
    });

这是我从互联网上找到的用于将文件打开到 iBooks 的内容(我将此代码放在按钮单击上):

    NSString *path = [[NSBundle mainBundle] pathForResource:@"myPDF" ofType:@"pdf"];
    NSURL *url = [NSURL fileURLWithPath:path];
    UIDocumentInteractionController *docController = [[UIDocumentInteractionController alloc] init];

    docController = [UIDocumentInteractionController interactionControllerWithURL:url];
    docController.delegate = self;

该应用程序因该代码和此消息而崩溃:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:]: nil string parameter'
4

3 回答 3

0

将写入时的 filePath 与读取时的路径进行比较。它们对我来说看起来不同,所以你可能在按钮点击代码中有一个无效/无引用。

于 2013-05-14T01:47:23.330 回答
0

试试这个将pdf保存到文档文件夹

- (NSString *)applicationDocumentsDirectory
{
    return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
}

//在你的块里面

filePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent:@"myPDF.pdf"];
NSLog(@"PDF path: %@",filePath);
[data writeToFile:filePath atomically:YES];

要在 iBooks 用户 UIDocumentInteractionController 中打开 pdf,请参阅教程。

于 2013-05-14T04:09:13.483 回答
0
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"itms-bookss://%@",self.pathToFile]]];

这确实会打开一个本地 pdf 到 Ibooks。如果它已经位于您的 Ibooks 应用程序中,则“itms-bookss”不是“itms-books”。

否则,将文件添加到 iBooks 似乎是使用不太可定制的 UIDocumentInteractionController。

于 2015-06-19T15:20:47.973 回答