此问题不会影响WinForms。
我已经从github站点下载了最低限度的示例:
https://github.com/cefsharp/CefSharp.MinimalExample
据我所知,一切都是最新的-我使用NuGet来确保已安装最新的CefSharp.Common,CefSharp.Wpf等-当前版本53。
当我用它浏览网页时,就可以了。问题是当我尝试查看基于PDF的页面时,例如:
http://www.cbu.edu.zm/downloads/pdf-sample.pdf
因此,在MainWindow.xaml中,我将“地址”属性绑定(bind)到该值,而不是“www.google.com”:
<Window x:Class="CefSharp.MinimalExample.Wpf.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wpf="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
Title="{Binding Path=Title, ElementName=Browser, Converter={StaticResource TitleConverter}}"
WindowState="Maximized">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<wpf:ChromiumWebBrowser Grid.Row="0"
x:Name="Browser"
Address="http://www.cbu.edu.zm/downloads/pdf-sample.pdf" />
<StatusBar Grid.Row="1">
<ProgressBar HorizontalAlignment="Right"
IsIndeterminate="{Binding IsLoading, ElementName=Browser}"
Width="100"
Height="16"
Margin="3" />
<Separator />
<!-- TODO: Could show hover link URL here -->
<TextBlock Text="{Binding Address, ElementName=Browser}"/>
</StatusBar>
</Grid>
当我运行示例时,为了导航至此PDF,屏幕将保持空白,并且进度控件不会更新:
...除非我做一些事情,例如最大化浏览器窗口的大小或移动它等,否则我可以查看它:
此后,还有另一个奇怪的问题,即滚动条和+/-按钮似乎无响应。我注意到,例如,如果确实按下“+”按钮,然后再按下另一个操作(例如最大化/还原),则预期的“+”操作似乎已经执行。同上滚动条和其他操作。
对于WinForms最小示例,它不会表现出此行为,如果有帮助,则仅显示Wpf。
任何建议,不胜感激。
最佳答案
已在GitHub站点上作为问题#1799的副本提出:
WPF/OffScreen PDF Viewer not working #1799
在发布版本55之前,网站上说明的解决方案是:
“建议的解决方法是在Ceforum上建议的计时器上调用Invalidate()
您可以回滚到51并使用disable-surfaces或等待55版发布。”
我发现回滚到以前的版本对我有用。
更新2019年1月21日
较新版本的CefSharp不再是问题。
关于c# - 使CefSharp正确处理WPF中的PDF文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40505140/