Как визуализировать строку, содержащую HTML в изображение в C #? - PullRequest
4 голосов
/ 20 июля 2011

Я занимаюсь разработкой веб-приложения, в котором есть интерактивный инструмент обратной связи для пользователей.В этом приложении пользователи могут нажать кнопку отправить отзыв.Кнопка создает наложение поверх их текущей веб-страницы и позволяет им перетаскивать выделенную область DIV s, чтобы выделить определенные области.Как только они отправляют свои отзывы, HTML-код всей страницы передается через сервер AJAX обратно.

Когда-то на сервере у меня появилась строка, содержащая HTML-код страницы.Отсюда я хотел бы запустить эту строку через какой-то движок, который визуализирует HTML и создает изображение.Что-то вроде того, как сделать снимок экрана, если хотите.

Как можно сделать что-то подобное?Существуют ли доступные механизмы, написанные на C # и способные создавать HTML и отображать изображение?

Ответы [ 3 ]

2 голосов
/ 20 июля 2011

Вы можете рассмотреть usin LLMozLib, если хотите пройти мимо Gecko.
Подробнее здесь

EDIT

Существует элемент управления ActiveX для встраивания Gecko в Windows.
Пример здесь

EDIT

У меня все работает в приложении Windows Forms.
Используя эти ресурсы .
Это обертка для гекконов ...

Это мой пример кода ...

public partial class Form1 : Form
{
    public Form1()
    {
        Xpcom.Initialize(@"C:\Users\esouza\Downloads\xulrunner"); //Tell where are XUL bin
        InitializeComponent();
        //geckoWebBrowser1 is an instance of GeckoWebBrowser control that I've dragged on the Form1
        geckoWebBrowser1.DocumentCompleted += new EventHandler(geckoWebBrowser1_DocumentCompleted);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        geckoWebBrowser1.Navigate("http://www.google.com");
    }

    void geckoWebBrowser1_DocumentCompleted(object sender, EventArgs e)
    {
        Bitmap b = new Bitmap(geckoWebBrowser1.Width, geckoWebBrowser1.Height);
        geckoWebBrowser1.DrawToBitmap(b, new Rectangle { X = 0, Y = 0, Width = 800, Height = 600 });
        b.Save("file.bmp");
    }
}
2 голосов
/ 20 июля 2011

Проверьте эту структуру - http://awesomium.com/

Это именно то, что вам нужно.

Установите базовый URL, это будет необходимо для разрешения любых относительных URL

WebCore.SetBaseDirectory("C:\\MyApplication\\MyBaseDirectory");

Затем загрузите HTML -

myWebView.LoadHTML("<p>Hello World!</p>");

Затем используйте метод .Render (), и вы сможете сохранить визуализированный контент в изображение.

0 голосов
/ 20 июля 2011

Очень интересный вопрос, и у меня нет для вас серебряной пули.

Вам наверняка понадобится браузерный движок некоторого описания, а затем запишите визуализированный вывод как растровое изображение.

Я вижу из этого вопроса , что для WebKit была разработана оболочка COM. Может быть, это хорошая отправная точка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...