- - PR -
サーバーサイドでのHTMLイメージファイル出力
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-08-07 11:46
表題のとおり、
サーバサイドでブラウザ上でHTMLを表示したときのイメージを ファイル出力したいと思っております。 ビットマップファイルのようなもので出力したいのですが、 どのような方法がありますでしょうか? ブラウザを起動して画面をキャプチャすれば 簡単にできることはわかりますが コストを抑えるためGUIは使いたくないと思っております。 方法論だけでもいいので力をお貸し願います。 | ||||||||
|
投稿日時: 2006-08-07 11:56
サーバサイドでクライアント側のハードコピーを?
無理だし。だいたいなんのために必要なの? | ||||||||
|
投稿日時: 2006-08-07 12:24
↓こういうのですか?
http://img.simpleapi.net/ | ||||||||
|
投稿日時: 2006-08-07 13:01
> ぶさいくろうさん
クライアント側というよりはブラウザで表示したときの ハードコピーです。 自分のHPにそういう機能をつけるのが目的です。 >iwamuさん こんなサイトですね。 これはサムネイル画像になっているようですが、 実際の大きさの画像をファイル出力したいと思ってます。 IEコンポーネントを使えばできそうですが GUIになる必要があるのではないかと思ってます。 サーバーサイドでHTMLをレンダリングするだけ、 というのが希望です。 | ||||||||
|
投稿日時: 2006-08-07 13:09
以前同じことを考えました。
Javaで実現するならば、JEditorPaneクラスを使うととても簡単にできます。 http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/index.html これのコンストラクタ(↓)が使えます。 JEditorPane(String url) JFrameか何か適当なコンテナに配置して、オフスクリーンに描画してから、 getGraphicsしたものをJPEGなりPNGなりにすればよいでしょう。 私が試したときには headlessサポートもImage I/Oも無かったですが、 今ならこれらを使えばさらに簡単そうです。(100ライン以下で書けちゃう!?) (参考) http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/awt/AWTChanges.html#headless http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/index.html http://java.sun.com/j2se/1.4/ja/docs/ja/guide/imageio/spec/imageio_guideTOC.fm.html でも結局実用しませんでした。なぜ使わなかったか、ですが、 世の中の大多数を占めるIEとレンダリング結果が異なる場合があるのが 問題になったためです。 該当ページにFLASHがあったりすると特に顕著です。 だからこの方法は用途によりますね。 WindowsサーバならIEをOLEでごにょごにょして作れば上記の問題は 解決できると思います。こちらは詳しくありません。 ※"GUI無しで"の部分にこだわりを感じたのでheadless関連URLを追記 [ メッセージ編集済み 編集者: Java僧 編集日時 2006-08-07 13:20 ] [ メッセージ編集済み 編集者: Java僧 編集日時 2006-08-07 13:24 ] | ||||||||
|
投稿日時: 2006-08-07 14:49
>Java僧さん
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=6751&forum=12&start=8&15 こちらのサンプルを実行してyahooを表示してみましたが かなりレイアウトが崩れますね。 ちょっと使い物になりそうもないですが、 こんなにもレイアウトが崩れるものなのですか? | ||||||||
|
投稿日時: 2006-08-07 17:41
「こんなにも」の部分が主観だと思うので、 私に聞かれても答えにくいのですが、 いくつかヒントがあります。 - isEditableの真偽でHTMLレンダラの動作が違います。 - Java1.4.xのHTMLレンダラとJava5のそれは違います。 検証用のミニマムコードも貼っておきます。
Java6でもエンハンスされているといいですね。 時間があったら試してみてください。 |
1