2008-12-02 183 views
11

我正在生成基于动态输入和裁剪图像的优惠券,并且我现在使用ntml和css显示优惠券,问题是,打印此问题已成为问题,因为如何背景在打印和其他问题时会消失,所以我认为最好的解决方案是能够基于html生成图像,或者设置某种模板来获取字符串和图像,并使用图像生成图像作为背景馈送,并将优惠券信息放在顶部。将HTML渲染为图像

有什么可以做到这一点吗?

这是针对ASP.NET 3.5 C#网站的!

在此先感谢。

编辑:如果输出可以基于HTML输入,因为优惠券是通过使用jQuery操作DOM来设计的,并且可以拖动东西,它一切正常,这只是当涉及到打印(纸张)它有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(); 

就是这样!然后,你需要在你的图像中做的事情就是将网址设置为RenderImage.aspx?MagicParm = WooHoo或任何你需要的东西。这样你可以让它呈现任何你想指定的东西。

+0

所以这将允许动态生成图像作为背景与文本上顶部,从数据库拉?如果是这样,听起来很漂亮! – Tablet 2008-12-02 16:34:30

0

有一个非常强大的图像创建库叫GD,我经常使用PHP。

我被引导认为ASP程序员可以使用这个库的包装。 Try this

0

除非“其他问题”非常严重,否则不能指示用户打印时打开背景图像吗?

无论如何,我会默认提供PDF而不是图像,因为它打算用于打印。

+0

我可以使用HTML生成PDF吗?如果它“打印”为PDF,它只会导致我与Z索引相同的问题 – Tablet 2008-12-02 16:27:16

1

尝试PDFSharp ......它不完全是“带上这个HTML并制作一个PDF”,但是有一小撮的摆弄,你可以很容易地将PDF用于制作HTML。

+4

少量可能是一个轻描淡写; D – 2009-09-29 11:38:47

3

您可以使用Web窗口控件在WinForms或控制台应用程序中将html呈现为位图。

这样的一个例子可以在这里找到:http://www.wincustomize.com/articles.aspx?aid=136426&c=1

上面的例子可以被修改通过创建一个新STAThread并在其上执行Application.Run启动一个新的消息循环在ASP.Net运行。

0

只需正确设置您的css,以便您有一个css文件针对打印介质。确保优惠券始终清晰易读,而不必担心他们是否有bg图像。针刺移动到图像没有任何意义,除非有某些原因您不希望它是机器可读的。

0

我还没有试过自己,但你应该能够通过使用WebBrowser控件和继承自基类Control类的DrawToBitmap()方法将HTML呈现为图像。

更新:我自己尝试过,有一些注意事项。 WebBrowser控件似乎并未呈现网页,直到控件显示为止,所以WebBrowser需要位于窗体中,并且必须显示表单以显示要渲染的HTML和要引发的DocumentCompleted事件。

1

MARKUP ONLY替代的解决方案

使用SVG和XSLT的HTML数据转换成可以被渲染/保存在/ etc的图像。

我承认,起初由于所有的坐标让这个工作起来很乏味,但是一旦它运行就值得付出努力。