2012-11-25 40 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。按照建議更正:) –