我有一個網站,我正在構建一個從表單中獲取數據(人員姓名)並將其張貼到下一頁表格中的自定義「註釋」中的網站。我希望用戶能夠將他們的「筆記」保存爲一張帶有自定義名稱的圖像。有沒有辦法將一個SPECIFIC HTML TABLE保存爲PNG?也許截取網頁上的特定座標的截圖?將HTML表格保存爲圖像
如果不是有沒有辦法在HTML畫布中呈現張貼的PHP內容?
任何幫助將是偉大的。我現在有點頭痛。
我有一個網站,我正在構建一個從表單中獲取數據(人員姓名)並將其張貼到下一頁表格中的自定義「註釋」中的網站。我希望用戶能夠將他們的「筆記」保存爲一張帶有自定義名稱的圖像。有沒有辦法將一個SPECIFIC HTML TABLE保存爲PNG?也許截取網頁上的特定座標的截圖?將HTML表格保存爲圖像
如果不是有沒有辦法在HTML畫布中呈現張貼的PHP內容?
任何幫助將是偉大的。我現在有點頭痛。
可行的解決方案
您可以使用類似html2ps
你可以也使用Xvfb。這是一個Linux軟件包。它代表「X-window虛擬幀緩衝器」(如果你想知道爲什麼它有這麼深奧的名字)。
這將做什麼,是加載一個頁面,執行任何JavaScript並將CSS中的不同樣式應用於服務器的幀緩衝區。然後你可以保存圖像。
Xvfb可能不會在大多數共享託管服務上可用,但是,如果沒關係,那麼它將是一個可行的解決方案。
雖然您可以使用各種工具呈現HTML,但您無法確定這些工具是否會像瀏覽器呈現HTML一樣呈現HTML。
如果你的最終目標是它生成的文本圖像,然後讓我們來解決,而不是試圖讓您建議的工作解決了這個問題。
看看PHP的imagettftext()函數。它包含一個示例#1它從文本創建一個小的,簡單的圖像,可以存儲在任何變量中......包括一個表單變量。
通過使用這個例子,並添加一些其他的PHP's GD functions,你可以做一個體面的副本的表,並確保它看起來完全按照你想要的方式,而不是html2ps或其他工具呈現它的方式。
<?php
// Set the content-type
header('Content-Type: image/png');
// Create the image
$im = imagecreatetruecolor(400, 30);
// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);
// The text to draw
$text = isset($_POST['name']) ? $_POST['name'] : "name";
// Replace path by your own font path
$font = 'arial.ttf';
// Add some shadow to the text
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);
// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);
// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
?>
這裏是由上面的腳本生成的樣本輸出:
注意,您需要提供arial.ttf
按照指示在上面的鏈接。
如果事情不起作用,請在繼續操作之前在屏幕上和Web服務器的錯誤日誌中查找錯誤。您的Web服務器上可能沒有安裝PHP的GD模塊。如果是這種情況,您應該與您的服務器管理員聯繫,確保您需要的是可用的。
我認爲做這個服務器端對於這項任務來說是一種矯枉過正可以通過@Anber建議的圖書館以更簡單的方式完成。這裏的示例http://jsfiddle.net/arthurcamara/6phhb5g9 – 2016-04-28 20:52:14
@ArthurCamara - 我同意做這個客戶端提供了一個更清晰的解決方案,但OP的問題是關於如何在PHP中生成PNG。 – ghoti 2016-04-29 13:53:55
我認爲他的問題是關於用表格生成PNG。和「如果不是有辦法呈現張貼的PHP」。所以PHP是第二種選擇,因爲它應該是:) – 2016-05-04 17:49:10
您可以在客戶端嘗試this JS library。
對我來說,這也是一個更清潔的解決方案。 JSFiddle示例(html2canvas)在這裏:https://jsfiddle.net/arthurcamara/6phhb5g9/ – 2016-04-28 20:49:45
這是一個有用的庫。如果這個鏈接的回答[提供了上下文](http://stackoverflow.com/help/how-to-answer),並且解決了問題中提到的要求,那也是非常好的:「*我希望用戶能夠能夠將他們的「筆記」保存爲一張帶有其定製名稱的圖像。*「 – ghoti 2016-04-29 13:55:46
與@ghoti達成一致:)更多的上下文和更深入的回答將非常棒。使用畫布還可以在畫面上顯示自定義名稱的註釋,因此爲此提供客戶端解決方案應該沒有問題。 – 2016-05-04 17:52:04
看看php的內置圖像功能:http://nz.php.net/manual/en/refs.utilspec.image.php – 2012-03-06 20:15:26