2012-11-25 42 views
0

我的访问者希望能够将一些网站保存为图像文件,以便他们可以随时离线查看它。他们使用不同的设备(平板电脑,电话,个人电脑..)和不同的浏览器访问我的网站,因此依赖第三方软件并不是一个好选择。 (图像文件格式几乎是不相干的顺便说一句)用户友好的方式从网站创建屏幕截图

我想我的服务器为用户实现此任务;最好用JavaScript,Ajax,PHP,否则其他任何东西,如果它很容易。这些页面是动态创建的,但相对简单的HTML,一些文本,一些JPG图片,没有CSS - 没有什么奇特的(像动画GIF或闪光灯)。动态创建不需要会话cookie或其他东西,只需url(也许可以获取)信息。

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

我只尝试过一次php-png,〜5年前;我记得它有点辛苦。有更容易和扩展功能的库吗?

一切都归结为一个问题:什么是从HTML网站制作图像的最简单方法?对用户来说应该尽可能简单,然后对我来说。

;)Extra Credits:万一我找到可以动态创建图像的东西。我如何让任何浏览器在下载目录中永久自动下载图片,而不是只显示临时保存的预览?

+1

不包括“感谢你“注意到;裸露的问题更好。 – tucuxi

+3

我不认为图像文件是保存内容的好方法。 – Pointy

+0

在我的具体情况下,图像保存是必要的,没有其他选择。但我不想浪费你的时间,详细解释它。另外,对于DAU来说,这非常棒。 – someonelse

回答

1

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

Imagemagick不提供字体方式的灵活性;您可能需要使用imagegetttftext来渲染文本块,然后将其添加到imagemagick图像。

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

+0

(对于其他答复者:我有服务器控制,字体不重要) 这听起来很有希望!这仍然有点手动,但它可以解决我的问题。 Thx为tipps! – someonelse

2

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

  1. DOMPDF:http://code.google.com/p/dompdf/
  2. 的WebKit/KHTML基于渲染:https://github.com/mreiferson/php-wkhtmltox
  3. 谷歌浏览器的Webkit已备份:http://phantomjs.org/ + https://github.com/diggin/php-PhantomjsRunner
+0

好主意 - 同时也指出了用于渲染离线/无头的工具,这些工具也可用于制作图像。顺便说一句,你一定意味着'webkit后端'作为第三选项... – tucuxi

+0

谢谢@tucuxi。按照建议更正:) –