用于远程pdf文件的UIDocumentInteractionController

时间:2011-06-02 14:40:01

标签: iphone ios

有没有人知道如何使用UIDocumentInteractionController来“打开iBooks”远程pdf文件,我似乎无法绕过这一个。我已经设法在QLPreviewController中打开我的pdf并获取OptionsMenu给我在iBooks中打开的选项,但是如果它是远程的话我不会打开文件...当我使用本地文件时它工作正常。

如果不可能,还有什么替代方案?

提前致谢

2 个答案:

答案 0 :(得分:3)

虽然UIDocumentInteractionController具有便捷方法interactionControllerForURL:,但它要求参数为文件URL。因此,您可以在应用程序中下载PDF并使用UIDocumentInteractionController对象打开它,也可以使用UIWebView对象打开远程PDF。将URL传递给Web视图,它们打开就可以了。

答案 1 :(得分:0)

广告提到你必须使用UIDOcumentInteractionController的文件网址。首先下载文档。一个非常简单的方法是使用AFNetworking。以下是我使用AFNetworking下载文件的方法:

- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)req navigationType:(UIWebViewNavigationType)navigationType {
self.title = req.URL.description;

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];

NSURL *URL = req.URL;
NSURLRequest *request = [NSURLRequest requestWithURL:URL];

NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
    NSURL *documentsDirectoryPath = [NSURL fileURLWithPath:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]];
    self.fileURLPath = [documentsDirectoryPath URLByAppendingPathComponent:[response suggestedFilename]];
    return self.fileURLPath;
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
    NSLog(@"File downloaded to: %@", filePath);
}];
[downloadTask resume];


return YES;

}

现在您已经拥有了fileURLPath,您可以像这样创建UIDocumentInteractionController:

documentController = [UIDocumentInteractionController interactionControllerWithURL:self.fileURLPath];