簡體   English   中英

將HTML渲染為圖像

[英]Render HTML as an Image

我正在基於動態輸入和裁剪的圖像生成優惠券,並且現在正在使用ntml和css顯示優惠券,問題是,由於打印時背景如何消失以及其他問題,打印此優惠券已成為一個問題,因此,我認為最好的解決方案是能夠基於html生成圖像,或者設置某種類型的模板,該模板接受字符串和圖像,並使用饋入的圖像作為背景並放置優惠券信息在頂部。

有什么已經做到了嗎?

這是針對ASP.NET 3.5 C#網站的!

提前致謝。

編輯:如果輸出可以基於HTML輸入,那就太好了,因為優惠券是通過使用jQuery操縱DOM並拖動內容來設計的,一切都很好,就在打印時(到紙上) ),它具有z-indexing問題。

您可以做的是創建一個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之類的內容即可。 這樣,您可以讓它呈現您想要指定的任何內容。

您可以使用Winforms或控制台應用程序中的WebBrowser控件將html渲染為位圖。

可以在此處找到一個示例: http : //www.wincustomize.com/articles.aspx?aid= 136426& c=1

可以通過創建一個新的STAThread並執行一個Application,將上面的示例修改為在ASP.Net中運行,然后在其上運行以啟動新的消息循環。

PHP / Ruby替代


如果您已經解決了這個問題,並且實際上正在尋找可以在Windows下運行的整理方法,則可以嘗試使用KHTML庫: http : //wiki.goatpr0n.de/projects/khtmld

我承認這個網站的名字很荒唐,但我可以向您保證它是真實的。 其他相關頁面為:sourceforge頁面http://khtml2png.sourceforge.net/

嘗試使用PDFSharp ...這不完全是“獲取HTML並生成PDF”,但是只要稍加擺弄,您就可以輕松地從用來創建HTML的信息中提取出PDF。

標記僅替代解決方案

使用SVG和XSLT將html數據轉換為可以渲染/保存/等的圖像。

我承認,由於所有坐標,讓它開始工作很麻煩,但是一旦運行就值得付出努力。

只需正確設置css,即可獲得針對打印介質的css文件。 很容易保證優惠券將始終清晰易讀,而不必擔心它們是否帶有bg圖像。 除非有某些原因,您不希望將其針刺到圖像上,否則它就無法機器可讀。

我沒有嘗試過,但是您應該能夠通過使用WebBrowser控件和從Control類繼承的DrawToBitmap()方法將HTML渲染為圖像。

更新:我自己嘗試過此操作,但有一些警告。 在顯示該控件之前,WebBrowser控件似乎無法呈現網頁,因此WebBrowser控件必須位於Form中,並且必須顯示Form才能呈現HTML並引發DocumentCompleted事件。

我經常在PHP中使用一個非常強大的圖像創建庫GD

我被認為是ASP程序員可以使用的該庫的包裝。 嘗試這個

除非“其他問題”非常嚴重,否則您是否不能僅指示用戶在打印時打開背景圖像?

無論如何,我都會默認使用PDF而不是圖像,因為它是用於打印的,所以加倍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM