+2

Gerando arquivos RTF através de modelos

criado por Diogo Gomes em 06/01/2004 3:00pm
Gerando arquivos RTF

Poderíamos criar livremente um arquivo RTF, mas teríamos que dominar toda a sua sintaxe. É mais simples e eficiente a utilização de um modelo para gerar um documento.
O primeiro passo é criar o seu modelo de documento, para o artigo, crie em qualquer editor de texto o seguinte arquivo RTF:

#início#

PHPBrasil.com

Caro membro: =nome=.
O portal PHPBrasil tem a honra de te convidar para um seminário sobre criação de gráficos com a biblioteca GD.

É extremamente necessário o seu cadastro no evento pelo endereço: www.phpbrasil.com/eventos/gd e utilize o seguinte código de cadastro: =codigo=.

Esperamos a sua presença.

São Paulo, =mm/dd/yyyy=.
Equipe PHPBrasil.com

#fim#

Note a utilização de marcadores (=nome=) que delimitam os dados que serão substituídos no nosso modelo. Para facilitar o entendimento, aí está o código completo que gera o arquivo RTF.

<?php
header('Content-type: application/msword');
header('Content-Disposition: inline, filename=PHPBrasil.rtf');

$filename='PHPBrasil.rtf';
$fp=fopen($filename,'r');

$output=fread($fp,filesize($filename));

fclose($fp);
$nome='Diogo Gomes';
$codigo='php0001';
$data=date("d/m/Y");

$output=str_replace('=nome=',$nome,$output);
$output=str_replace('=codigo=',$codigo,$output);
$output=str_replace('=mm/dd/yyyy=',$data,$output);

echo $output;
?>

Especificamos o MIME do arquivo, que enviamos através da função header() para o browser, o que é importante para ajudar o browser a escolher a aplicação correta que fará a leitura do arquivo.
O primeiro cabeçalho diz que estamos enviando uma aplicação do Word ( o que será o mais provável editor de texto do usuário). No segundo, diz ao navegador para exibir o conteúdo do arquivo automaticamente e que seu nome sugerido é PHPBrasil.rtf.
O script abre o arquivo modelo, o lê, faz a substituição das marcações pelos dados definitivos com a função str_replace(). A utilização dessa função é útil, já que é uma função executada rapidamente, mesmo que o arquivo modelo seja extenso.
Após as substituições é só ecoar a saída para o browser. Temos nosso arquivo RTF. Lembre-se que os arquivos RTF podem ser alterados e não é possível a proteção contra alteração que o Word oferece.

Comentários:

Mostrando 1 - 10 de 25 comentários
Marco disse:
Boa tarde Diogo. Como faço para enviar esse RTF com os dados do formulário que foi preenchido. Existe essa possibilidade? Obrigiado.
14/03/2011 1:18am (~11 anos atrás)

Vlademiro disse:

O script funciona perfeitamente

A idéia é simples e funcional.

Quanto ao erro :

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\nupes\phpbrasil.php:9) in C:\xampp\htdocs\nupes\phpbrasil.php on line 11

Isso acontece porque algum caracter foi escrito antes do header.
09/06/2010 10:58am (~11 anos atrás)

Téo disse:
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\nupes\phpbrasil.php:9) in C:\xampp\htdocs\nupes\phpbrasil.php on line 10

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\nupes\phpbrasil.php:9) in C:\xampp\htdocs\nupes\phpbrasil.php on line 11

alguem sabe que erro é esse ?
24/08/2009 11:44am (~12 anos atrás)

Ademir disse:
Era realmente isso que eu estava precisando, parabens pelo post.
Tem como salvar a mudança no arquivo .rtf e não abrir o arquivo para o usuario(ou seja só manipular o arquivo, sem apresenta-lo) se souber como, agradeço.
21/12/2007 10:06am (~14 anos atrás)

claudia disse:
Olá Diogo.

Consegui gerar o rtf. Blz. Mas como faço para imprimir dados vindo de um formulário ou de um select feito no banco de dados? Alguém já perguntou isto, mas ainda não entendi. Obrigada...
25/01/2006 6:03am (~16 anos atrás)

Douglas Lima disse:
Kara, achei muito show este teu scripit,
Estou tentando adaptar ao meu sistema de pesquisa. Onde pesquiso pelo "nome" e o resultado são todos os registros que tenham relação. Como adapto(estou apanhando) teu scripit para imprimir/gerar o rtf com o resultado de minha pesquisa.
07/11/2005 10:00am (~16 anos atrás)

Sionise disse:
Puuutz o artigo é PERFECT!!!
Parabéns Diogo me ajudou em muito, valeu, espero que continue sempre assim, compartilhando o que sabes ;)

Beijinhos...
Q DEUS abençoe!!!
20/07/2005 4:58pm (~16 anos atrás)

Muito bom seu artigo!!

Estou com uma dúvida: Como criar um modelo estatico de tabela no meu arquivo RTF se eu não sei quantas linhas irá gerar na minha query??
10/04/2005 12:34pm (~17 anos atrás)

Diogo Gomes disse:
Saudações Barreto,

O processo é o mesmo, crie o documento de etiquetas no editor de textos e salve como RTF, onde estaria os campos destinados aos dados, coloque as tags que serão substituídas pelo script. O trabalho a mais que terá será com a regra de substituição de tags. Nada muito complicado.
21/01/2005 7:40am (~17 anos atrás)

Saudações a todos,

Gostei muito este artigo e creio que poderei utiliza-lo em uma aplicação minha, só que preciso saber como utilizar o arquivo RTF para imprimir etiquetas para uma mala direta, preciso formatar a pagina para receber as etiquetas padrão, estas que são vendidas em papelarias mesmo, agora como fazer para reconhecer mudança de pagina? E reconhecer o mesmo campo em lugares diferentes? Obrigado, Aguardo resposta.
20/01/2005 11:16am (~17 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)