在iOS中打开PDF链接到PDF阅读器

时间:2014-01-17 06:20:15

标签: ios objective-c pdf uiwebview

从我的网页浏览中获取PDF文件链接。当我点击该链接时,我想在我的iBook应用程序中打开该PDF文件。

我从服务器获得了内容。我在UIWebview中展示了这样的内容。

enter image description here

在此内容中有PDF链接“房地产的新兴趋势”。当我选择此链接时,我想在iBook,Adobe Reader等iPhone PDF阅读器应用程序中打开此pdf文件。当我单击此链接时,它将转到webView委托方法

-(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL* url = [request URL];
    NSLog(@"PDF URL : %@",url);
       if (UIWebViewNavigationTypeLinkClicked == navigationType)
    {
        if ([url isEqual:@"about:blank"])
        {
            return YES;
        }
        else
        {

            // Initialize Document Interaction Controller
            documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:url];
            // Configure Document Interaction Controller
            documentInteractionController.delegate = self;
            // Present Open In Menu
            [documentInteractionController presentOptionsMenuFromRect:CGRectZero inView:self.view animated:YES];

        }
    }
    return YES;
}

当编译器到达其他部分时我遇到了错误。我显示了那个错误:

PDF URL : http://www.uli.org/wp-content/uploads/ULI-Documents/Emerging-Trends-in-Real-Estate-Americas-2014.pdf
2014-01-17 16:44:49.233 ULINewYork[3163:a0b] *** Assertion failure in -[UIDocumentInteractionController setURL:], /SourceCache/UIKit_Sim/UIKit-2903.23/UIDocumentInteractionController.m:1010
2014-01-17 16:44:49.234 ULINewYork[3163:a0b] *** WebKit discarded an uncaught exception in the webView:decidePolicyForNewWindowAction:request:newFrameName:decisionListener: delegate: <NSInternalInconsistencyException> UIDocumentInteractionController: invalid scheme http.  Only the file scheme is supported.

请给我一些处理这个过程的想法。

1 个答案:

答案 0 :(得分:1)

我尝试的方法与苹果文档的帮助相同。我得到你提到的相同错误,然后我下载DocInteraction应用程序以了解UIDocumentInteractionController在该应用程序中,他们使用此类打开位于本地应用程序沙箱中的文件或位于主程序包中的文件

如果您的意图是让用户阅读pdf文件,则将请求处理留给webview本身(取出-webView:shouldStartLoadWithRequest:delegate方法) 或者如果你想显示ios设备可以用文件做的其他选项(打印,预览,邮件等),那么你必须将该pdf文件下载到本地,然后将UIDocumentInteractionController对象的url属性设置为本地路径url你在呈现之前保存了文件。