.net HTML для изображения с управляемым кодом - PullRequest
0 голосов
/ 06 октября 2010

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 22 марта 2012

Можно попробовать 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();
        }
    }
}
1 голос
/ 06 октября 2010

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

0 голосов
/ 22 ноября 2011

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

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

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

...