Отобразить HTML как изображение
Я создаю купон на основе динамического ввода и обрезанного изображения, и сейчас я показываю купон, используя ntml и css, проблема заключается в том, что печать стала проблемой из-за того, как фон исчезает при печати и другие проблемы, поэтому я считаю, что лучшим решением было бы создать изображение на основе html или создать какой-то шаблон, который принимает строки и изображение, и генерирует изображение, используя изображение, загруженное в качестве фона и помещает информацию о купоне сверху.
Есть ли что-нибудь, что делает это уже?
Это для веб-сайта ASP.NET 3.5 С#!
Спасибо заранее.
edit: Было бы здорово, если бы результат мог быть основан на вводе HTML, так как купон разработан, манипулируя DOM с помощью jQuery и перетаскивая вещи вокруг, все работает отлично, это просто, когда дело доходит до печати (на бумаге) он имеет проблемы с z-индексацией.
Ответы
Ответ 1
Что вы можете сделать, так это создать страницу aspx, которая изменит тип ответа в нужном вам формате, а затем поместит изображение в поток. Я создал генератор штрих-кода, который делает аналогичную вещь. Исключая все формальности создания изображения, вы будете Page_Load выглядеть примерно так:
Bitmap FinalBitmap = new Bitmap();
MemoryStream msStream = new MemoryStream();
strInputParameter == Request.Params("MagicParm").ToString()
// Magic code goes here to generate your bitmap image.
FinalBitmap.Save(msStream, ImageFormat.Png);
Response.Clear();
Response.ContentType = "image/png";
msStream.WriteTo(Response.OutputStream);
if ((FinalBitmap != null)) FinalBitmap.Dispose();
и что это! Тогда все, что вам нужно сделать в вашем изображении, - установить URL-адрес как нечто вроде RenderImage.aspx? MagicParm = WooHoo или что вам нужно. Таким образом, вы можете визуализировать все, что вы хотите указать.
Ответ 2
Вы можете отобразить html в растровое изображение с помощью элемента управления WebBrowser либо в winforms, либо в консольном приложении.
Пример этого можно найти здесь: http://www.wincustomize.com/articles.aspx?aid=136426&c=1
Приведенный выше пример может быть изменен для запуска в ASP.Net, создав новый STAThread и выполнив Application.Run, чтобы запустить новый цикл сообщений.
Ответ 3
Альтернатива PHP/Ruby
Если вы получили доступ к этому вопросу и действительно ищете что-то, что будет работать без Windows, вы можете попробовать библиотеку KHTML: http://wiki.goatpr0n.de/projects/khtmld
На веб-сайте есть смешное имя, которое я допускаю, но я могу заверить вас, что он является подлинным. Другие связанные страницы: страница sourceforge http://khtml2png.sourceforge.net/
Ответ 4
Попробуйте PDFSharp... это не совсем "взять этот HTML-код и сделать PDF файл", но с небольшим количеством фрилансеров вы можете легко сделать PDF из информации, которую вы используете для создания HTML.
Ответ 5
ТОЛЬКО ПОЛЬЗОВАТЕЛЬСКОЕ РЕШЕНИЕ MARKUP
Используйте SVG и XSLT для преобразования данных html в изображение, которое может быть отображено/сохранено/и т.д.
Я признаю, что сначала было утомительно заставить это работать из-за всех координат, но хорошо стоит усилий после его запуска.
Ответ 6
Существует очень мощная библиотека создания изображений, называемая GD, которую я часто использую с PHP.
Я убежден, что для этой библиотеки есть оболочка, которую могут использовать программисты ASP. Попробуйте это
Ответ 7
Если "другие проблемы" довольно серьезны, не могли бы вы просто проинструктировать своих пользователей включить Фоновые изображения при печати?
В любом случае, я бы по умолчанию использовал PDF, а не изображение, вдвойне, так как он предназначен для печати.
Ответ 8
Просто настройте свой css правильно, чтобы у вас был файл css, предназначенный для среды печати. Довольно легко гарантировать, что купон всегда будет разборчивым, не беспокоясь о том, есть ли у него изображения bg или нет. Неправильное перемещение к изображению не имеет никакого смысла, если только нет причин, по которым вы не хотите, чтобы оно было машиносчитываемым.
Ответ 9
Я не пробовал себя, но вы должны иметь возможность отображать HTML в изображение с помощью элемента управления WebBrowser и метода DrawToBitmap(), унаследованного от базового класса Control.
ОБНОВЛЕНИЕ: Я пробовал это сам, и есть некоторые оговорки. Элемент управления WebBrowser, по-видимому, не отображает веб-страницу до тех пор, пока элемент управления не будет показан, поэтому WebBrowser должен быть в форме, и форма должна отображаться для отображаемого HTML-кода, а событие DocumentCompleted должно быть поднято.