- PR -

印刷プレビュー

投稿者投稿内容
クロスポ
常連さん
会議室デビュー日: 2005/07/27
投稿数: 22
投稿日時: 2007-04-05 13:56
javaで次のようなHTML形式のタグの文字列をhtml形式で印刷プレビューを
表示し、印刷する方法ってありますでしょうか。
StringBuffer sb = new StringBuffer("<html><body bgcolor=white>");
・・・

java.awt.printを使うことはわかるのですが、
なにかサンプル等ありましたらお願いします。

初心者ですいません。

nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-04-05 14:32
実質的にはブラウザのHTMLレンダリングエンジン相当の機能が必要となります。
javax.swing.text.html.HTMLEditorKitを利用することで
一応のHTMLレンダリングは可能ですが、サポートしているのがHTML3.2ですので
モダンなブラウザの表示を再現できるとは考えないほうがよいでしょう。

HTMLのレンダリングというのは相当にヘビィな代物ですから
独自実装は不可能に近いと思います。
クロスポ
常連さん
会議室デビュー日: 2005/07/27
投稿数: 22
投稿日時: 2007-04-05 14:38
返信ありがとうございます。

印刷プレビューを表示するのは難しそうなので
JEditorPaneを使って、html形式の文字列を
ダイアログに表示でき、かつファイルに出力できるので
そのファイル(html)をhtml表示のまま、印刷すること
はできますでしょうか?

サンプル等ありましたらよろしくお願いします。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 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
クロスポ
常連さん
会議室デビュー日: 2005/07/27
投稿数: 22
投稿日時: 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);

初心者ですいません。


nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-04-05 16:36
初心者という言い訳はむしろ悪印象ですのであまり用いないほうがいいでしょう。

エラーが発生したときにはその例外のスタックトレースを明記してください。
まるごとコピー&ペーストしましょう。
スタックトレースにはエラーの原因に迫る重要な情報が記述されています。
時には答えそのものが記述されています。

慣れるまではどう見ればいいのか分からないかもしれませんが、
それを読み解けるようになれば初心者脱却かもしれませんね。
クロスポ
常連さん
会議室デビュー日: 2005/07/27
投稿数: 22
投稿日時: 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());
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-04-06 10:48
引用:

クロスポさんの書き込み (2007-04-06 09:25) より:
html形式のまま、印刷することってできますでしょうか?



それはHTMLのテキストを印刷という意味ですか?
「HTML形式のまま」ってどういうことでしょう?
HTMLがブラウザに表示されたイメージを出力したいのでしょう?
それはあくまでブラウザがHTMLをレンダリングした結果ですよ。

私はjava.awt.printパッケージにはあまり詳しくないですが、
画面に対して描画を行うのと基本的には一緒のはずです。
出力先がモニタなのかプリンタなのかの違い。
Java的にはjava.awt.Graphicsオブジェクトへの描画になるのかな。

JEditorPaneのソースでも呼んでレンダリングしている部分だけ抽出すれば
JEditorPaneがGraphicsに描画する部分を利用してプリンタ用のGraphicsオブジェクトに
直接描画させることもできるかもしれませんが…

もともとそういった汎用HTMLレンダリングエンジンとして設計されていなかった
筈なので難しいと思いますよ。

スキルアップ/キャリアアップ(JOB@IT)