A formatar o ficheiro rtf em Java

Ok, estou a tentar criar um ficheiro .rtf Usando Java. Eu não sabia a sintaxe então o que eu fiz foi criar um arquivo rtf usando TextEdit em um Mac, em seguida, abri-lo com texto simples para ver o código. Usei isto para criar o meu método de saída que é o seguinte:

/* Creates RTF */
public String createRTF(){

    String l1 = "{\\rtf1\\ansi\\ansicpg1252\\cocoartf1265\\cocoasubrtf190 \n\n";
    String l2 = "{\\fonttbl\\f0\\fmodern\\fcharset0 Courier;} \n\n";
    String l3 = "{\\colortbl;\\red255\\green255\\blue255;} \n\n";
    String l4 = "\\margl1440\\margr1440\\vieww10800\\viewh8400\\viewkind0 \n\n";
    String l5 = "\\pard\\tx720\\tx1440\\tx2160\\tx2880\\tx3600\\tx4320\\tx5040\\tx5760\\tx6480\\tx7200\\tx7920\\tx8640\\pardirnatural \n\n";
    String l6 = "\n\n";
    String l7 = "\\f0\\fs24 \\cf0 Original Sequences:\\ \n\n";
    String l8 = "\\ \n\n";
    String l9 =  sequence1 + "\\ \n\n";
    String l10 = sequence2 + "\\ \n\n";
    String l11 = "\\ \n";
    String l12 = "Alignment:\\ \n\n";
    String l13 = "\\ \n\n";
    String l14 = s1Align + "\\ \n\n";
    String l15 = aligned + "\\ \n\n";
    String l16 = s2Align + "\\ \n\n";
    String l17 = "\\ \n\n";
    String l18 = "Score: " + score + "}";



    String rtfString = l1 + l2 + l3 + l4 + l5 + l6 + l7 + l8 + l9 + l10 + l11 + l12
            + l13 + l14 + l15 + l16 + l17 + l18;

    return rtfString;
}
Eu sei que é um pouco desleixado, mas estava a tentar ser o mais específico possível e separar as linhas porque quando fiz manualmente o ficheiro em TextEdit o código rtf foi:

{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
{\fonttbl\f0\fmodern\fcharset0 Courier;}
{\colortbl;\red255\green255\blue255;}
\margl1440\margr1440\vieww10800\viewh8400\viewkind0 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural

\f0\fs24 \cf0 Original Sequences:\
\
ACGTTGTACCA\
AGTTAAACCGTAAA\
\
Alignment:\
\
ACGTTGTACC--A--\
| |||  |||  |  \
A-GTTAAACCGTAAA\
\
Score: 3}  
O meu problema é que isto é ... exatamente como o meu código rtf fica quando eu salvo um arquivo usando o meu programa, mas quando eu abrir o arquivo formatado usando TextEdit é uma cadeia contínua Não separada por linhas como eu quero. O engraçado é que quando eu adiciono a linha Quebra-se em TextEdit, em seguida, salvá-lo o código rtf parece exatamente o mesmo. Eu tentei adicionar dois /n/n no final das minhas cordas, mas isso não funcionou. Existe uma maneira de realizar esta saída?

Author: Ryan Sayles, 2014-04-09

4 answers

Utilizar \r\n em vez de \n. Isso deve resolver o problema.

 0
Author: Flash Thunder, 2014-04-09 17:48:33

Use um objecto de construtor de texto para compilar o seu {[[0]}, o seu método de anexação para compilar o texto e o separador de linhas do sistema para novas linhas, tais como:

StringBuilder.append(System.getProperty("line.separator"));

 0
Author: Sujan Sivagurunathan, 2014-04-09 19:03:19
Detestaria responder à minha pergunta, mas encontrei a solução. Uma vez que o que eu queria mostrar estava em um {[[0]}, eu precisava adicionar //line ao final das minhas cordas para colocar corretamente uma nova linha no meio de um parágrafo. Obrigado a todos pela vossa ajuda!
 0
Author: Ryan Sayles, 2014-04-09 19:28:10

Ver Rich Text Format (RTF) Versão 1.5 Especificação

"\\\r\n"

Uma barra invertida seguida de CR + LF funcionará como \par - um parágrafo.

Um carriage return (valor do carácter 13) ou linefeed (valor do carácter 13) 10) será tratado como um controlo \par Se o carácter for precedido por invertido. Tem de incluir a barra invertida; caso contrário, a RTF ignora a palavra controlo. (Você também pode querer inserir um par carriage-return / linefeed sem barra invertida em menos a cada 255 caracteres para melhor transmissão de texto através de linhas de comunicação.)

 0
Author: Joop Eggen, 2014-04-09 19:39:00