Визуализировать HTML как изображение
Я генерирую купон на основе динамического ввода и обрезанного изображения, и я сейчас показываю купон с использованием ntml и css, проблема в том, что печать этого стала проблемой из-за исчезновения фона при печати и других проблем, поэтому я думаю, что лучшим решением было бы иметь возможность сгенерировать изображение на основе HTML или установить какой-то шаблон, который принимает строки и изображение, а также генерирует изображение, используя изображение, подаваемое в качестве фона, и помещает информация о купоне сверху.
Есть ли что-нибудь, что делает это уже?
Это для веб-сайта ASP.NET 3.5 C#!
Заранее спасибо.
edit: было бы замечательно, если бы вывод мог быть основан на вводе HTML, так как купон был разработан с помощью манипулирования DOM с помощью jQuery и перетаскивания чего-либо, все работает отлично, это просто когда дело доходит до печати (на бумаге) у него есть проблемы с z-индексацией.
9 ответов
Что вы можете сделать, это создать страницу 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 или что-то еще, что вам нужно. Таким образом, вы можете сделать так, чтобы все, что вы хотели указать.
Вы можете отобразить html в растровое изображение, используя элемент управления WebBrowser либо в winforms, либо в консольном приложении.
Пример этого можно найти здесь: http://www.wincustomize.com/articles.aspx?aid=136426&c=1
Приведенный выше пример можно изменить для запуска в ASP.Net, создав новый STAThread и выполнив на нем Application.Run, чтобы запустить новый цикл обработки сообщений.
Альтернатива PHP/Ruby
Если вы получили доступ к этому вопросу и действительно ищете средства, которые будут работать без Windows, вы можете попробовать библиотеку KHTML: http://wiki.goatpr0n.de/projects/khtmld
У веб-сайта есть смешное имя, которое я признаю, но я могу заверить вас, что оно подлинное. Другие связанные страницы: страница sourceforge http://khtml2png.sourceforge.net/
МАРКУП ТОЛЬКО АЛЬТЕРНАТИВНОЕ РЕШЕНИЕ
Используйте SVG и XSLT, чтобы преобразовать HTML-данные в изображение, которое можно отобразить / сохранить / и т. Д.
Я признаю, что сначала было утомительно заставить это работать из-за всех координат, но оно того стоит, когда оно будет запущено.
Попробуйте PDFSharp... это не совсем "взять этот HTML и сделать PDF", но с небольшим количеством возни вы можете легко сделать PDF из информации, которую вы используете для создания HTML.
Просто настройте ваш CSS правильно, чтобы у вас был файл CSS, ориентированный на печатный носитель. Довольно легко гарантировать, что купон всегда будет разборчивым, не беспокоясь о том, имеют ли они изображения bg или нет. Игольчатое перемещение к изображению не имеет никакого смысла, если только по какой-то причине вы не хотите, чтобы оно было машиночитаемым.
Я сам не пробовал, но вы должны иметь возможность визуализировать HTML в изображение с помощью элемента управления WebBrowser и метода DrawToBitmap(), унаследованного от базового класса Control.
ОБНОВЛЕНИЕ: я попробовал это сам, и есть некоторые предостережения. Элемент управления WebBrowser, по-видимому, не отображает веб-страницу до тех пор, пока элемент управления не отобразится, поэтому WebBrowser должен находиться в форме, а форма должна отображаться для отображения HTML-кода и возникновения события DocumentCompleted.
Если "другие проблемы" не являются достаточно серьезными, разве вы не можете просто попросить своих пользователей включить фоновые изображения при печати?
В любом случае, я бы по умолчанию предоставлял PDF, а не изображение, вдвойне, поскольку он предназначен для печати.
Существует очень мощная библиотека для создания изображений под названием GD, которую я часто использую с PHP.
Я склонен полагать, что есть обертка для этой библиотеки, которую могут использовать программисты ASP. Попробуй это