2017-06-26 22 views
-4

我需要将HTML模板转换为节点服务器上的图像。 服务器将以字符串形式接收HTML。我尝试了PhantomJS(使用一个名为Webshot的库),但它不适用于弹性盒和现代CSS。我试图使用Chrome无头浏览器,但它似乎没有解析HTML的API,只有URL。如何将HTML转换为Node.js中的图像

将HTML片段转换为图片的最佳方式是什么?

我会在这里尝试更具体。我需要从一个HTML模板制作缩略图PIC,如:

<div style="color:red;width:300px;hegiht:300px;">hello world</div> 

我已经尝试过了一个名为webshot了图书馆应该做到这一点,利用罩下PhantomJS,但是生成的缩略图不正确地表示实HTML模板,因为不受支持的CSS,如弹性框。 我需要在Node.js服务器上完成它 - 客户端将以字符串形式发送html,服务器将返回JPG或PNG格式的缩略图。

有没有在模板模式而不是URL模式下使用无头Chrome的方法?我的意思,而不是做一些像

chrome.goTo('http://test.com') 

,我需要的是这样的:

chrome.evaluate('<div>hello world</div>'); 

另一种选择,这里建议在评论这一职务,是为了 保存模板中的一个文件服务器,然后在本地提供服务,并执行类似操作:

chrome.goTo('http://localhost/saved_template'); 

但是这个选项在我看来有点尴尬。还有其他更直接的解决方案吗?

回答

1

您可以使用html2canvas在前端轻松完成此操作。在后端,你可以在一个文件上写html,并使用file URI(例如:file:///home/user/path/to/your/file.html)进行访问,它应该可以在Chrome无头浏览器和Nightmare(截图功能)下正常工作。另一种选择是设置一个简单的HTTP服务器并访问该URL。

+0

是啊我想过使用http服务器的选项,但它似乎有点奇怪......如果没有人会建议一个更简单的解决方案生病接受你的,因为即时通讯开始认为没有更简单的解决方案,tnx – kundasaba

+0

你可以写html文件并使用[文件URI](https://en.wikipedia.org/wiki/File_URI_scheme)代替(即:'file:/// home/user/path/to/your/file.html') ,它应该正常工作与无头铬: – gnuns

+0

哦对,我没有想过关于文件的Uri事情。听起来不错,谢谢! – kundasaba