- - PR -
印刷プレビュー
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-04-05 13:56
javaで次のようなHTML形式のタグの文字列をhtml形式で印刷プレビューを
表示し、印刷する方法ってありますでしょうか。 StringBuffer sb = new StringBuffer("<html><body bgcolor=white>"); ・・・ java.awt.printを使うことはわかるのですが、 なにかサンプル等ありましたらお願いします。 初心者ですいません。 | ||||
|
投稿日時: 2007-04-05 14:32
実質的にはブラウザのHTMLレンダリングエンジン相当の機能が必要となります。
javax.swing.text.html.HTMLEditorKitを利用することで 一応のHTMLレンダリングは可能ですが、サポートしているのがHTML3.2ですので モダンなブラウザの表示を再現できるとは考えないほうがよいでしょう。 HTMLのレンダリングというのは相当にヘビィな代物ですから 独自実装は不可能に近いと思います。 | ||||
|
投稿日時: 2007-04-05 14:38
返信ありがとうございます。
印刷プレビューを表示するのは難しそうなので JEditorPaneを使って、html形式の文字列を ダイアログに表示でき、かつファイルに出力できるので そのファイル(html)をhtml表示のまま、印刷すること はできますでしょうか? サンプル等ありましたらよろしくお願いします。 | ||||
|
投稿日時: 2007-04-05 15:06
過去に似たような話が出ていますのでこのあたりを参考にしてみてください
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?mode=viewtopic&topic=6751&forum=12 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=32666&forum=28&6 | ||||
|
投稿日時: 2007-04-05 16:09
返信ありがとうございます。
まさにと思いやってみたのですが、うまくいきません。 editorPane = new JEditorPane(); // 編集可能か設定 editorPane.setEditable(false); // コンテンツ設定 editorPane.setContentType("text/html"); // テキストに設定 editorPane.setText(sb.toString()); Image img = editorPane.createImage(100,100); ← 落ちる。 Graphics g = img.getGraphics(); editorPane.paintComponents(g); 初心者ですいません。 | ||||
|
投稿日時: 2007-04-05 16:36
初心者という言い訳はむしろ悪印象ですのであまり用いないほうがいいでしょう。
エラーが発生したときにはその例外のスタックトレースを明記してください。 まるごとコピー&ペーストしましょう。 スタックトレースにはエラーの原因に迫る重要な情報が記述されています。 時には答えそのものが記述されています。 慣れるまではどう見ればいいのか分からないかもしれませんが、 それを読み解けるようになれば初心者脱却かもしれませんね。 | ||||
|
投稿日時: 2007-04-06 09:25
JEditorPaneのクラスを使って、ダイアログに表示した
html形式の文字列をJEditorPaneのprintを使って 実際にjpegファイルに落として印刷する方法ではなく、 html形式のまま、印刷することってできますでしょうか? editorPane = new JEditorPane(); // 編集可能か設定 editorPane.setEditable(false); // コンテンツ設定 editorPane.setContentType("text/html"); // テキストに設定 editorPane.setText(sb.toString()); | ||||
|
投稿日時: 2007-04-06 10:48
それはHTMLのテキストを印刷という意味ですか? 「HTML形式のまま」ってどういうことでしょう? HTMLがブラウザに表示されたイメージを出力したいのでしょう? それはあくまでブラウザがHTMLをレンダリングした結果ですよ。 私はjava.awt.printパッケージにはあまり詳しくないですが、 画面に対して描画を行うのと基本的には一緒のはずです。 出力先がモニタなのかプリンタなのかの違い。 Java的にはjava.awt.Graphicsオブジェクトへの描画になるのかな。 JEditorPaneのソースでも呼んでレンダリングしている部分だけ抽出すれば JEditorPaneがGraphicsに描画する部分を利用してプリンタ用のGraphicsオブジェクトに 直接描画させることもできるかもしれませんが… もともとそういった汎用HTMLレンダリングエンジンとして設計されていなかった 筈なので難しいと思いますよ。 |