2011-07-19 14 views
4

私は、ユーザー用のインタラクティブなフィードバックツールを備えたWebアプリケーションを開発しています。このアプリケーションでは、フィードバックの送信ボタンをクリックできます。ボタンは現在のWebページ上にオーバーレイを表示し、ハイライトエリアDIVをドラッグして特定のエリアを強調表示させることができます。フィードバックを提出すると、ページ全体のHTMLがAJAX経由でサーバーに戻されます。C#でHTMLを含む文字列を画像にレンダリングする方法は?

サーバーに接続すると、ページのHTMLを含む文字列が表示されます。ここからは、この文字列をHTMLをレンダリングしてイメージを構築する何らかのエンジンを通して実行したいと考えています。もしそうならスクリーンショットを撮る方法についての一種のラウンド。

どうすればこのようなことが達成できますか?利用可能なエンジンはC#で書かれており、HTMLを構築して画像をレンダリングすることができますか?

+2

オプション1、ディリーの答えはこちらhttp://stackoverflow.com/questions/334532/render-html-as-an-image –

+0

@DustinDavisそれはウェブフォームコントロールではありませんか?これはWebアプリケーションです。 – Chev

+0

@Alex Ford、そのHTML文字列のCSSスタイルはどうですか?純粋なHTMLをレンダリングすることを考えていますか? – Tocco

答えて

2

チェックアウト、このフレームワークです。

ベースURLを設定し、これはその後、HTMLを読み込む任意の相対URL

WebCore.SetBaseDirectory("C:\\MyApplication\\MyBaseDirectory"); 

を解決するために必要とされるであろう -

myWebView.LoadHTML("<p>Hello World!</p>"); 

その後.Render()メソッドを使用して、あなた'LLレンダリングされたコンテンツを画像に保存することができます。

+0

これは間違いなく私が探しているものです。 – Chev

+0

D:2900ドルを除いて!!! Dang ...悲しいことに、私たちの会社は$ 100k以上のものを作っていますが、私が望むのは比較的単純なので、$ 2900で春になることはありません。 – Chev

+0

私は、Googleがやっている方法に固執し、HTML5の 'canvas'タグを使ってスクリーンショットを描くという安いルートに行きたいかのようです。次に、HTML 4ブラウザの機能を制限するだけです。 – Chev

0

非常に興味深い質問と私はあなたのために銀色の弾丸を持っていない。

あなたは確かにいくつかの説明のブラウザエンジンが必要になり、レンダリングされた出力をビットマップとしてキャプチャします。

this questionから、WebKit用に開発されたCOMラッパーがあることがわかります。たぶんそれは良い出発点です。

2

あなたがGeckoに行きたい場合は、LLMozLibをご検討ください。
は、Windows上でのGeckoを埋め込むためのActiveXコントロールがありますhere

EDIT

詳細を参照してください。
Sample here

私はそれがWindowsフォームアプリケーションで作業してしまったEDIT


these resourcesを使用してください。 http://awesomium.com/

これは、何が必要正確である -
それはヤモリにCSHARPラッパー...私のサンプルコードです

...

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     Xpcom.Initialize(@"C:\Users\esouza\Downloads\xulrunner"); //Tell where are XUL bin 
     InitializeComponent(); 
     //geckoWebBrowser1 is an instance of GeckoWebBrowser control that I've dragged on the Form1 
     geckoWebBrowser1.DocumentCompleted += new EventHandler(geckoWebBrowser1_DocumentCompleted); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     geckoWebBrowser1.Navigate("http://www.google.com"); 
    } 

    void geckoWebBrowser1_DocumentCompleted(object sender, EventArgs e) 
    { 
     Bitmap b = new Bitmap(geckoWebBrowser1.Width, geckoWebBrowser1.Height); 
     geckoWebBrowser1.DrawToBitmap(b, new Rectangle { X = 0, Y = 0, Width = 800, Height = 600 }); 
     b.Save("file.bmp"); 
    } 
} 
+0

ああ...彼らはWebKitにも変更されました... – Tocco

関連する問題