Senhores boa tarde.
Tenho tentado mas não consegui implementar a funcionalidade citada.
Eu criei um temple, consegui edit-alo e salva-lo.
Porem eu queria abrir o mesmo no navegador ou uma opção para baixar mas não estou conseguindo.
OBS: Não preciso nem salvar o arquivo na pc. Só precisaria que ele abrisse.
String id = request.getParameter("id");
Teste teste = new Teste ();
Teste DAO testedao = new TesteDAO();
teste= testedao.getById(Integer.parseInt(id));
String path = getServletContext().getRealPath("/tau/")
+ "/";
String rtfSource = "";
if(x) {
rtfSource = path + "a.rtf";
}else ify) {
rtfSource = path + "b.rtf";
}else if(g) {
rtfSource = path + "c.rtf";
}else if(h) {
rtfSource = path + "d.rtf";
}else ifu) {
rtfSource = path + "e.rtf";
}else if(w) {
rtfSource = path + "f.rtf";
}
RTFTemplateBuilder rtb = RTFTemplateBuilder.newRTFTemplateBuilder();
RTFTemplate rt = rtb.newRTFTemplate();
rt.setTemplate(new File(rtfSource));
rt.put("nome", teste.getNome());
rt.merge("/opt/tau/"+designacao.getPermissionario()+".rtf").getReader();
Salvo com sucesso. Como fazer para abrir no navegador?
Obrigado.
Carinha, o segredo de fazer o arquivo ser aberto no navegador é determinar o “contentType” no cabeçalho do response
response.setContentType(“application/rtf”);
Obrigado pelo retorno.
response.setContentType("application/rtf");
response.setHeader("Content-disposition", "note;filename=\""
+ fileName + "\"");
response.addHeader("Content-description", fileName);
Inseri isso no código. Creio que falta inserir o arquivo propriamente dito.
Como seria?
Não sei se você está fazendo isto como servlet ou como JSP, mas você pode abrir o arquivo e reescrever o arquivo direto na saída do response. Algo como:
OutputStream out = response.getOutputStream();
FileInputStream fi = new FileInputStream(<<seu arquivo>>);
byte[] buffer = new byte[30000]; //um bufferzinho pra ler mais que um byte por vez.
int lidos;
do {
lidos = fi.read(buffer);
if(lidos != -1) {
out.write(buffer,0,lidos);
out.flush();
}
while(lidos != -1);
Nota, fiz esse código de cabeça, e não testei “de verdade” ele.
Uma coisa legal de se fazer antes de enviar o arquivo é falar o tamanho dele no cabeçalho.
response.setContentLength(<>) antes de começar o envio dos dados que assim o cliente sabe quando o arquivo termina e consegue falar os “% concluídos” do arquivo.
Muito obrigado pela ajuda.
Está gerando tudo certinho. Agora sobre a acentuação do RTF. Todas as palavras acentuadas estão saindo com caracteres especiais.
O que seto para ler UTF-8 ?
[quote=edysnipes]Muito obrigado pela ajuda.
Está gerando tudo certinho. Agora sobre a acentuação do RTF. Todas as palavras acentuadas estão saindo com caracteres especiais.
O que seto para ler UTF-8 ?[/quote]
Bom, carinha, aí não sei o que você está fazendo aí, né? Se você está “recheando” um arquivo RTF pronto, você precisa ver qual character set que o RTF aceita, e não o contrário… Talvez valha a pena converter seu texto para outro encoding. Como faz isso não lembro de cabeça. Veja a especificação do formato Rich Text Format que talvez você tenha alguma dica por lá.
Muito obrigado CARINHA!
Resolvido. Hoje a noite irei postar a solução para ajudar outros CARINHAS.
Valew.