C#中的HTML转JPG

12

我通过搜索找到了一个叫做IECapt的解决方案,可以从HTML页面生成jpg文件,但它需要在服务器上安装IE才能工作...这不是我想要的。

以下是我想要实现的功能:从HTML页面(只包含文本)生成jpg图像,然后在jpg上加水印。

本质上,我正在创建一个“示例”,供我的用户查看,它将仅是从HTML创建的图像(仅是纯文本)。该示例应该有如上所述的水印。是否有可用于使用C#执行此操作的库?我想传入要转换为方法的页面的URL和可能的jpg保存路径,然后让它发挥魔力,将该URL转换为jpg图像,添加水印,然后就完成了!

编辑1

添加一些来自下面答案的代码...我无法理解这个:

InitialContainer c = new InitialContainer("<html><body><div align=\"center\">This is my html, does it work here?</div></body></html>");
Bitmap m_Bitmap = new Bitmap(400, 700);
c.Paint(Graphics.FromImage(m_Bitmap));
m_Bitmap.Save(@"C:\test\Test.bmp");


编辑2

这确实可以工作。

Bitmap m_Bitmap = new Bitmap(400, 600);
PointF point = new PointF(0,0);
HtmlRenderer.Render(Graphics.FromImage(m_Bitmap), "<html><body><div align=\"center\">This is my html, does it work here?</div></body></html>",point, 500);
m_Bitmap.Save(@"C:\test\Test.bmp");

请查看HTML渲染器 从HTML标记生成图像 以获取完整文档。 - Arthur
2个回答

11

你的答案刚刚帮我省了很多压力。一直在使用一个依赖于IE的可怕解决方案。谢谢 :) - scartag
我正在研究这个解决方案,但是我没有看到任何选项可以将渲染的HTML保存为图像。我已经下载了示例exe并正在尝试使用它,但到目前为止,我找不到有关将生成的html保存为图像的任何信息...有什么建议吗? - Christopher Johnson
2
@Christopher:创建一个“Bitmap”对象,然后使用“HtmlRenderer”渲染到“Graphics.FromImage(...)”。 - SLaks
好的,我已经更新了我的原帖,并附上了一些代码,我正在尝试使用它来创建图像(稍后可以考虑转换为jpg)。目前,它只是创建了一个看起来像一堆文本块的文件。很抱歉我太菜了,因为我以前从未涉及过图形处理...我在这里做错了什么? - Christopher Johnson
1
这个链接已经过时了,我建议使用:CodePlex上的HtmlRenderer - Arthur
仅提供链接的回答 - Hakan Fıstık

0

我没有尝试过这个,但你可以尝试使用Control.DrawToBitmap()。 要绘制水印,你可以像这样操作:

Image img; //the html image.
Image watermark; //the watermark image.
Point location; //where to draw the watermark on the html image.

Graphics g = Graphics.FromImage(img);
g.DrawImage(watermark, location);

也许可以使用WebKit或Gecko来实现这个。 - Itamar Marom
那怎么帮助我将原始HTML转换为图像呢? - Christopher Johnson
你可以使用GeckoFX来加载HTML,然后使用Control.DrawToBitmap()进行绘制。 - Itamar Marom
所以我找到了这个:https://dev59.com/sHE85IYBdhLWcg3wkkU8 我已经让它工作了,但是我有一点担心。为了让这个工作,我不得不在我的项目中(这是一个MVC Web项目)包含System.Windows.Forms。在Web项目中这样做是不好的实践吗? - Christopher Johnson
1
为什么这是不好的做法?还有其他选择吗?只是说这是不好的做法而没有合理的理由,本身就是不好的做法。 - eaglei22
当响应Web服务请求时,通常会尽量避免在提供响应时进行昂贵的调用。让您的Web服务器生成图像是一种昂贵的调用。也许您正在寻找一个专门的图像处理服务,该服务接受HTML流/字符串作为输入,并生成所请求的大小和格式的图像。 - No Refunds No Returns

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接