4

我尝试使用 QlPreviewController 显示来自 Internet url 的 pdf 而不下载它。这是我的代码:

  NSURL* url2 = [NSURL URLWithString:@"http://wwww.myweb.com/files/terms_en.pdf"];

// Check if can be shown
if(![QLPreviewController canPreviewItem:url2]) {
    // cant show document
    NSLog(@"can't show document");
}else {
    NSLog(@"can show document");
   // Show the document in preview
  //  _previewItemURL = url;
    QLPreviewController* preview = [[QLPreviewController alloc] init];
    [preview setDataSource:url2];
}

但它没有显示任何东西。此外,我在最后一句 [preview setDataSource:url2] 中有一个警告,说“发送 'NSURL *_strong' 到不兼容类型的参数 'id

4

2 回答 2

2

根据文档,QLPreviewController 需要 NSFileURL,即本地文件。使用其他方式(例如 NSData dataWithContentsOfURL)下载您的 Web 资源,写入磁盘,然后将本地 URL 提供给它。

于 2014-10-27T15:13:54.450 回答
-1
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    QLPreviewController *previewController = [[QLPreviewController alloc] init];
    [previewController setDataSource:self];
    [previewController setDelegate:self];
    previewController.currentPreviewItemIndex = indexPath.row;
    [self presentModalViewController:previewController animated:YES];
}
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller
{
    return [self.arrayForPDFList count];
}
- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{
    NSString *pathForPdf =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    pathForPdf = [pathForPdf stringByAppendingFormat:@"/%@.pdf",[self.arrayForPDFList objectAtIndex:index]];    
    return [NSURL URLWithString:pathForPdf];
}
于 2013-02-21T05:37:04.087 回答