2010-08-29 2 views
0

Обратите внимание, что эта ссылка Render HTML as an Image не помогает.Как преобразовать поток ответа в изображение?

В ранее заданном вопросе ответили, что они не получают то, что я хочу сделать именно так, вот и полный код.

Я просто хочу, чтобы вместо TABLES я отобразил изображение (содержимого) на странице.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.IO; 
using System.Text; 
using System.Data; 
using System.Drawing; 


public partial class _Default : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 

    System.Web.UI.WebControls.Panel panelmain = new System.Web.UI.WebControls.Panel(); 
    System.Web.UI.WebControls.Literal abc = new System.Web.UI.WebControls.Literal(); 
    abc.Text = "as<br/>dasdas<br/>dasdad"; 


    DataSet ds = new DataSet(); 
    DataTable dt; 
    DataRow dr; 
    DataColumn idCoulumn; 
    DataColumn nameCoulumn; 

    dt = new DataTable(); 
    idCoulumn = new DataColumn("ID", Type.GetType("System.Int32")); 
    nameCoulumn = new DataColumn("Name", Type.GetType("System.String")); 
    dt.Columns.Add(idCoulumn); 
    dt.Columns.Add(nameCoulumn); 
    dr = dt.NewRow(); 
    dr["ID"] = 1; 
    dr["Name"] = "Name1"; 
    dt.Rows.Add(dr); 

    dr = dt.NewRow(); 
    dr["ID"] = 2; 
    dr["Name"] = "Name2"; 
    dt.Rows.Add(dr); 

    ds.Tables.Add(dt); 

    System.Web.UI.WebControls.GridView grid1 = new 
    System.Web.UI.WebControls.GridView(); 
    grid1.DataSource = ds; 
    grid1.DataBind(); 

    panelmain.Controls.Add(abc); 
    panelmain.Controls.Add(grid1); 

    string toexport; 
    toexport = RenderControl(panelmain); 

    Byte[] bitmapData = new Byte[100000]; 
    bitmapData = Convert.FromBase64String(FixBase64ForImage(toexport)); 
    System.IO.MemoryStream streamBitmap = new System.IO.MemoryStream(bitmapData); 
    Bitmap bitImage = new Bitmap((Bitmap)Image.FromStream(streamBitmap)); 

    Response.ContentType = "image/gif"; 
    Response.AppendHeader("Content-Disposition", "inline;filename=tm.gif"); 
    Response.BufferOutput = true; 
    Response.Charset = "utf-8"; 
    Response.Write(bitImage); 
    Response.End(); 

    } 



public string FixBase64ForImage(string Image) 
{ 
    System.Text.StringBuilder sbText = new System.Text.StringBuilder(Image, Image.Length); 

    sbText.Replace("\r\n", String.Empty); 

    sbText.Replace(" ", String.Empty); 

    return sbText.ToString(); 
} 



public string RenderControl(Control ctrl) 
{ 
    StringBuilder sb = new StringBuilder(); 
    StringWriter tw = new StringWriter(sb); 
    HtmlTextWriter hw = new HtmlTextWriter(tw); 

    ctrl.RenderControl(hw); 
    Response.Write(sb); 

    return sb.ToString(); 



} 
+0

Ну, например, ваш код полностью отсутствует часть, где вы загружаете HTML движок рендеринга и использовать его для отображения содержимого , –

+0

public string RenderControl (Control ctrl), это делает работу, способную создать файл doc с помощью возвращенной строки. пожалуйста, помогите .. что мне не хватает ссылки – user287745

+0

Он не создает «файл doc», он просто создает HTML. Отказ HTML от изображения - очень сложная задача. Просто посмотрите, насколько сложны веб-браузеры. –

ответ

1

В your previous question вы уже получили ответ (от меня), имея в виду to another SO thread, где этот вопрос был дан ответ. Второй ответ в этом потоке связан с другой страницей в Интернете, где объясняется весь процесс запуска объекта WebBrowser, разворачивания страницы, захвата изображения, преобразования его в формат предпочтительного образа изображения, сохранения его локально. Не простая задача (ожидайте потратить несколько часов), но не слишком тяжелая.

Повторять the answer in the referred to question, просто посмотрите на эту WinCustomize.com article, загрузите исходный код и экспериментировать

Смежные вопросы