Quebra de linha e de página usando DefaultEditorKit

Bom dia,

Estou usando o DefaultEditorKit para importar um RTF, substituir as palavras marcadas pelas informações do relatório solicitado e depois fazer um output para .doc.

A formatação funciona perfeitamente. Abre que é uma maravilha. O problema é que não consigo fazer as quebras de linha nem de Página.

Segue código.

package util;

import gui.util.ParametrosWord;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultEditorKit;


public class RelPonAtePisCofins extends JFrame {
	
    public RelPonAtePisCofins(ParametrosWord param) throws FileNotFoundException, IOException, BadLocationException {
    	setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        // Criação do editor RTF
        DefaultEditorKit rtf= new DefaultEditorKit();
        JEditorPane editor = new JEditorPane();
        editor.setEditorKit(rtf);

        // This text could be big so add a scroll pane
        JScrollPane scroller = new JScrollPane();
        scroller.getViewport().add(editor);

        // Load an RTF file into the editor
        try {
            FileInputStream fi = new FileInputStream(new File("C:/Users/juc/workspace/SpedPisCofins/appClientModule/util/rtf/principalPisCofins.rtf").getAbsoluteFile());


            //INICIO SUBSTITUICAO DAS PALAVRAS
            // palavras que serao substituidas funcao replace

            String cliente = "<cliente>";
            String NrValidacoes = "#NrValidacoes";
            String ArqInform = "#ArqInform";
            String LinhasArq = "#LinhasArq";
            String LinhasValidas = "#LinhasValidas";
            String LinhasInvalidas = "#LinhasInvalidas";
            String ValEfet = "#ValEfet";
            String ValOkEfet = "#ValOkEfet";
            String ValNaoOkEfet = "#ValNaoOkEfet";

            //valores que substituem as palavras da funcao replace
            String Sub_cliente = param.getEmpresa().getNome_empresa();
            String Sub_NrValidacoes = param.getNrValidacoes();
            String Sub_ArqInform = param.getArqInform();
            String Sub_LinhasArq = param.getLinhasArq();
            String Sub_LinhasValidas = param.getLinhasValidas();
            String Sub_LinhasInvalidas = param.getLinhasInvalidas();
            String Sub_ValEfet = param.getLinhasInvalidas();
            String Sub_ValOkEfet = param.getValOkEfet();
            String Sub_ValNaoOkEfet = param.getValNaoOkEfet();


    //FIM SUBSTITUICAO DAS PALAVRAS
            String substitui_palavra = null;

    //        localiza a palavra e a substitui

            rtf.read(fi, editor.getDocument(), 0);
            substitui_palavra = editor.getText(0, editor.getDocument().getLength());

    //        efetua a substituicao das palavras
            substitui_palavra = substitui_palavra.replace(cliente,Sub_cliente);
            substitui_palavra = substitui_palavra.replace(NrValidacoes, Sub_NrValidacoes);
            substitui_palavra = substitui_palavra.replace(ArqInform, Sub_ArqInform);
            substitui_palavra = substitui_palavra.replace(LinhasArq, Sub_LinhasArq);
            substitui_palavra = substitui_palavra.replace(LinhasValidas, Sub_LinhasValidas);
            substitui_palavra = substitui_palavra.replace(LinhasInvalidas, Sub_LinhasInvalidas);
            substitui_palavra = substitui_palavra.replace(ValEfet, Sub_ValEfet);
            substitui_palavra = substitui_palavra.replace(ValOkEfet, Sub_ValOkEfet);
            substitui_palavra = substitui_palavra.replace(ValNaoOkEfet, Sub_ValNaoOkEfet);

            editor.replaceSelection(substitui_palavra);
            FileOutputStream fos = new FileOutputStream("c:\\temp\\"
                                                        + param.getEmpresa().getNome_empresa().replaceAll("\\p{Punct}","")
                                                        +".doc");
            rtf.write(fos, editor.getDocument(), 0, editor.getDocument().getLength());
        
        } catch (FileNotFoundException e) {
            System.err.format("File: not found \n" +e.toString());
        } catch (IOException e) {
            System.err.println(e.toString() +"\n");
        } catch (BadLocationException e) {
            System.err.println(e.toString()+"\n");
        } finally{
            //System.out.println("Arquivo gravado com sucesso");
        };
    }
	
    public static void main(String args[]) throws FileNotFoundException, IOException, BadLocationException {
        RelPonAtePisCofins mainFrame = new RelPonAtePisCofins();
        mainFrame.setVisible(true);
    }

    private RelPonAtePisCofins() {}
}

Segue anexo o modelo RTF usado para geração dos .DOC.

Segue anexo o .DOC resultado da manipulação do RTF pelo DefaultEditorKit.