使用托管代码将.net html转换为图像

使用托管代码将.net html转换为图像,.net,html,image,service,screenshot,.net,Html,Image,Service,Screenshot,我有一个将HTML转换为图像并发回的服务 目前我正在使用WebBrowser控件来实现这一点。但这还远远不够完美。在高峰时间,服务崩溃或提供空引用异常。而且它在内存方面也不是轻量级的。我正在寻找此工作的轻量级托管选项 请让我知道任何开源项目或任何其他管理控制将做这项工作 更新: 我有非常简单的HTML来呈现。它只有表格、段落和样式表的字体和背景色。没有Javascript、元素浮动或其他复杂的布局。试试。试试。我最终决定使用WebBrowser控件,因为在我这边没有那么有效的HTML可用 我应该

我有一个将HTML转换为图像并发回的服务

目前我正在使用WebBrowser控件来实现这一点。但这还远远不够完美。在高峰时间,服务崩溃或提供空引用异常。而且它在内存方面也不是轻量级的。我正在寻找此工作的轻量级托管选项

请让我知道任何开源项目或任何其他管理控制将做这项工作

更新:
我有非常简单的HTML来呈现。它只有表格、段落和样式表的字体和背景色。没有Javascript、元素浮动或其他复杂的布局。

试试。

试试。

我最终决定使用WebBrowser控件,因为在我这边没有那么有效的HTML可用

我应该提到下面的帖子,它应该可以解决其他得到有效HTML的人的问题。它很少提到开源和付费控件


我最终决定使用WebBrowser控件,因为在我这边没有那么有效的HTML可用

我应该提到下面的帖子,它应该可以解决其他得到有效HTML的人的问题。它很少提到开源和付费控件

你可以试试

你可以试试


你知道你在要求另一个浏览器,对吗?所有涉及的复杂性和不兼容性。检查问题以获取更新。不确定我是否要求另一个浏览器,但另一个HTML渲染器。是的,但HTML渲染器=90%的浏览器折扣,99.9%的不兼容性折扣。无论如何,你不会发现任何简单或小的东西。但是你可能比基于IE的网络控制做得更好。你确实意识到你在要求另一个浏览器,对吗?所有涉及的复杂性和不兼容性。检查问题以获取更新。不确定我是否要求另一个浏览器,但另一个HTML渲染器。是的,但HTML渲染器=90%的浏览器折扣,99.9%的不兼容性折扣。无论如何,你不会发现任何简单或小的东西。但是你可能比基于IE的WebControl做得更好。我相信你指的是WebKit浏览器控件。它看起来类似于带有事件的Webbrowser控件。我在寻找类似object.GetImage(HTML)的东西。如果你说的是其他控件,请告诉我。我相信你指的是WebKit浏览器控件。它看起来类似于带有事件的Webbrowser控件。我在寻找类似object.GetImage(HTML)的东西。如果您正在谈论其他控件,请告诉我。当前的Awesomium版本有。当前的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();
        }
    }
}