如何使用 ResourceHandler 使用 CefSharp ChromiumWebBrowser 从 MemoryStream 或字节数组呈现 PDF 文件?

How can I use a ResourceHandler to render a PDF file from a MemoryStream or byte array using CefSharp ChromiumWebBrowser?

我有相同的用例。但是,我在将答案的各个部分放在一起时遇到了一些麻烦。

我试过这个代码:

private async Task LoadPdfFromStream()
{
    if (Element != null && Element.Source != null)
    {
        if (_webView.ResourceRequestHandlerFactory == null)
        {
            _webView.ResourceRequestHandlerFactory = new ResourceRequestHandlerFactory();
        }

        var handler = _webView.ResourceRequestHandlerFactory as ResourceRequestHandlerFactory;

        if (handler != null)
        {
            var ret = handler.RegisterHandler("file:///loadfromstream", Element.Source.ToArray());
        }

        _webView.Address = "file:///loadfromstream";
    }
}

Element.Source.ToArray() returns 包含 PDF 文件的字节数组。但是现在我将屏幕上文件的原始内容呈现为纯文本,而不是 HTML.

如何使用缩放按钮等将内容加载为 PDF,而不是将原始内容加载为纯文本?

仔细研究之后,我意识到我只是缺少 mime 类型。

_pdfHandler.RegisterHandler(streamUri, Element.Source.ToArray(), "application/pdf");

现在 PDF 可以很好地从内存流呈现到 Web 视图中。 :)