如何在Web视图上启用捏缩放以加载带有pdf(Android)的URL?

时间:2013-05-19 00:38:46

标签: android pdf android-webview pinchzoom

如果我按以下方式启用设置,则在加载常规网址的webView上进行缩放缩放效果正常,

myWebView.getSettings().setBuiltInZoomControls(true); //this works fine.

问题是,

我有一个webview,用于加载带有PDF的网址。我正在使用谷歌文档查看器加载此网址,以避免将PDF下载到设备。像,

'“http://docs.google.com/gview?embedded=true&url=http://www.abc.com/xxxxxyyyyyxz.pdf”'

在网页视图中加载此网址会显示带有内置缩放选项的pdf,按住鼠标按钮或双击可放大并按下按钮可缩小。

与捏缩放相比,这不是一个出色的用户体验。

到目前为止,我已经尝试了很多解决方案,但还没有任何效果。我试过以下,

  1. android-pinch开源库,适用于加载带图片的网址的地图和网页视图。
  2. 这个tutorial很有帮助,但无法让它适用于我的webView。
  3. 如果有人有任何其他有用信息供我试用,请分享。

3 个答案:

答案 0 :(得分:2)

众所周知,PDF在Android中很难与之互动。你可以:

1.)滚动您自己的支持PDF的WebView实现

我不建议这样做。我的典型逻辑是,如果谷歌没有在足够长的时间内完成它,那么要么很难做到,要么电池效率不高。无论如何,您可能不得不亲自动手使用Android NDK,以便快速高效地实施。

http://gurushya.com/customizing-android-webview/

2.。)将PDF转换为一系列位图

对于此选项,您需要解析网页内容以查找必要的pdf,将PDF的每张幻灯片转换为位图,并在简单的ImageSlider中显示每个位图。我没有时间尝试这种方法,但似乎它可能会起作用(虽然可能不是很快)。此stackoverflow答案可能会有所帮助:

Need help to convert a Pdf page into Bitmap in Android Java

3.。遵循惯例 - 推荐

这可能是您最好的选择。使用Google Docs有点像黑客。当你传递PDF时,你实际上是在打开一个带有糟糕移动支持的javascript PDF阅读器。在Android中处理PDF的典型方法是检查用户是否安装了PDF阅读器并打开PDF(如果有)。 PDF阅读器很可能具有缩放缩放功能。 Android可能出于性能原因以这种方式实现,并且可以在更广泛的设备范围内工作。

请注意,虽然您的普通iOS用户可能不习惯这样做; Android用户可以轻松地在其他应用中打开文件。在PDF阅读器中打开PDF,用户可以选择使用哪种PDF阅读器。通过这样做,您可以为读者提供更多选项,而不仅仅是捏缩放(例如索引搜索,突出显示,快速导航UI),具体取决于他们安装的应用程序。如果他们没有PDF阅读器?建议一个免费的,并将它们链接到您选择的Android商店!

Render a PDF file using Java on Android

答案 1 :(得分:2)

老问题,但这是我找到的解决方案。

        WebView mWebView = (WebView) findViewById(R.id.webView);
        mWebView.getSettings().setJavaScriptEnabled(true);
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setBuiltInZoomControls(true);
        webSettings.setSupportZoom(true);

希望这有帮助!

答案 2 :(得分:0)

使用PDF-View可能更有意义,而不是使用WebView向用户显示PDF。这是我在Google上搜索后找到的一个库,但我从未使用它,所以我无法判断它的工作原理:https://code.google.com/p/apv/

编辑:这是PDF-lib列表的另一个答案:https://stackoverflow.com/a/6729135/1219113