我正在研究基于Xamarin.Forms的项目,试图用分页打印webview内容 .
我已经提到了以下链接:How do I print WebView content in a Windows Store App?
但不幸的是,这种方式不适用于Xamarin.Forms,因为在上面的链接中演示的方式是使用webviewbrush填充矩形(窗口形状)(矩形和webviewbrush都是平台相关控件到UWP) . 问题是我们无法使用webviewbrush绘制矩形(Xamarin Forms形状) .
作为一种解决方法,我做了以下事情:
-
在xamarin表单PCL项目中创建了一个boxview
-
在UWP项目中为这个boxview创建了一个渲染器(这将为我们提供windows矩形形状)然后我将这个矩形形状放入PCL项目的App.cs类中的一个公共静态属性中,以使其可用于Webviewrenderer.cs用webviewbrush填充此矩形的类 .
-
我可以从UWP项目的webviewrenderer.cs类访问它,但问题是打印机对话框显示一个空页面 .
-
分页工作正常,如上面的堆栈溢出链接所示,但所有页面都是空的 .
显然问题是矩形 . 因为如果我创建一个本机UWP项目并且打印机对话框也显示网页,那么相同的逻辑工作正常 .
任何帮助将非常感激 .
提前致谢!
1 回答
我已根据您的流程实现了基本打印功能 . 我将
GetWebViewBrush
方法放在webviewrenderer
中 . 不幸的是,同样的问题出现在我身边 .当我进行调试时,我发现
webView.Name
从未设置过值,所以我为customWebView创建了一个新的Name
属性 .并使用
OnElementChanged
方法中的以下代码设置本机控件的Name
属性(Windows.UI.Xaml.Controls.WebView
) .令人惊讶的是,页面不再是空的 .