※ ChatGPTを利用し、要約された質問です(原文:RTFテキストの保存)
Javaでリッチテキスト対応のエディタを作成する方法
このQ&Aのポイント
Javaでリッチテキスト対応のエディタを作る方法についてまとめました。
RTFEditorKitを使用してRTFテキストを保存する際に、文字配置がうまく反映されない問題が発生しています。
RTFEditorKitが不完全なため、自作の部分を組み合わせる必要があるかもしれません。
Javaでリッチテキスト対応のエディタを作っているのですが、うまく保存ができません。
ご存知の方がいらっしゃればご教授頂けませんでしょうか?
【つまづいているところ】
RTFEditorKitを使って、Documentを保存すると、
文字配置(中央寄せなど)が保存されたファイルに反映されない。
(太字や、フォントサイズなどはちゃんと保存される)
【ソース(部分抜粋)】
//=====定義部分=====
StyleContext sc = new StyleContext();
DefaultStyledDocument doc = new DefaultStyledDocument(sc);
JTextPane textPane = new JTextPane(doc);
//=====フォント修飾(太字)=====
SimpleAttributeSet attr = new SimpleAttributeSet();
StyleConstants.setBold(attr, true);
textPane.setCharacterAttributes(attr, false);
//=====中央寄せ=====
SimpleAttributeSet attr = new SimpleAttributeSet();
StyleConstants.setAlignment(attr, StyleConstants.ALIGN_CENTER);
textPane.setParagraphAttributes(attr, false);
//=====保存=====
FileOutputStream out = new FileOutputStream("出力パス");
new RTFEditorKit().write(out, doc, 0, doc.getLength());
out.close();
【環境】
OS:win2000
JDK:jdk1.5.0_04
【参考にしたサイト】
JavaDrive
http://www.javadrive.jp/tutorial/appli/word/index.html
【備考】
ワードパッドと、RTFEditorKitで作成されたRTFファイルを見ると、
ワードパッド:\pard\qc a\par("a"を中央寄せで表示)
RTFEditorKit:a\par
となっていたので、前半の「\pard\qc」がうまく書き出されていないのが原因。
ただ、ワードパッドで文字配置を編集したテキストは問題なく読み込める。
APIドキュメントを見ると、RTFEditorKitは未だ不完全という感じなので、
documentを解析し、RTFに書き出す部分を自作するしかないでしょうか?
お礼
バグデータベースは探してみたつもりだったのですが、 キーワードを「RTFEditorKit」にしてしまっていた為にID:4351455のレポートに辿り着けなかったみたいです。 RTFの保存部分はRTFGeneratorが担っているので、 こちらも検索するべきでした・・・ 修行して出直します。 それにしても、「改修予定なし」ですか・・・ とりあえず、自作で進めようと思います。 どうもありがとうございました!!