如何阅读 webview 中资源文件夹子文件夹中的 PDF 文件?

Posted

技术标签:

【中文标题】如何阅读 webview 中资源文件夹子文件夹中的 PDF 文件?【英文标题】:How to Read PDF file which is in subfolder of Resourse folder in webview? 【发布时间】:2012-08-04 11:10:25 【问题描述】:

我的应用程序的 Resourse 文件夹的子文件夹中有一些 PDF 格式文档。我尝试像这样阅读这些文档。这是我的代码。

   NSString *path = [[NSBundle mainBundle] pathForResource:chapter ofType:@"pdf"];
   NSURL *targetURL = [NSURL fileURLWithPath:path];
   NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
   [[webView scrollView] setContentOffset:CGPointMake(0,500) animated:YES];
   [webView stringByEvaluatingjavascriptFromString:[NSString stringWithFormat:@"window.scrollTo(0.0, 50.0)"]];
   [webView loadRequest:request];
   [self.view addSubview:webView];
   [webView release];

在此代码中“路径”返回零值,当我签入控制台时。但是当我检查存储我想要的 pdf 文档名称的字符串“章节”时,它总是有一个 pdf 文档名称。当我在控制台中程序崩溃了,它显示了这样的东西。

    Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 
'-[UIWebView scrollView]: unrecognized selector sent to instance 0x6587d20'

任何帮助都会被给予。

【问题讨论】:

这里 pathForResource 是字符串,并检查您提供的字符串是否正确。你提供的章节是什么??是字符串吗? 章节是包含我想要的文档名称的字符串。 删除这一行 [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(0.0, 50.0)"]];删除此行作为您的设置内容偏移量为 500 【参考方案1】:

您是否在项目中查看您的 pdf 文件?

我测试了以下代码。没问题。

请检查项目中的 chapter.pdf 文件。该点是相对路径。

必须区分大小写。 "Chapter" / "chapter" 不是 equalString。

NSLog(@"path:%@",[[NSBundle mainBundle] pathForResource:@"chapter" ofType:@"pdf"]);


console:
    /var/mobile/Applications/72AFA069-D83E-469A-A687-AEAFDB0B4D97/TableViewTest.app/chapter.pdf

NSLog(@"path:%@",[[NSBundle mainBundle] pathForResource:@"Chapter" ofType:@"pdf"]);


console:
    (null)

self.myWebView = [[[UIWebView alloc] initWithFrame:webFrame] autorelease];
self.myWebView.backgroundColor = [UIColor whiteColor];
self.myWebView.scalesPageToFit = YES;
self.myWebView.delegate = self;
[self.view addSubview:self.myWebView];
[self.myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"chapter" ofType:@"pdf"]]]];


在您的项目文件夹中,名称将在实际的 iPhone 包中消失。 您创建了一个名为 Resource-Common 的文件夹,但最终在 NSBundle 中消失了。

见下图。两者都是集成的。项目中的文件夹名称只是xcode中可见的文件夹。

如果你想要 NSBundle 中的所有 pdf 文件列表。尝试以下代码。

NSArray *pdfCollection = [[NSBundle mainBundle] pathsForResourcesOfType:@"pdf" inDirectory:nil];

【讨论】:

必须区分大小写。 “章节”/“章节”不等于字符串。 您是否在链接中发布下载代码?目前,我不知道到底是什么问题。 什么是章节???请尝试以下方法。 NSString *str = @"你的pdf文件名"; // NSString *path = [[NSBundle mainBundle] pathForResource:str ofType:@"pdf"]; “章节” 我真的想在解决的时候帮助你。我重新编辑了我的帖子。最后一行请退房。【参考方案2】:

根据 Apple 的doc,UIWebView 的 scrollView 是一个只读属性:与 web 视图关联的滚动视图。 (只读)。但是你把它当作一个 UIScrollView 来对待,但它不是。那是错误信息。

【讨论】:

以上是关于如何阅读 webview 中资源文件夹子文件夹中的 PDF 文件?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter WebView加载本地html的问题

使用php列出目录中的所有文件夹子文件夹和文件

无法访问位于 Windows 运行时应用程序中资产文件夹中的 Zip 文件

从父文件夹子文件夹相对导入模块

wpf中资源文件字典如何使它也拥有cs文件

从 Apache Spark Streaming 上下文访问 JAR 中资源目录中的文件