日期:2014-05-18  浏览次数:20522 次

HTML生成图片问题
有没方法让HTML生成图片,求解,如例:

<p><img width=\"500\" height=\"334\" alt=\"\" src=\"/uploads/1(4).jpg\" /></p>\r\n<div class=\"blkCont\" style=\"margin: 0px 20px\">\r\n<p>继3月14日全球发布之后,微软中国3月21日在北京正式面向中国消费者推出Internet Explorer 9(以下简称IE9)。IE9浏览器正式版在全球发布后得到用户追捧,24小时内下载次数达到235万。目前在全球范围内已有包括中国网站在内的250多家顶级网站利用IE9的功能为用户提供与众不同的体验,用户覆盖到全球超过10亿的活跃网络用户。</p>\r\n<p>IE9利用了Windows 7以及电脑硬件的性能,支持HTML 5和CSS3等现代网络标准,具有快速、简洁、可靠、具有互操作性等新特性,充分让用户把目光聚焦到网站和应用本身,创造出如同本地应用程序般的&ldquo;沉浸式&rdquo;浏览体验。</p>\r\n</div>

把这段HTML生成图片,应如何处理呢

------解决方案--------------------
帮你 顶下。
确实不知道怎么能实现,肯定要先模拟IE解析,然后在通过动态获取坐标来进行像素取点,最后生成图案片。
------解决方案--------------------
有。
C# code
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using mshtml;
using SHDocVw;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                webBrowser1.Navigate("http://www.google.com/");
                while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
                {
                    Application.DoEvents();
                }

                mshtml.IHTMLDocument2 doc = webBrowser1.Document.DomDocument as IHTMLDocument2;
                IHTMLElementRender render = doc.body as IHTMLElementRender;

                using (System.Drawing.Bitmap img = new Bitmap(webBrowser1.Width, webBrowser1.Height))
                using (Graphics g = Graphics.FromImage(img))
                {
                    IntPtr hdc = g.GetHdc();
                    render.DrawToDC(hdc);
                    g.ReleaseHdc(hdc); 
                    img.Save("c:\\temp\\a.jpg");
                }
            }
            catch (Exception err)
            {
                MessageBox.Show(err.ToString());
            }
        }
    }

    /// <remarks>
    ///  prototype from Tlbimp  
    /// </remarks>
    [
    Guid("3050F669-98B5-11CF-BB82-00AA00BDCE0B"),
    InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown),
    ComImport
    ]
    interface IHTMLElementRender
    {
        void DrawToDC([In] IntPtr hDC);
        void SetDocumentPrinter([In, MarshalAs(UnmanagedType.BStr)] string bstrPrinterName, [In] IntPtr hDC);
    };
}