Как я могу использовать ImageFormatConverter.ConvertFromString для преобразования строки, содержащей ответ HTML, в изображение?
Вот чего я добился:
в загрузке страницы
{
panelmain.Controls.Add(abc);
panelmain.Controls.Add(grid1);
string toexport;
toexport = RenderControl(panelmain);
ImageFormatConverter imgc = new ImageFormatConverter();
System.Drawing.Image convertedimage;
convertedimage = (System.Drawing.Image) imgc.ConvertFromString(toexport);
Response.ContentType = "image/jpg";
Response.AppendHeader("Content-Disposition", "inline;filename=tm.jpeg");
Response.BufferOutput = true;
Response.Charset = "utf-8";
Response.Write(convertedimage);
Response.End();
//form1.Controls.Add(abc);
}
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();
}
Ошибка:
ImageFormatConverter не может конвертировать из System.String.
1 ответ
Возможно, вы неверно истолковали документацию ConvertFromString
здесь, объяснение:
Вы используете ImageformatConverter
класс, который наследует и переопределяет TypeConverter
, Это означает, что ConvertFromString
наследуется от суперкласса, но, поскольку вы не можете преобразовать строку в изображение (если у вас нет яркого воображения), этот метод всегда возвращает нуль (согласно документации) или выдает NotSupportedException
, Это стандартное поведение базового класса, и переопределяющий класс может определять пользовательское поведение, которое в вашем случае не было выполнено.
Чтобы преобразовать строку, вам сначала нужно определить, что вы хотите. То есть строка это путь к изображению? Это кусок текста, и вы хотите сделать изображение из этого? Это строка в кодировке Base64, содержащая изображение? Это отрендеренная страница HTML или она содержит документ RTF? Получив ответ на эти вопросы, вы можете выбрать правильный конвертер или конструктор изображений.
РЕДАКТИРОВАТЬ: потому что ваш вопрос, кажется, о рендеринге HTML в виде изображения, проверьте этот пост в SO, как также упоминалось выше Rebecca Chernoff.