Hi,
To load a RTF-document, I tried to use an JEditorPane and
invoke the read(Reader,null) method of its superclass JTextPane.
But there is allways an IOException: �RFT is an 8-Bit format�.
I tried to build the Reader with:
InputStreamReader(new FileInputStream(fileName),encoding).
I tried every BytetoChar-Adapter I could find in the classes.zip, but it
don�t work (see example attached).
Does the read method require a special second parameter?
Can�t find any Documention about this parameter.
Thank you for any help,
Bernhard
import com.sun.java.swing.*;
import com.sun.java.swing.text.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
public class RTFTest extends JFrame{
public static int WIDTH = 500;
public static int HEIGHT = 500;
JEditorPane rtfPane;
public static String docName="test.rtf";
String isoType;
String[]
formats={"Default","ISO8859_1","SingleByte","DoubleByte","DBCS_ASCII","DBCS_EBCDIC","EUC","ASCII","Big5","Cp037","Cp1006","Cp1025","Cp1026","Cp1046","SJIS","Cp1097","Cp1098","Cp1112","Cp1122","Cp1123","Cp1124","Cp1250","Cp1251","Cp1252","Cp1253","Cp1254","Cp1255","Cp1256","Cp1257","Cp1258","Cp1381","Cp1383","Cp273","Cp277","Cp278","Cp280","Cp284","Cp285","Cp297","Cp33722","Cp420","Cp424","Cp437","Cp500","Cp737","Cp775","Cp838","Cp850","Cp852","Cp855","Cp856","Cp857","Cp860","Cp861","Cp862","Cp863","Cp864","Cp865","Cp866","Cp868","Cp869","Cp870","Cp871","Cp874","Cp875","Cp918","Cp921","Cp922","Cp930","Cp935","Cp937","Cp939","Cp942","Cp942C","Cp943","Cp943C","Cp948","Cp949","Cp949C","Cp950","Cp970","JIS0201","JIS0208","JIS0212","EUC_CN","EUC_JP","EUC_KR","EUC_TW","GBK","ISO2022","ISO2022CN","ISO2022JP","ISO2022KR","ISO8859_2","ISO8859_3","ISO8859_4","ISO8859_5","ISO8859_6","ISO8859_7","ISO8859_8","ISO8859_9","JISAutoDetect","Johab","KOI8_R","MS874","MS936","MS950","MacArabic","MacCentralEurope","MacCroatian","MacCyrillic","MacDingbat","MacGreek","MacHebrew","MacIceland","MacRoman","MacRomania","MacSymbol","MacThai","MacTurkish","MacUkraine","TIS620","UTF8","Unicode","UnicodeBig","UnicodeLittle"};
public RTFTest(String title){
super(title);
rtfPane = new JEditorPane();
rtfPane.setContentType("application/rtf");
//rtfPane.read(openFile(docName),null);
rtfPane.setEditable(false);
int len = formats.length;
boolean res = false;
for (int i=0;i<len;i++){
// try to load the file with every ByteToChar-Adapter found in classes.zip
res = loadDocument(formats[i]);
System.out.println("round "+i+": format: "+formats[i]+" result: "+res);
if (res)
// stop trying, if loading process end successfully
System.exit(0);
}
}
public boolean loadDocument(String encoding){
try {
// which values can be given as the second parameter of the read-method ?
rtfPane.read(openFile(docName,encoding),null);
return true;
} catch (IOException e) {
System.out.println("IOException: " + e.getMessage());
}
return false;
}
public Reader openFile(String fileName, String encoding){
Reader aReader=null;
try {
// Open the file with special encoding
InputStreamReader isr = new InputStreamReader(new
FileInputStream(fileName),encoding);
aReader = new BufferedReader(isr);
}
catch ( FileNotFoundException fne) {
System.err.println("File not found: "+fileName+": "+fne);
}
catch (IOException e) {
System.err.println("Can�t open the File: "+fileName+" | : "+e);
}
return aReader;
}//openFile
public static void main(String args[])
{
if (args.length > 0) {
docName = args[0];
}
RTFTest testFrame = new RTFTest("Test f�r RTF-Dokumente");
testFrame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
testFrame.setSize(WIDTH,HEIGHT);
testFrame.setVisible(true);
}// main
}