如何等待WebViewBrush.Redraw()完成(UWP打印)?
我有一个基本的UWP应用程序,内嵌WebView呈现相当大的
HTML文档(最多500个字母大小的打印页面).
我想添加对HTML文档打印的支持.这是我的方法: >为了支持分页,我使用< div style =“height:100vh”>生成第二个分成“页面”的HTML文档.对于每个“页面”,最多500个. >我将WebView的scrollY设置为仅使用JavaScript显示当前页面:window.scrollTo(0,-pageOffset) 问题: 我可以生成所有500页的打印预览,但有时预览会丢失页面而其他页面会多次显示. 我怀疑这是因为我使用WebViewBrush.Redraw()来捕获滚动的WebView的快照,但文档说Redraw()是异步发生的.我可以滚动浏览当前页面,然后WebViewBrush有机会重绘,因此意外捕获下一页. 如何确保WebViewBrush已捕获WebView以便我可以滚动到下一页? 我的代码生成一个页面: private async Task<Rectangle> MakePage(WebView webView,Size pageSize,double pageOffset) { // Scroll to next page: await webView.EvaluateJavaScriptSnippetAsync( $"window.scrollTo(0,{pageOffset})"); var brush = new WebViewBrush(); brush.Stretch = Stretch.Uniform; brush.SetSource(webView); brush.Redraw(); // XXX Need to wait for this,but there's no API // Add a delay hoping Redraw() finishes... I think here is the problem. await Task.Delay(150); var rectangle = new Rectangle() { Width = pageSize.Width,Height = pageSize.Height }; rectangle.Fill = brush; brush.Stretch = Stretch.UniformToFill; brush.AlignmentY = AlignmentY.Top; return rectangle; } 注意:如果有使用WebViewBrush打印500页的替代方法,我可以提供建议.我尝试为每个页面使用单独的WebView,但应用程序在200页后耗尽内存. BOUNTY:我开始向任何可以弄清楚如何打印500页的人提供100分的赏金.
根据
WebViewBrush remarks的重要部分:
这样你就可以在 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- reactjs – jest没有实现window.alert()
- windows-server-2012 – Solidworks:此虚拟环境不支持激活
- windows – Inno Setup在静默安装期间将锁定文件替换为下次
- winforms – ScrollBar不会在Select()上滚动
- .net – System.Serializable属性在Windows 10的UWP应用程序
- windows – 从vim会话中删除缓冲区
- windows – 如何克隆计算机以为每个计算机提供唯一的计算机
- windows-server-2008-r2 – IPv6主机不响应Neighbor Solici
- windows-runtime – 将字典绑定到WinRT ListBox
- windows-8 – 在MetroStyle应用程序中使用COM对象