c# - convertir - itextsharp pdf from html string




Convertir la cadena HTML a la imagen (2)

Tengo una variable de cadena que contiene el marcado HTML. Este marcado HTML básicamente representa el contenido del correo electrónico.

Ahora quiero crear una imagen a partir de este contenido de cadena que en realidad contiene el marcado HTML. No quiero crear el archivo HTML escribiendo este contenido en ellos. Solo quiero crear un archivo de imagen usando esta cadena.

Esto es lo que tengo:

string emailBody="<html><head></head><body><p>This is my text<p>...</body</html>"

¿Cómo puedo crear una imagen a partir de este contenido de cadena de emailBody ?


Gracias a todos por sus respuestas. HtmlRenderer la HtmlRenderer externa de HtmlRenderer (biblioteca) para lograr lo mismo y se encuentra debajo del amoghnatu.wordpress.com/2013/05/13/… para el mismo.

Aquí está el código para esto

public void ConvertHtmlToImage()
{
   Bitmap m_Bitmap = new Bitmap(400, 600);
   PointF point = new PointF(0, 0);
   SizeF maxSize = new System.Drawing.SizeF(500, 500);
   HtmlRenderer.HtmlRender.Render(Graphics.FromImage(m_Bitmap),
                                           "<html><body><p>This is a shitty html code</p>"
                                           + "<p>This is another html line</p></body>",
                                            point, maxSize);

   m_Bitmap.Save(@"C:\Test.png", ImageFormat.Png);
}

Intenta lo siguiente:

using System;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;

class Program
{
    static void Main(string[] args)
    {
        var source =  @"
        <!DOCTYPE html>
        <html>
            <body>
                <p>An image from W3Schools:</p>
                <img 
                    src=""http://www.w3schools.com/images/w3schools_green.jpg"" 
                    alt=""W3Schools.com"" 
                    width=""104"" 
                    height=""142"">
            </body>
        </html>";
        StartBrowser(source);
        Console.ReadLine();
    }

    private static void StartBrowser(string source)
    {
        var th = new Thread(() =>
        {
            var webBrowser = new WebBrowser();
            webBrowser.ScrollBarsEnabled = false;
            webBrowser.DocumentCompleted +=
                webBrowser_DocumentCompleted;
            webBrowser.DocumentText = source;
            Application.Run();
        });
        th.SetApartmentState(ApartmentState.STA);
        th.Start();
    }

    static void 
        webBrowser_DocumentCompleted(
        object sender, 
        WebBrowserDocumentCompletedEventArgs e)
    {
        var webBrowser = (WebBrowser)sender;
        using (Bitmap bitmap = 
            new Bitmap(
                webBrowser.Width, 
                webBrowser.Height))
        {
            webBrowser
                .DrawToBitmap(
                bitmap, 
                new System.Drawing
                    .Rectangle(0, 0, bitmap.Width, bitmap.Height));
            bitmap.Save(@"filename.jpg", 
                System.Drawing.Imaging.ImageFormat.Jpeg);
        }
    }
}

Nota: Los créditos deben ir a Hans Passant por su excelente answer a la pregunta Control de WebBrowser en un nuevo hilo que inspiró esta solución.







asp.net