Gerando arquivos RTF através de modelos
      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:
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.
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.
  
    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.
    Páginas:
                  1
                        2
            
    
  
                  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
        (~14 anos atrás)
      
    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
        (~15 anos atrás)
      
    
                  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 ?
      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
        (~16 anos atrás)
      
    
                  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.
              
      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
        (~18 anos atrás)
      
    
                  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...
      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
        (~20 anos atrás)
      
    
                  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.
      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
        (~20 anos atrás)
      
    
                  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!!!
      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
        (~20 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??
              
      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
        (~20 anos atrás)
      
    
                  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.
      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
        (~21 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.
              
      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
        (~21 anos atrás)
      
    

