在Xcode项目中打开保存在我的文档文件夹中的pdf

时间:2014-01-27 13:21:19

标签: ios pdf qlpreviewcontroller

我创建了一个创建pdf并将其存储在apps文档文件夹中的应用程序。我现在想打开它并在按下“查看pdf”UIButton时在应用程序中查看它。

我已经在这里看了几个问题,我考虑过单独的视图控制器或者滚动视图。

最佳使用方法是什么?

更新:

我遵循了建议,我正在尝试使用QLPreviewController。我添加了QuickLook框架,现在有以下内容,但我仍然坚持如何在pathForResource中识别路径。有什么建议吗?

- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller
{
return 1;
}

- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{
NSString *path=[[NSBundle mainBundle] pathForResource:[pdfPathWithFileName] ofType:nil];
    return [NSURL fileURLWithPath:path];
}



- (IBAction)viewPdfButton:(id)sender {

NSString *filename= @"ObservationPDF.pdf";
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,  YES);
NSString *documnetDirectory = [path objectAtIndex:0];
NSString *pdfPathWithFileName = [documnetDirectory stringByAppendingPathComponent:filename];

[self generatePdf: pdfPathWithFileName];

QLPreviewController *previewController=[[QLPreviewController alloc]init];
previewController.delegate=self;
previewController.dataSource=self;
[self presentViewController:previewController animated:YES completion:nil];

}

1 个答案:

答案 0 :(得分:2)

如果PDF文件位于应用程序文档文件夹中,那么您不应该考虑将其传递给另一个应用程序,您应该在应用程序中显示该文件。 2个一般选项:

  1. 添加UIWebView并将本地文件加载到其中
  2. 使用QLPreviewController显示包含PDF的新视图
  3. Web视图很简单,无需在UI上进行转换。预览控制器需要转换,但免费提供一些共享/打印支持。


    这一行很混乱(语法看起来无效):

    NSString *path=[[NSBundle mainBundle] pathForResource:[pdfPathWithFileName] ofType:nil];
    

    您只能使用NSBundle从包中取出商品,而这不是您拥有的商品。您应该只使用保存文件的文件路径创建URL:

    [NSURL fileURLWithPath:pdfPathWithFileName];
    

    (您可以存储或者您可能需要以与保存文件时相同的方式重新创建)