WPF по умолчанию использует браузер на основе IE.Чтобы иметь возможность просматривать PDF-файлы, в IE должен быть установлен плагин, который может отображать PDF-файлы.
В дополнение к серому фону, это может случиться с ПК, где IE не 'у вас не установлен PDF-плагин (Acrobat Reader и т. д.):
Если вы не хотите устанавливать плагины, один из способов обойти этопроблема заключается в использовании Windows 10 API для рисования PDF.
Другой вариант - сторонняя библиотека, например CefSharp .Вот шаги для использования CefSharp:
Сначала установите Nuget CefSharp.WPF
Во-вторых, измените XAML из стандартного веб-браузера на:
<wpf:ChromiumWebBrowser Loaded="ChromiumWebBrowser_Loaded" x:Name="Browser"></wpf:ChromiumWebBrowser>
Затемсоздайте пользовательские преобразователи для CefSharp:
public class CustomProtocolSchemeHandler : ResourceHandler
{
public CustomProtocolSchemeHandler()
{
}
public override bool ProcessRequestAsync(IRequest request, ICallback callback)
{
return true;
}
}
public class CustomProtocolSchemeHandlerFactory : ISchemeHandlerFactory
{
public const string SchemeName = "customFileProtocol";
public IResourceHandler Create(IBrowser browser, IFrame frame, string schemeName, IRequest request)
{
return new CustomProtocolSchemeHandler();
}
}
Почти наконец, зарегистрируйте преобразователи в App.xaml.cs:
public partial class App : Application
{
protected override void OnLoadCompleted(NavigationEventArgs e)
{
var settings = new CefSettings();
settings.RegisterScheme(new CefCustomScheme
{
SchemeName = CustomProtocolSchemeHandlerFactory.SchemeName,
SchemeHandlerFactory = new CustomProtocolSchemeHandlerFactory(),
IsCSPBypassing = true
});
settings.LogSeverity = LogSeverity.Error;
Cef.Initialize(settings);
}
}
Теперь все должно работать:
Подробнее об использовании CefSharp: https://www.codeproject.com/Articles/881315/Display-HTML-in-WPF-and-CefSharp-Tutorial-Part