2016-11-15 6 views
7

У меня есть файл в формате RTF, который имеет некоторый текст с пулями, как показано на скриншоте нижекак читать пули из RTF-файла

enter image description here

Я хочу, чтобы извлечь данные вместе с пулями, но при печати в консоли я получаю ненужные значения. Как я точно печатаю с консоли. Как я пытался как ниже

public static void main(String[] args) throws IOException, BadLocationException { 
    RTFEditorKit rtf = new RTFEditorKit(); 
    Document doc = rtf.createDefaultDocument(); 

    FileInputStream fis = new FileInputStream("C:\\Users\\Guest\\Desktop\\abc.rtf"); 
    InputStreamReader i =new InputStreamReader(fis,"UTF-8"); 
    rtf.read(i,doc,0); 
    System.out.println(doc.getText(0,doc.getLength())); 
} 

Консоли вывода:

enter image description here

я предположил значение бросового обусловлено не утешает поддержку chareset поэтому я попытался создать файл в формате PDF, но в формате PDF также Я получаю одинаковые значения мусора. это код PDF

Paragraph de=new Paragraph(); 
      Phrase pde=new Phrase(); 
      pde.add(new Chunk(getText("C:\\Users\\Guest\\Desktop\\abc.rtf"),smallNormal_11)); 
      de.add(pde); 

      de.getFont().setStyle(BaseFont.IDENTITY_H); 
      document.add(de); 
public static String getText() throws IOException, BadLocationException { 
     RTFEditorKit rtf = new RTFEditorKit(); 
     Document doc = rtf.createDefaultDocument(); 

     FileInputStream fis = new FileInputStream("C:\\Users\\Guest\\Desktop\\abc.rtf"); 
     InputStreamReader i =new InputStreamReader(fis,"UTF-8"); 
     rtf.read(i,doc,0); 
     String output=doc.getText(0,doc.getLength()); 
return output; 
    } 
+2

Вместо того чтобы писать что-то сложное, как PDF-файл, напишите то же самое, что и ваш вывод в консольный текстовый файл UTF-8, затем перетащите этот файл, чтобы увидеть фактические значения, которые записываются. –

+0

Я удалил тег 'itext' (отредактировал ожидающее одобрение модератора), потому что ваш вопрос не о iText. Речь идет о RTF. Стивен абсолютно прав. Разделите свою проблему, сначала убедитесь, что она работает в консоли, прежде чем вы даже начнете думать о PDF. –

+0

Я думаю, что он попытался перейти на PDF, чтобы обойти проблему, это не его конечная цель. – Asoub

ответ

6

Несмотря на то, что вы сказали, я думаю, что это проблема консоли кодирования.

В любом случае вы можете легко проверить это:

Просто замените эту строку:

System.out.println(doc.getText(0,doc.getLength())); 

С этими 2 строками:

PrintStream ps = new PrintStream(System.out, true, "UTF-8"); 
    ps.println(doc.getText(0,doc.getLength())); 

Это заставит кодировку консольный UTF-8.

Если все еще не так, я бы предположил, что ваш файл не полностью соответствует требованиям rtf.


Я сделал несколько тестов, и ваш код работает хорошо (консоль один, я не пробовал PDF) под Linux, но консоль изначально в UTF-8.

Смежные вопросы