【问题标题】:Open a pdf saved in my documents folder in Xcode project在 Xcode 项目中打开保存在我的文档文件夹中的 pdf
【发布时间】:2014-01-27 13:21:19
【问题描述】:

我制作了一个应用程序,它可以创建一个 pdf 并将其存储在应用程序文档文件夹中。我现在想在按下“查看 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];

}

【问题讨论】:

  • 你研究/尝试了什么?
  • 已编辑问题来回答这个问题 - 我知道我似乎没有看过它,但是当我研究这个时,似乎建议的是一个单独的应用程序来查看它。那就是说我不想安装单独的应用程序。但是可以设置一个按钮来打开一个网页链接,例如使用 Safari。 iOS内置的pdf查看器是否有类似的方法,还是您必须通过自己的视图来完成?如果你能同时做到哪一个更好?

标签: ios pdf qlpreviewcontroller


【解决方案1】:

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

  1. 添加UIWebView 并将本地文件加载到其中
  2. 使用 QLPreviewController 显示包含 PDF 的新视图

Web 视图很简单,不需要在 UI 上进行过渡。预览控制器需要转换,但免费提供一些共享/打印支持。


这一行很混乱(从外观上看是无效的语法):

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

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

[NSURL fileURLWithPath:pdfPathWithFileName];

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

【讨论】:

  • 谢谢。我已经添加了我已经完成的更新。我认为这是接近但不能完全到达那里。你能看到我错过了什么吗?
猜你喜欢
  • 1970-01-01
  • 2023-03-29
  • 2012-09-25
  • 2014-08-29
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
  • 2022-06-13
相关资源
最近更新 更多