В CEFsharp я хочу иметь возможность либо разрешить плагину PDF отображать PDF, либо загрузить файл и показать его с установленной на ПК программой PDF по умолчанию.
Для отображения по умолчаниюПрограмма PDF Я использую команду CefCommandLineArgs.Add("disable-pdf-extension", "1")
и реализую интерфейс загрузчика.Чтобы показать PDF-файлы в плагине, я не устанавливаю команду CefCommandLineArgs.Add("disable-pdf-extension", "1")
, которая, в свою очередь, означает, что обработчик загрузки не вызывается.
Существует веб-сайт, который имеет какую-то функцию быстрого просмотра файлов.Это означает, что у него есть панель, в которой он показывает файл.Проблема в том, что при CefCommandLineArgs.Add("disable-pdf-extension", "1")
панель веб-сайтов остается пустой, а файл PDF загружается через обработчик загрузок.
Я уже могу сказать, что OnBeforeBrowse (через URL), веб-сайт пытается показатьpdf на панели и, конечно, см. тип MIME в OnBeforeResourceLoad и OnResourceResponse.
Мой вопрос: как мне заставить мой браузер использовать плагин по умолчанию в этом случае?
Решение, которое я могу придумать, - не устанавливать CefCommandLineArgs.Add("disable-pdf-extension", "1")
, что позволяет этой специальной функции быстрого просмотра работать.Однако если я хочу, чтобы все другие PDF-файлы отображались в программе PDF по умолчанию, мне нужно перехватить загрузку PDF-файла (например, в OnBeforeBrowse) и загрузить его с помощью других сборок .NET, таких как HTTPWebRequest.Проблема с этим методом заключается в том, что мне нужно собирать и отправлять куки, и это похоже на взлом, который не будет длиться долго, если веб-сайт изменится.