Как получить растровое изображение всей страницы в элементе управления WebBrowser, используя .NET CF - PullRequest
3 голосов
/ 02 декабря 2011

У меня есть приложение WindowsMobile 6.5 (с .NET CF 2.0), в которое встроен элемент управления WebBrowser, который отображает некоторый контент (сгенерированный удаленно). Я хочу получить все содержимое веб-страницы в виде растрового изображения, чтобы иметь возможность отправить его на принтер (к сожалению, этот принтер не поддерживает печать HTML).

Я знаю, что этот вопрос уже задавался здесь: Получение растрового изображения веб-страницы с помощью элемента управления WebBrowser в .net compact framework

Но для .NET Compact Framework нет жизнеспособного решения. WebBrowser.DrawToBitmap () не существует в .NET Compact Framework.

Пожалуйста, спросите меня, если вам нужно больше деталей.

Ответы [ 2 ]

1 голос
/ 12 марта 2012

Вам необходимо использовать другую библиотеку или API, которые выполняют преобразование HTML в растровое изображение, поэтому все, что вам нужно сделать, это отправить текст документа или outerhtml в API, убедившись, что все ссылки на html-странице абсолютно не являются относительными или имеютбазовый тег в нем, пусть API выполнит преобразование, а затем отправит растровое изображение на принтер.Поэтому, если вы не можете сделать это напрямую, я бы поискал API для HTML для растрового изображения как второй вариант решения вашего вопроса или как запасной вариант.

.net может иметь такой API, и яуверен, что будет много сторонних на выбор, если вы не можете сделать это предпочтительным способом.

0 голосов
/ 11 августа 2016
  • Делай это внешне. Используйте что-то вроде https://screenshotmachine.com Затем очистите результат с помощью WebRequest:
string url = @"https://screenshotmachine.com/serve.php?img=example-org-FULL-1bdf72.png";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
    Bitmap bmp = new Bitmap(reader.ReadToEnd());
}
  • Может быть, вместо этого вы можете использовать Скриншот через ScreenCapture :
...