Copying the content from a WebView under WinRT

后端 未结 1 1452
粉色の甜心
粉色の甜心 2021-01-07 00:30

I\'ve got a WebView with some HTML content which I want to convert into RTF. I\'ve looked at the RTF conversion functions out there and they all look a little f

相关标签:
1条回答
  • 2021-01-07 01:17

    This is part of a series of questions I asked in trying to accomplish a bigger task - converting HTML to RTF in a Windows Store App.

    I'm delighted to report that the above can be done. I finally figured out how to do it, using DataPackage - normally used for sharing content between apps.

    First, this javascript function must exist in the HTML loaded in the webview.

    function select_body() {
        var range = document.body.createTextRange(); 
        range.select();
    }
    

    Next, you'll need to add using Windows.ApplicationModel.DataTransfer; to the top of your document. Not enough StackOverflow answers mention the namespaces used. I always have to go hunting for them.

    Here's the code that does the magic:

    // call the select_body function to select the body of our document
    MyWebView.InvokeScript("select_body", null);
    
    // capture a DataPackage object
    DataPackage p = await MyWebView.CaptureSelectedContentToDataPackageAsync();
    
    // extract the RTF content from the DataPackage
    string RTF = await p.GetView().GetRtfAsync();
    
    // SetText of the RichEditBox to our RTF string
    MyRichEditBox.Document.SetText(Windows.UI.Text.TextSetOptions.FormatRtf, RTF);
    

    I've spent about 2 weeks trying to get this to work. Its such a relief to finally discover I don't have to manually encode the file to RTF. Now if I can just get it to work the other way around, I'll be ecstatic. Not essential to the app I'm building, but it would be a lovely feature.

    UPDATE

    In retrospect you probably don't need to have the function in the HTML, you could probably get away with this (though I haven't tested):

    MyWebView.InvokeScript("execScript", new string[] {"document.body.createTextRange().select();"})
    
    0 讨论(0)
提交回复
热议问题