2011-08-07 8 views
2

문제는 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

을 : 먼저 크기와 둘째를 얻을 수있는 스크린 샷을 만들 : 나는 두 개의 웹보기를 사용하여 그것을 해결하려면 스크롤 치수는 WebView.Resize를 사용하여 크기를 조정 한 다음 크기 조정 작업이 완료 될 때까지 기다려야합니다 (WebView.IsResizing 참조). http://labs.awesomium.com/capturing-web-pages-with-c/

코드는 C API를 사용하지만 닷넷 API와 매우 비슷해야합니다

는 최근 Awesomium 사용하여 전체 웹 페이지를 캡처하는 방법에 대한 자습서를 썼다. 또한 RAM을 죽이지 않고도 매우 긴 웹 페이지를 여러 이미지로 캡처하는 방법을 보여주는 코드 예제 (링크가 아래쪽에 있음)가 있습니다.

희망이 도움이됩니다.

+1

고맙습니다. 매우 유용했습니다. Resharper가 "크기"를 입력 할 때 Resharper가 표시하지 않는 것처럼 Resize 메서드를 놓쳤습니다. ( – SiberianGuy

+0

안녕하세요 @ 아담, 현재 웹킷을 PDF로 변환하려고하는 WebKit (Qt 또는 Gtk와 같은 래퍼 사용 중)을 평가 중입니다. http://wkhtmltopdf.org에서 PDF를 제작하는 것이 다소 좋은 것으로 판명되었지만 (때때로 PDF를 제대로 렌더링 할 수없는 경우도 있음) 이제 Awesomium을보고 답변에서 언급 한 것처럼 스크린 샷 기능을 테스트하는 중입니다. 따라서 awesomium에는 PDF 변환 기능이 내장되어 있습니까? 아니면 직접 구현해야하는 것입니까? 감사합니다. – swdev

+1

자습서 링크를 업데이트 할 수 있습니까? –

관련 문제