2008-12-02 2 views
11

Я генерирую купон на основе динамического ввода и обрезанного изображения, и я показываю купон, используя ntml и css прямо сейчас, проблема в том, что печать стала проблемой из-за того, как фоны исчезают при печати и другие проблемы, поэтому я считаю, что лучшим решением было бы создать изображение на основе html или создать какой-то шаблон, который принимает строки и изображение, и генерирует изображение с использованием изображения подаются в качестве фона и помещают информацию о купоне сверху.Render HTML как изображение

Есть ли что-нибудь, что делает это уже?

Это для сайта ASP.NET 3.5 C#!

Заранее спасибо.

Редактировать: Было бы здорово, если бы результат мог быть основан на вводе HTML, поскольку купон был разработан путем манипулирования DOM с помощью jQuery и перетаскивания материала вокруг, все работает отлично, это просто, когда дело доходит до печать (на бумаге) имеет проблемы с z-индексацией.

ответ

10

Что вы можете сделать, так это создать страницу 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 или что вам нужно. Таким образом, вы можете заставить его отображать все, что вы хотите указать.

+0

, поэтому это позволит динамически генерировать изображение в качестве фона с текстом на наверх, вытащил из базы данных? Если это звучит круто! – Tablet 2008-12-02 16:34:30

0

Существует очень мощная библиотека создания изображений под названием GD, которую я часто использую с PHP.

Я убежден, что для этой библиотеки есть оболочка, которую могут использовать программисты ASP. Try this

0

Если «другие проблемы» не являются достаточно серьезными, не могли бы вы просто проинструктировать своих пользователей включить Фоновые изображения при печати?

В любом случае, я по умолчанию использовал бы PDF-файл, а не изображение, вдвойне, так как он предназначен для печати.

+0

Могу ли я сгенерировать PDF с помощью HTML? Если он «печатает» в PDF, это просто вызовет ту же проблему, с которой я столкнулся с z-indexing – Tablet 2008-12-02 16:27:16

1

Попробуйте PDFSharp ... это не совсем «возьмите этот HTML-код и сделайте PDF», но с небольшим разворотом вы можете легко сделать PDF из информации, которую вы используете, чтобы сделать HTML.

+4

. Небольшая сумма может быть преуменьшением: D – 2009-09-29 11:38:47

3

Вы можете преобразовать html в растровое изображение с помощью элемента управления WebBrowser в winforms или в консольном приложении.

Пример этого можно найти здесь: http://www.wincustomize.com/articles.aspx?aid=136426&c=1

Приведенный выше пример может быть изменен, чтобы запустить в ASP.Net путем создания нового STAThread и выполнения Application.Run на нем, чтобы начать новый цикл сообщений.

3

PHP/рубин Alternative


Если вы получили доступ на этот вопрос и на самом деле ищут soething, который будет работать без Windows, вы можете попробовать библиотеку KHTML: http://wiki.goatpr0n.de/projects/khtmld

На сайте смешное имя, которое я допускаю, но могу заверить вас, что оно подлинное. Другие связанные страницы: страница sourceforge http://khtml2png.sourceforge.net/

0

Просто настройте свой css правильно, чтобы у вас был файл css, предназначенный для среды печати. Довольно легко гарантировать, что купон всегда будет разборчивым, не беспокоясь о том, есть ли у него изображения bg или нет. Неправильное перемещение к изображению не имеет никакого смысла, если только нет причин, по которым вы не хотите, чтобы оно было машиносчитываемым.

0

Я не пробовал себя, но вы должны иметь возможность отображать HTML в изображение с помощью элемента управления WebBrowser и метода DrawToBitmap(), унаследованного от базового класса Control.

ОБНОВЛЕНИЕ: Я пробовал это сам, и есть некоторые оговорки. Элемент управления WebBrowser, похоже, не отображает веб-страницу до тех пор, пока элемент управления не будет показан, поэтому WebBrowser должен быть в форме, и форма должна отображаться для отображаемого HTML-документа и события DocumentCompleted.

1

MARKUP ТОЛЬКО АЛЬТЕРНАТИВНЫЙ РАСТВОР

Использование SVG и XSLT для преобразования данных HTML в изображение, которое может быть оказанной/сохранен/т.

Я признаю, что сначала было утомительно заставить это работать из-за всех координат, но хорошо стоит усилий после его запуска.