对于Ios和Android,在xamarin pcl应用程序中加载服务器上的pdf是最好的方法。是否有一个好的nuget或我们必须编写自定义渲染器?
答案 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 !!)。
这意味着您必须执行以下操作之一:
使用远程PDF:
https://drive.google.com/viewerng/viewer?url=<PDF URL HERE>
在本地下载PDF:
Intent
向Android询问用户已经安装了哪些可以处理PDF的应用(Xamarin Forms link)答案 2 :(得分:0)
我不知道任何现有的Xamarin Forms PDF插件会为您执行此操作。
您必须使用自定义渲染器才能实现此目的。除非可以在浏览器中而不是在您的应用程序中打开远程PDF。在这种情况下,您可以使用Device.OpenUri(...)
打开它。
另一种选择是在您的Xamarin Forms应用程序中加入WebView,然后在那里打开PDF。这样可以防止用户在打开PDF时实际离开应用程序。