4

私は持っている:

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

私は試しました(多くのうちの1つ):

$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);

外部ライブラリの使用は許可されていません。GD で実行できることを読んでください。ただし、これまでのところ成功していません。どんなアイデアや助けも大歓迎です! UB

4

3 に答える 3

6

私のコメントよりも少し詳しく説明すると、HTML のレンダリングはブラウザによって行われます。PHP はサーバー側であるため、HTML をレンダリングする方法を知りません。これは、HTML をレンダリングしてレンダリング結果を画像に保存できる「何か」が必要になることを意味しますが、PHP はそれと「対話」できます。これには、wkhtmltoimageが機能します (URL を指定すると、切り抜くことができる JPG になります)。特定のdivを「選択」できるため、 phantomjsについても良いことを聞いたことがあります。これは、目的にさらに適している可能性があります。

外部ツールの使用を完全に遮断している場合は、基本的に選択肢がありません。

于 2012-10-04T12:12:08.360 に答える
3

wkhtmltoimageなどのツールを使用してレンダリングできます

php で書かれていないため、サーバーにインストールして php から実行することができます。

于 2012-10-04T12:14:33.100 に答える
1

もちろん、テーブルを作成してテキストをGDで作成することはできますが、HTMLからは作成できません。自分で作成する必要があります(事実上、テーブルを1行ずつ描画してから入力する必要があります)。

他のユーザーによってすでに説明されているように、HTMLはサーバー側ではなくクライアント側でレンダリングされ、PHPはこれがどのように表示されるかを認識しないため、GDも認識しません。

于 2012-10-04T14:16:49.360 に答える