用户友好的方式从网站创建屏幕截图

时间:2012-11-25 15:33:19

标签: php javascript html image web

我的访问者希望能够将某些网站保存为图像文件,以便他们可以随时离线查看。他们使用不同的设备(平板电脑,手机,个人电脑......)和不同的浏览器访问我的网站,因此依赖第三方软件不是一个好选择。 (图像文件格式与btw几乎无关)

我希望我的服务器能够为用户完成这项任务;最好用javascript,ajax,php等别的东西,如果它很容易。页面是动态创建的,但是相对简单的html,一些文本,一些jpg图像,没有css - 没什么花哨的(比如GIF动画或flash)。动态创建不需要会话cookie或其他东西,只需要url(也许可以获取)信息。

我没有太多想法如何做到这一点 - 当我谷歌我只是找到最终用户的解决方案,而不是我。我现在知道的唯一可能是使用php-png功能。这样我的访问者就可以点击链接并转到他们可以下载的动态png文件。但我必须手动“写”pngs,php-png无法将html转换为png,可以吗?

我只试过一次〜5年前的php-png;我记得它有点费力。是否有一个更容易和扩展功能的库?

总结在一个问题中的一切:什么是从html网站制作图像的最简单方法?对于用户来说,它应该尽可能简单,然后对我而言。

;)额外积分:如果我发现可以动态创建图像的东西。如何让任何浏览器在下载目录中永久自动下载图片,而不是仅显示临时保存的预览?

2 个答案:

答案 0 :(得分:2)

PDF将是一个更好的解决方案,因为它们可扩展,并且可以包含超链接。该过程将使用无头浏览器呈现页面并输出呈现的PDF。一个快速的谷歌揭示了一些有趣的可能性:

  1. Dompdf:http://code.google.com/p/dompdf/
  2. 基于WebKit / KHTML的渲染器:https://github.com/mreiferson/php-wkhtmltox
  3. Google Chrome Webkit支持:http://phantomjs.org/ + https://github.com/diggin/php-PhantomjsRunner

答案 1 :(得分:1)

如果您希望人们以图像形式下载的页面是您自己的,并且您控制为其提供服务的服务器,则可以使用php-imagemagick构建服务器端的“屏幕截图”图像(因此用户)将在HTML版本和单图像版本之间进行选择;或者单击HTML版本中的按钮以下载图像版本)。首先定义一个画布,然后在其上渲染文本块和图像,最后将其保存为PNG或JPG图像。

Imagemagick在字体方面没有多大的灵活性;您可能希望使用imagegetttftext渲染文本块,然后将其添加到imagemagick图像。

由于以这种方式构建映像可能会在服务器端昂贵,因此您需要缓存结果。