2011-08-07 15 views
2

問題は、WebViewの作成中に幅と高さが設定されているため、ページが読み込まれた後に変更するオプションが表示されず、実際のサイズがわかったということです。あなたが受け取った後代わりに新しいのWebViewを作成する...どのようにページ全体のスクリーンショットを取得するにはawesomiumですか?

static bool finishedLoading; 
static bool finishedScroll; 
static ScrollData scrollData; 

static void Main(string[] args) 
{ 
    WebCore.Initialize(new WebCoreConfig() { CustomCSS = "::-webkit-scrollbar { visibility: hidden; }" }); 

    var webView1 = WebCore.CreateWebView(800, 600, false); 
    webView1.LoadURL("http://someurl"); 
    webView1.LoadCompleted += OnFinishLoading; 

    while (!finishedLoading) 
    { 
     Thread.Sleep(100); 
     WebCore.Update(); 
    } 

    webView1.RequestScrollData(); 
    webView1.ScrollDataReceived += new ScrollDataReceivedEventHandler(ScrollDataReceived); 

    while (!finishedScroll) 
    { 
     Thread.Sleep(100); 
     WebCore.Update(); 
    } 

    var webView2 = WebCore.CreateWebView(scrollData.ContentWidth, scrollData.ContentHeight, false); 

    finishedLoading = false; 
    webView2.LoadURL("http://someUrl"); 
    webView2.LoadCompleted += OnFinishLoading; 

    while (!finishedLoading) 
    { 
     Thread.Sleep(100); 
     WebCore.Update(); 
    } 

    webView2.Render().SaveToPNG("filePath"); 

    WebCore.Shutdown(); 
} 

static void ScrollDataReceived(object sender, ScrollDataEventArgs e) 
{ 
    finishedScroll = true; 
    scrollData = e.ScrollData; 
} 

static void OnFinishLoading(object sender, EventArgs e) 
{ 
    finishedLoading = true; 
} 

私はより良い方法があると思います

答えて

2

を:最初のサイズと第二を取得するためにスクリーンショットを作るために:私は2つのWebViewを使用し、それを回避するにはスクロールディメンションは、WebView.Resizeを使用してサイズを変更してから、サイズ変更操作が完了するまで待つだけです(WebView.IsResizingを参照)。

私は最近Awesomiumを使用して、全体のWebページをキャプチャする方法についてのチュートリアルを書きました:http://labs.awesomium.com/capturing-web-pages-with-c/

コードは、CのAPIを使用しますが、それは、.NET APIと非常に類似していなければなりません。また、非常に長いWebページを複数の画像にキャプチャする方法を示す完全なコード例(リンクは最下部にあります)があります。

希望すると便利です。

+1

ありがとう、それは非常に便利でした!私はResharperが "サイズ"を入力するときにResharperが表示されないようにResizeメソッドを見逃しています:( – SiberianGuy

+0

現在、私はWebKitを(QtやGtkのようなラッパーを使用して)WebページをPDFに変換しようとしています。 (PDFを正しくレンダリングすることができないようだが)PDFを作成するには、かなり良いと判明しているhttp://wkhtmltopdf.orgを参照してください。今、あなたの答えが記載されているように、Awesomiumとスクリーンショット機能をテストしていますそれで、awesomiumにPDF変換機能が組み込まれているのか、それとも自分で実装する必要があるのでしょうか?ありがとう! – swdev

+1

チュートリアルへのリンクを更新できますか? –