2014-02-21 61 views
0

我有一個WebView,它帶有一些我想要轉換爲RTF格式的HTML內容。我已經看過RTF轉換函數,並且它們都看起來有點片面。所以我的想法是將WebView中的內容複製到RichEditBox,並從那裏保存到RTF。在WinRT下複製WebView中的內容

我已經多次看過這個例子。

WebBrowser1.Document.ExecCommand("SelectAll", false, null); 
WebBrowser1.Document.ExecCommand("Copy", false, null); 

不幸的是,WinRT中的WebView控件沒有文檔屬性,所以我不能做到這一點

有什麼辦法拉從控制內容?需要明確的是,我希望HTML本身 - 我可以得到的已經使用

InvokeScript("eval", new string[] { "document.getElementById('editor').innerHTML;" }); 

我要的是實際呈現 HTML - 一樣的,如果我要選擇我的一切按下CTRL + C,然後將其粘貼到寫字板中。

回答

2

這是我在嘗試完成更大任務時所問的一系列問題的一部分 - 在Windows應用商店應用中將HTML轉換爲RTF。

我很高興地報告說,上述可以完成。我終於想出瞭如何使用DataPackage - 通常用於在應用程序之間共享內容。

首先,這個javascript函數必須存在於webview加載的HTML中。

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

接下來,您需要將using Windows.ApplicationModel.DataTransfer;添加到文檔的頂部。沒有足夠的StackOverflow答案提到使用的名稱空間。我總是必須去找他們。

下面是做魔術代碼:

// 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); 

我花了大約2個星期試圖讓這個工作。它最終發現我的這種解脫,我不必手動編碼文件到RTF。現在,如果我能讓它反過來工作,我會欣喜若狂。對於我正在構建的應用程序來說不是必需的,但這將是一個可愛的功能。

UPDATE

回想起來你可能不必須的HTML功能,你很可能不用它(雖然我沒有測試過):

MyWebView.InvokeScript("execScript", new string[] {"document.body.createTextRange().select();"}) 
+0

它不如果圖像包含在HTML中,則工作。有任何想法嗎? – Shefali

+0

它看起來像RichEditBox中的圖像有一些問題。請參閱[這裏](http://social.msdn.microsoft.com/Forums/windowsapps/en-US/fd5e4f6e-3613-47bf-b57c-2aa19991e94d/saving-rtf-with-image-from-richeditbox-to-file ?forum = winappswithcsharp)和[here](http://social.msdn.microsoft.com/Forums/windowsapps/en-US/540f2747-b350-4eac-930d-0af5ade88e8b/cant-save-images-in-richeditbox?論壇= winappswithcsharp)。您可以直接保存它,而不必去RichEditBox – roryok

+0

嗨,我對你的解決方案非常感興趣,但是我不明白如何在html中注入javascript,如果我想要一個允許我下載的解決方案任何網頁的內容。我的意思是,如果該函數不存在於我想要複製的頁面中,那麼有什麼選擇? – Marc