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() {}
}