PDF 未在 UIWebView 中正确显示

Posted

技术标签:

【中文标题】PDF 未在 UIWebView 中正确显示【英文标题】:PDF not showed correctly in UIWebView 【发布时间】:2011-03-23 15:02:38 【问题描述】:

我有一个 UIWebView,我想在其中显示 PDF 文件。 PDF 文件位于远程网络服务器上,因此可以像任何其他 URL 一样加载。

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.findsmiley.fvst.dk/KontrolRapport.aspx?id=20328832&akt=1"]]];

但是,PDF 没有正确显示。我无法滚动或缩放文档。 在控制台中,我收到以下错误代码(当然,CafeHelmuth 是我的应用程序的名称)

Wed Mar 23 15:56:31 simonbs-macbook CafeHelmuth[1997] <Error>: 
Wed Mar 23 15:56:31 simonbs-macbook CafeHelmuth[1997] <Error>: 
Wed Mar 23 15:56:31 simonbs-macbook CafeHelmuth[1997] <Error>: 
Wed Mar 23 15:56:31 simonbs-macbook CafeHelmuth[1997] <Error>: 
Wed Mar 23 15:56:31 simonbs-macbook CafeHelmuth[1997] <Error>: 
Wed Mar 23 15:56:31 simonbs-macbook CafeHelmuth[1997] <Error>: 
Wed Mar 23 15:56:31 simonbs-macbook CafeHelmuth[1997] <Error>: 
Wed Mar 23 15:56:31 simonbs-macbook CafeHelmuth[1997] <Error>: 
Terminating in response to SpringBoard's termination.
Program ended with exit code: 0

在下图中,您可以看到它没有滚动网页,而是滚动视图,这当然是错误的。

谁能帮我让我的网络视图正确显示 PDF 文档?

loadRequest 之前添加webView.scalesPageToFit = YES; 使它看起来有点奇怪,虽然它确实添加了缩放和滚动,但它似乎不是正确的方法。下面是这方面的一些图片。

当我放大背景时变成蓝色并且.. 嗯,看起来很奇怪。

【问题讨论】:

【参考方案1】:

添加一行

webView.scalesPageToFit = YES;

在 loadRequest 行之前

【讨论】:

这对于 A4 纸格式看起来有点奇怪,但至少可以缩放。 我只是尝试这样做。这让它看起来很奇怪。查看我的第一篇文章中的图片。 我查看了从您的 URL 实际下载的内容,它不仅仅是一个 pdf 文件——它是很多 javascript,在加载 pdf 文件之前会对屏幕布局进行复杂的处理.如果你可以只下载 pdf 文件,这应该没问题。否则,您将不得不更改 javascript,以便它在 web 视图中以您想要的方式运行(我无法帮助您) 抱歉让您等了一个月。这是正确的。我会调查一下。非常感谢!【参考方案2】:

我没有找到任何自定义 webview 行为的解决方案。但我为您的 pdf 找到了解决方案:将 pdf 的格式更改为 10.7 cm x 15.7 cm。看看这个例子:

【讨论】:

从网络加载时这可能吗?当从网络加载 PDF 时,您知道有什么方法可以做到这一点吗? 对不起,我不知道有什么办法。如果您设法动态更改纸张尺寸,您将遇到的主要问题是整个布局可能会爆裂。这就像拥有一个 iPhone 版本的 pdf。 哦,这不是真正的目的。我觉得很奇怪,当 Apple 自己的 Safari 做得很好时,在 UIWebView 中显示 PDF 却如此困难。 我希望有一个简单的方法,但我还没有找到。

以上是关于PDF 未在 UIWebView 中正确显示的主要内容,如果未能解决你的问题,请参考以下文章

NSData 未在 UIWebView lodadata 方法中正确加载

黑色图块在UIWebview中以pdf缩放显示

使用 iText 将 SVG 转换为 PDF,SVG 未在 PDF 中完全显示

UiWebView 全屏显示

在 UIWebview 中打开 pdf 时出错

UIWebView loadRequest 重用给出闪烁效果