将HTML渲染为图像

我正在生成一个基于dynamicinput和裁剪图像的优惠券,我现在正在使用ntml和css显示优惠券,问题是,打印这已成为一个问题,因为在打印和其他问题时背景如何消失,所以我认为最好的解决办法是能够生成基于html的图像,或者设置某种模板来获取string和图像,并使用所提供的图像作为背景生成图像,优惠券信息在上面。

有什么这样做了吗?

这是一个ASP.NET 3.5 C#网站!

提前致谢。

编辑:如果输出可以基于HTMLinput,那将是非常好的,因为优惠券是通过使用jQuery操纵DOM来devise的,并且拖动东西,这一切都可以正常工作,这只是在打印时)它有z索引问题。

你可以做的是创build一个aspx页面,将响应types更改为所需的格式,然后将图像放入stream中。 我创build了一个类似的东西的条形码生成器。 不包括生成图像的所有手续,您将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或任何你需要的东西。 这样,你可以让它呈现任何你想指定的东西。

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

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

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

PHP / Ruby的替代品

如果你已经访问过这个问题,并且实际上正在寻找可以在没有Windows的情况下工作,那么你可以试试KHTML库: http : //wiki.goatpr0n.de/projects/khtmld

网站有一个荒谬的名字我承认,但我可以向你保证这是真的。 其他相关页面是:sourceforge页面http://khtml2png.sourceforge.net/

尝试PDFSharp …它不完全是一个“采取这个HTML和PDF”,但有一小撮的摆弄,你可以很容易地使PDF的信息,你正在使用的HTML。

MARKUP只有替代解决scheme

使用SVG和XSLT将html数据转换为可以呈现/保存/等的图像。

我承认一开始,由于所有的坐标,使得这个工作非常繁琐,但是一旦运行,值得付出努力。

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

我导致相信ASP程序员可以使用这个库的封装。 尝试这个

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

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

只要正确设置你的css,以便你有一个css文件针对打印介质。 保证优惠券永远是清晰的,而不用担心他们是否有bg图像是很容易的。 除非有某些原因你不希望它是机器可读的,否则移动到一个图像上的针没有任何意义。

我还没有尝试过自己,但是您应该能够通过使用从基本Control类inheritance的WebBrowser控件和DrawToBitmap()方法将HTML呈现到图像中。

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