在 webview 控件中显示本地 PDF 文件 - 显示空白 Pdf 文件
display local PDF file in webview control - Displays Blank Pdf File
我正在研究 Xamarin Forms - UWP。
我想在 webview 控件中显示本地 PDF 文件。我点击了这两个链接:-
https://developer.xamarin.com/recipes/cross-platform/xamarin-forms/controls/display-pdf/
它打开了pdf文件,但是内容是空白的。
谁能帮我解决我可能遗漏的问题?
提前致谢!
这是我的代码:-
CustomWebView.cs
public class CustomWebView : WebView
{
public static readonly BindableProperty UriProperty = BindableProperty.Create(propertyName: "Uri",
returnType: typeof(string),
declaringType: typeof(CustomWebView),
defaultValue: default(string));
public string Uri
{
get { return (string)GetValue(UriProperty); }
set { SetValue(UriProperty, value); }
}
}
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:PdfViewer;assembly=PdfViewer"
x:Class="PdfViewer.MainPage"
Padding="0,20,0,0">
<ContentPage.Content>
<local:CustomWebView Uri="samplepdf.pdf" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" />
</ContentPage.Content>
[assembly: ExportRenderer(typeof(PdfViewer.CustomWebView), typeof(CustomWebViewRenderer))]
namespace PdfViewer.UWP
{
public class CustomWebViewRenderer : WebViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
var customWebView = Element as CustomWebView;
Control.Source = new Uri(string.Format("ms-appx-web:///Assets/pdfjs/web/viewer.html?file={0}", string.Format("ms-appx-web:///Assets/Content/{0}", WebUtility.UrlEncode(customWebView.Uri))));
}
}
}
}
UWP - Assets - pdfjs structure
我在按照官方文档实施HybridWebView
时遇到了类似的问题运行。
问题是PDF文件的build action 属性不是Content
。
请在您的 uwp 客户端项目中将构建操作设置为 Content
。
资产文件夹文件似乎出了问题。当从 nuget 存储库更新时它起作用了。
我正在研究 Xamarin Forms - UWP。 我想在 webview 控件中显示本地 PDF 文件。我点击了这两个链接:- https://developer.xamarin.com/recipes/cross-platform/xamarin-forms/controls/display-pdf/
它打开了pdf文件,但是内容是空白的。 谁能帮我解决我可能遗漏的问题?
提前致谢!
这是我的代码:- CustomWebView.cs
public class CustomWebView : WebView
{
public static readonly BindableProperty UriProperty = BindableProperty.Create(propertyName: "Uri",
returnType: typeof(string),
declaringType: typeof(CustomWebView),
defaultValue: default(string));
public string Uri
{
get { return (string)GetValue(UriProperty); }
set { SetValue(UriProperty, value); }
}
}
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:PdfViewer;assembly=PdfViewer"
x:Class="PdfViewer.MainPage"
Padding="0,20,0,0">
<ContentPage.Content>
<local:CustomWebView Uri="samplepdf.pdf" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" />
</ContentPage.Content>
[assembly: ExportRenderer(typeof(PdfViewer.CustomWebView), typeof(CustomWebViewRenderer))]
namespace PdfViewer.UWP
{
public class CustomWebViewRenderer : WebViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
var customWebView = Element as CustomWebView;
Control.Source = new Uri(string.Format("ms-appx-web:///Assets/pdfjs/web/viewer.html?file={0}", string.Format("ms-appx-web:///Assets/Content/{0}", WebUtility.UrlEncode(customWebView.Uri))));
}
}
}
}
UWP - Assets - pdfjs structure
我在按照官方文档实施HybridWebView
时遇到了类似的问题运行。
问题是PDF文件的build action 属性不是Content
。
请在您的 uwp 客户端项目中将构建操作设置为 Content
。
资产文件夹文件似乎出了问题。当从 nuget 存储库更新时它起作用了。