Я пытаюсь найти способ отображения локальных файлов PDF на xamarin.forms.Я нашел решение с реализацией пользовательской реализации webview и его рендеринга: pdf reader
Основной код:
public class CustomWebView : WebView
{
public static readonly BindableProperty UriProperty = BindableProperty.Create<CustomWebView, string>(p => p.Uri, default(string));
public string Uri
{
get { return (string)GetValue(UriProperty); }
set { SetValue(UriProperty, value); }
}
}
Визуализация:
[assembly: ExportRenderer (typeof(CustomWebView), typeof(CustomWebViewRenderer))]
namespace DisplayPDF.iOS
{
public class CustomWebViewRenderer : ViewRenderer<CustomWebView, UIWebView>
{
protected override void OnElementChanged (ElementChangedEventArgs<CustomWebView> e)
{
base.OnElementChanged (e);
if (Control == null) {
SetNativeControl (new UIWebView ());
}
if (e.OldElement != null) {
// Cleanup
}
if (e.NewElement != null) {
var customWebView = Element as CustomWebView;
string fileName = Path.Combine (NSBundle.MainBundle.BundlePath, string.Format ("Content/{0}", WebUtility.UrlEncode (customWebView.Uri)));
Control.LoadRequest (new NSUrlRequest (new NSUrl (fileName, false)));
Control.ScalesPageToFit = true;
}
}
}
}
И моя страница:
public class WebViewPageCS : ContentPage
{
public WebViewPageCS ()
{
webView = new CustomWebView
{
Uri = "ScalaReference.pdf",
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand
};
}
Но сейчас я не могу найти способ добавить привязку к этому файлу PDF, как описано в этом посте: привязку к PDF
Также я попытался использовать этот код для оценки сценария:
private async void Scroll_Clicked(object sender, EventArgs e)
{
webView.Eval($"window.scrollTo(0, {x});");
}
он отлично работает с веб-просмотром по умолчанию, но не с пользовательским.
Возможно, кто-то знает какой-либо другой способ прокрутки /установить привязку к pdf и ссылку на эту привязку через xamarin.forms?Спасибо.