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
(~13 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
(~14 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
(~15 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
(~17 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
(~19 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
(~19 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
(~19 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
(~19 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
(~20 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
(~20 anos atrás)