在xamarin表单pcl项目中打开远程pdf的最佳方法

时间:2017-04-27 19:21:10

标签: xamarin xamarin.ios xamarin.android xamarin.forms xamarin-studio

对于Ios和Android,在xamarin pcl应用程序中加载服务器上的pdf是最好的方法。是否有一个好的nuget或我们必须编写自定义渲染器?

3 个答案:

答案 0 :(得分:6)

在应用中打开PDF,您有几个选择。

iOS已经在其WebView中支持PDF了一段时间。 Android没有。如果要在WebView中执行此操作,可以执行以下操作:

var webView = new WebView();
webView.Source = new UrlWebViewSource() { Url = "https://example.com/my.pdf" };

如果您只支持Android API 21及更高版本,则只能使用PdfRenderer for Android。

如果您需要支持旧设备,或者想要跨平台方法,则有2个选项。如果是公共PDF文档,您可以采用简单的方法并使用Google的PDF查看器

var webView = new WebView();
var pdfUrl = "https://example.com/my.pdf";
var googleUrl = "http://drive.google.com/viewerng/viewer?embedded=true&url=";
webView.Source = new UrlWebViewSource() { Url = googleUrl + pdfUrl };

如果它是安全的,您必须先将其下载到您的应用程序,请使用Mozilla的PDFJS Viewer。 Xamarin在这里进行了一次演练:https://developer.xamarin.com/recipes/cross-platform/xamarin-forms/controls/display-pdf/

答案 1 :(得分:1)

就像蒂姆所说,在iOS上你可以使用指向远程PDF的WebView来继续你的生活。

在Android上,默认情况下WebView无法处理PDF(W.T.F !!)。

这意味着您必须执行以下操作之一:

  1. 使用远程PDF:

    • 使用Google Drives网址https://drive.google.com/viewerng/viewer?url=<PDF URL HERE>
  2. 在本地下载PDF:

    • 使用PDF.js在WebView(here
    • 中显示它
    • 在Android上使用Intent向Android询问用户已经安装了哪些可以处理PDF的应用(Xamarin Forms link

答案 2 :(得分:0)

我不知道任何现有的Xamarin Forms PDF插件会为您执行此操作。

您必须使用自定义渲染器才能实现此目的。除非可以在浏览器中而不是在您的应用程序中打开远程PDF。在这种情况下,您可以使用Device.OpenUri(...)打开它。

另一种选择是在您的Xamarin Forms应用程序中加入WebView,然后在那里打开PDF。这样可以防止用户在打开PDF时实际离开应用程序。