.net html для изображения с управляемым кодом

У меня есть сервис, который конвертирует HTML в изображение и отправляет обратно.

В настоящее время я использую элемент управления WebBrowser для этого. Но это далеко не идеально. В часы пик служба аварийно завершает работу или выдает исключение Null reference. Также он не легковесен по памяти. Я ищу легкий управляемый вариант для этой работы.

Пожалуйста, дайте мне знать о любом проекте с открытым исходным кодом или о любом другом управляемом элементе управления, который будет выполнять эту работу.

Обновление: у меня очень простой HTML для рендеринга. Это только с таблицей, абзацем и таблицей стилей для шрифта и цвета фона. Здесь нет Javascript, элемента float или другого сложного макета.


person BigBoss    schedule 06.10.2010    source источник
comment
Вы понимаете, что просите другой браузер, верно? Со всеми сопутствующими сложностями и несовместимостями.   -  person Henk Holterman    schedule 06.10.2010
comment
проверить вопрос для обновления. Не уверен, что я прошу другой браузер, но другой HTML-рендерер.   -  person BigBoss    schedule 06.10.2010
comment
Да, но HTML-рендерер = 90 % от браузера и 99,9 % от несовместимости.   -  person Henk Holterman    schedule 06.10.2010
comment
Во всяком случае, вы не найдете ничего простого или маленького. Но вы, вероятно, можете добиться большего успеха, чем WebControl на основе IE.   -  person Henk Holterman    schedule 06.10.2010


Ответы (3)


Вы можете попробовать Awesomium

using System;
using AwesomiumSharp;
using System.Threading;
using System.Diagnostics;

namespace AwesomiumSharpBasic
{
    class Program
    {
        static void Main( string[] args )
        {
            // Display some informative message. Loading the page
            // may  take a while depending on your internet
            // connection speed.
            Console.WriteLine( "Getting a 1024x768 snapshot" +
                "of http://www.awesomium.com ..." );

            // Create a WebView.
            // WebView implements IDisposable. You can dispose and
            // destroy the view by calling WebView.Close().
            // Here we demonstrate wrapping it in a using statement.
            using ( WebView webView =
                    WebCore.CreateWebView( 1024, 768 ) )
            {
                // Variable used to announce
                // that the page has loaded.
                bool finishedLoading = false;

                // Load a page in the view.
                webView.LoadURL( "http://www.awesomium.com" );
                // Handle the LoadCompleted event to monitor
                // page loading.
                webView.LoadCompleted += ( sender, e ) =>
                {
                    finishedLoading = true;
                };

                // Wait for the page to load.
                while ( !finishedLoading )
                {
                    Thread.Sleep( 100 );
                    // WebCore provides an Auto-Update feature
                    // for UI applications. A console application
                    // has no UI and no synchronization context
                    // so we need to manually call Update here.
                    WebCore.Update();

                }
                // Render to a pixel buffer and save the buffer
                // to a .png image.
                webView.Render().SaveToPNG( "result.png", true );
            }

            // Start the application associated with .png files
            // and display the file.
            Process.Start( "result.png" );

            // Shut down Awesomium before exiting.
            WebCore.Shutdown();
        }
    }
}
person fa wildchild    schedule 22.03.2012
comment
текущая версия Awesomium имеет другой синтаксис. - person lstern; 12.04.2013

Попробуйте WebKit .Net.

person SLaks    schedule 06.10.2010
comment
Я полагаю, вы указываете на элемент управления WebKitBrowser. Это похоже на элемент управления Webbrowser с событием. Я искал что-то вроде object.GetImage(HTML). Дайте мне знать, если вы говорите о каком-то другом контроле. - person BigBoss; 06.10.2010

В конце концов я остановился на элементе управления WebBrowser из-за не очень корректного HTML, доступного на моем конце.

Я должен упомянуть следующий пост, который должен решить проблему для других парней, которые получили правильный HTML. В нем упоминается несколько открытых и платных элементов управления.

http://www.codinghorror.com/blog/2004/10/managed-html-rendering.html

person BigBoss    schedule 22.11.2011