2008-12-02 108 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的圖像。

我承認,起初由於所有的座標讓這個工作起來很乏味,但是一旦它運行就值得付出努力。