2012-10-04 47 views
4

我:保存DIV作爲圖像

echo" 
<div id=IwantToSaveThisWholeDivAsAnImage)> 
    <div id=OneOfMultipleDivs> 
    <table>multiple tables rendered here 
    </table> 
    </div> 
</div>"; 

我已經嘗試了(許多之一):

$html_code = " 
<html> 
    <head> 
    <title>Image</title> 
    <style> 
    body { 
    font-family:verdana; 
    font-size:11px; 
    color:black 
    } 
    </style> 
    </head> 
    <body> 
    my tables here 
    </body> 
</html>"; 
$img = imagecreate("300", "600"); 
$c = imagecolorallocate($img, 0, 0, 0); 
$c2 = imagecolorallocate($img, 255, 255, 255); 
imageline($img,0,0,300,600,$c); 
imageline($img,300,0,0,600,$c2); 

$white = imagecolorallocate($img, 255, 255, 255); 
imagettftext($img, 9, 0, 1, 1, $white, "arial.tff", '$html_code'); 
header("Content-type: image/jpeg"); 
imagejpeg($img); 

我不允許使用外libaries。閱讀它可以用GD完成,但是迄今爲止我還沒有成功。 任何想法和幫助將不勝感激! UB

+0

我有點困惑。你想呈現實際的HTML文件,並將其保存到IMG? – macino

+0

是的。我有我動態構建的html,並且試圖將其保存到圖像(與其他元素結合並最終創建pdf) – UBES

+0

爲什麼不允許使用任何庫? – BadHorsie

回答

6

要說明一點比我的評論:HTML的呈現是由您的瀏覽器完成的。 PHP是服務器端的,所以它不知道如何呈現HTML,也不會。這意味着你將需要能夠呈現HTML並將渲染結果保存到圖像的「東西」,而PHP可以「交談」它。爲此,wkhtmltoimage的作品(給它一個網址,你最終得到一個JPG,然後你可以裁剪)。我也聽說過phantomjs的好東西,這可能更適合您的目標,因爲您可以「選擇」某個div。

如果你完全拒絕使用任何外部工具,你基本上沒有選擇。

3

如果因爲它不是在PHP編寫使用的工具,像wkhtmltoimage

,這意味着您可以在服務器上安裝它,並在PHP中運行它可以渲染。

1

可以建表和GD寫文章,當然,但不能從HTML - 你必須建立自己的那些(用途不同繪製一行的錶行,然後在填充它們)

如同已經被一些其他用戶解釋過了,HTML是呈現給客戶端的,而不是服務器端,你的php不知道如何顯示,因此你的GD也不會。