Clipper On Line • Ver Tópico - nfRTF - Gera arquivos para Word
Mudar para estilo Clássico
Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.
Postar uma resposta

nfRTF - Gera arquivos para Word

06 Dez 2005 00:05

/*
*
* Arquivo...: nfrtf.prg
* Autor.....: Desconhecido
* Adaptacao.: Jose Carlos da Rocha
* E-mail....: softclever@softclever.com
* Site......: www.softclever.com
* Versao....: 1.0, 05/Ago/2003
* Objetivo..: Criar arquivos RTF para serem lidos pelo Word
*
*/

// Label Header
#define CR Chr(13)
#define LF Chr(10)
#define CRLF CR+LF

#define BOLD_ON "\b"
#define ITALIC_ON "\i"
#define UNDERLINE_ON "\ul"
#define CAPS_ON "\caps"

#define STYLE_OFF "0"
#define BOLD_OFF BOLD_ON+STYLE_OFF
#define ITALIC_OFF ITALIC_ON+STYLE_OFF
#define UNDERLINE_OFF UNDERLINE_ON+STYLE_OFF
#define CAPS_OFF CAPS_ON+STYLE_OFF

#define RTF_QC "\qc" // Centralizado
#define RTF_QJ "\qj" // Justificado
#define RTF_QL "\ql" // Esquerda
#define RTF_QR "\qr" // Direita

#define RTF_PAR "\par" // Paragrafo normal
#define RTF_PARD "\pard" // Paragrafo distanciado
#define RTF_PLAIN "\plain" // Paragrafo plaino

#define RTF_CF "\cf" // Cor da fonte

#define RTF_BULLET "\bullet" // Bullet

#define RTF_SECT "\sect\sectd" // Forca pagina
#define RTF_COLS "\cols" // Colunas na pagina

#define RTF_F "\f" // Numero da fonte
#define RTF_FS "\fs" // Tamanho da fonte

#define RTF_DEFAULT "\plain\f2\fs10\cf0" // Texto normalizado

/*
*
*
*
*
*/
function rtfTeste
nRTF := rtfOpen( "TESTE.RTF", ;
RTF_QC+" Sistema de Faturamento Total"+RTF_PAR+RTF_QC+" Novembro de 2001", ;
"(r) Direitos Reservados SoftClever Informatica, 1995" )

rtfWriteLn( nRTF,0,20,1,RTF_QC , "FatAll" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,RTF_QC , "Guia do Usuário" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,RTF_QC , "Versão 4" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,RTF_QC , "CA-Clipper(c) 5.2b" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,RTF_QC , "Soft Clever Comércio Ltda ME." )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,RTF_QC , "(c) 1996 Soft Clever Comércio Ltda ME." )
rtfWriteLn( nRTF,,,,RTF_QC , "Todos os direitos reservados." )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,RTF_QC , "FatAll é uma marca registrada da Soft Clever Comércio Ltda ME." )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,0,20,1,RTF_QC , "Tutorial Básico" )
rtfEject( nRTF )

rtfWriteLn( nRTF,0,20,1,RTF_QC , "Módulos" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,RTF_QC , "Administrativo" )
rtfWriteLn( nRTF,,,,RTF_QC , "Vendas" )
rtfWriteLn( nRTF,,,,RTF_QC , "Produção" )
rtfWriteLn( nRTF,,,,RTF_QC , "Financeiro" )
rtfWriteLn( nRTF,,,,RTF_QC , "Compras" )
rtfWriteLn( nRTF,,,,RTF_QC , "Contabilidade" )
rtfWriteLn( nRTF,,,,RTF_QC , "Utilitários" )
rtfWriteLn( nRTF,,,,RTF_QC , "Relatórios" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,,,,"" , "" )
rtfWriteLn( nRTF,0,20,1,RTF_QC , "Tutorial Básico" )
rtfEject( nRTF )

rtfWriteLn( nRTF,0,10,1,"" , "Os menus e funções do FatAll")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ , "Para possibilitar o trabalho com os vários módulos do sistema o FatAll é dividido em menus e submenus que levam oo usuário aos módulos internos e possibilitam a interação com as rotinas. Os principais módulos do FatAll estão distribuídos em:")
rtfWriteLn( nRTF,,,,"" , " ")
rtfWriteLn( nRTF,,,,RTF_QJ+BOLD_ON,"Administrativo")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ , "Este módulo é o mais simples de todos, porém o mais importante para todo o funcionamento geral, pois é nele que produzimos os cadastros gerais e tabelas de auxílio, como ponto de partida para todo o sistema. Constam nesta opção os cadastros gerais de Cliente, Fornecedor, Transportador, Funcionário, Conta-corrente, Histórico padrão, Documento, Portador, Condição de pagamento, Almoxarifados, Categoria de Produtos e Produtos(com cadastro e leitura através de leitor de código de barras).")
rtfWriteLn( nRTF,,,,"" , " ")
rtfWriteLn( nRTF,,,,RTF_QJ+BOLD_ON,"Vendas")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ , "Comumente chamado de faturamento, este módulo tem por objetivo o atendimento normal dos processos tradicionais de vendas, bem como a satisfação no resultado final, pois através de uma única tela de pedidos podemos produzir todo o resultado à receber, quanto a andamento de pedidos, cheques e comissões, apuração de ICMS e IPI.")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ+BOLD_ON,"Financeiro")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ , "Este é o módulo central do qual todo o movimento é atualizado automáticamente pelos módulos periféricos de Vendas e Compras, sendo possível também produzir mos lançamentos externos, ou seja manuais como pagamento avulso de contas, recebimentos exporádicos, atualização de saldo da conta-corrente, transferencia de/para conta-corrente/caixa, manutenção de fluxo de caixa, etc. Neste módulo podemos encontrar as opções de Contas à Pagar/Pagas, Contas à Receber/Recebidas e Contas-corrente/Caixa.")
rtfWriteLn( nRTF,,,,"" , " ")
rtfWriteLn( nRTF,,,,RTF_QJ+BOLD_ON,"Compras")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ , "Este módulo mantém o movimento dos cadastros de fornecedores e produtos que são comercializados pelo empreendedor, onde atualizamos os custos unitários saldos de quantidades, , valores de venda, margem de lucro(G.M. Gros Margin), ponto de equilíbrio(U.E. Unidade Equiparada), ICMS, IPI, fretes e carretos, quantidades vendidas/saídas por produto, transferências entre almoxarifados, consultas de notas-fiscais e cheques internos emitidos para pagamento de compras. Também produz lançamentos automáticos no financeiro e estoque.")
rtfWriteLn( nRTF,,,,"" , " ")
rtfWriteLn( nRTF,,,,RTF_QJ+BOLD_ON,"Contabilidade")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ , "Através de um plano de contas cuidadosamente elaborado, servindo de base para comércio e industria, neste módulo podemos manter atualizados dados pertinentes a contabilidade trazendo informações em balancetes, livros diários e razão, sempre mantendo integração com os módulos de Vendas e Compras.")
rtfWriteLn( nRTF,,,,"" , " ")
rtfWriteLn( nRTF,,,,RTF_QJ+BOLD_ON,"Relatórios")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ , "Da mesma forma que o módulo Administrativo é importante para a entrada de informações, este é importante para saída de dados. Neste módulo iremos encontramos cerca de 74 relatórios prontos para serem usados e modificados conforme suas necessidades, além de uma infinidade de relatórios que podem ser criados pelo módulo utilitário com a opção de Geração de relatórios.")
rtfWriteLn( nRTF,,,,"" , " ")
rtfWriteLn( nRTF,,,,RTF_QJ+BOLD_ON,"Utilitários")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ , "Neste módulo podemos encontrar opções de Configuração de cores, Organização de índices, Segurança de arquivos e Backup/Restore e Segurança de sistema (Senhas,Usuários,etc.), além do gerador de relatórios anteriormente exemplificado.")
rtfWriteLn( nRTF,,,,"" , " ")
rtfWriteLn( nRTF,,,,RTF_QJ+BOLD_ON,"Funções")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ , "Para fazer a manutenção de dados dentro de janelas de visualização use as teclas rápidas INS(Insert-para incluir), DEL(Delete-para excluir) e ENTER (Para alterar). Para se movimentar dentro destas consultas utilize as teclas de setas para CIMA e BAIXO ou para movimentar entre boxes use TAB e para sair de qualquer local utilize a tecla ESCape.")
rtfEject( nRTF )

rtfWriteLn( nRTF,0,10,1,"" , "Dados em colunas")
rtfCols( nRTF, 2 )
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ , "Para possibilitar o trabalho com os vários módulos do sistema o FatAll é dividido em menus e submenus que levam oo usuário aos módulos internos e possibilitam a interação com as rotinas. Os principais módulos do FatAll estão distribuídos em:")
rtfWriteLn( nRTF,,,,"" , " ")
rtfWriteLn( nRTF,,,,RTF_QJ+BOLD_ON,"Administrativo")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ , "Este módulo é o mais simples de todos, porém o mais importante para todo o funcionamento geral, pois é nele que produzimos os cadastros gerais e tabelas de auxílio, como ponto de partida para todo o sistema. Constam nesta opção os cadastros gerais de Cliente, Fornecedor, Transportador, Funcionário, Conta-corrente, Histórico padrão, Documento, Portador, Condição de pagamento, Almoxarifados, Categoria de Produtos e Produtos(com cadastro e leitura através de leitor de código de barras).")
rtfWriteLn( nRTF,,,,"" , " ")
rtfWriteLn( nRTF,,,,RTF_QJ+BOLD_ON,"Vendas")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ , "Comumente chamado de faturamento, este módulo tem por objetivo o atendimento normal dos processos tradicionais de vendas, bem como a satisfação no resultado final, pois através de uma única tela de pedidos podemos produzir todo o resultado à receber, quanto a andamento de pedidos, cheques e comissões, apuração de ICMS e IPI.")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ+BOLD_ON,"Financeiro")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ , "Este é o módulo central do qual todo o movimento é atualizado automáticamente pelos módulos periféricos de Vendas e Compras, sendo possível também produzir mos lançamentos externos, ou seja manuais como pagamento avulso de contas, recebimentos exporádicos, atualização de saldo da conta-corrente, transferencia de/para conta-corrente/caixa, manutenção de fluxo de caixa, etc. Neste módulo podemos encontrar as opções de Contas à Pagar/Pagas, Contas à Receber/Recebidas e Contas-corrente/Caixa.")
rtfWriteLn( nRTF,,,,"" , " ")
rtfWriteLn( nRTF,,,,RTF_QJ+BOLD_ON,"Compras")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ , "Este módulo mantém o movimento dos cadastros de fornecedores e produtos que são comercializados pelo empreendedor, onde atualizamos os custos unitários saldos de quantidades, , valores de venda, margem de lucro(G.M. Gros Margin), ponto de equilíbrio(U.E. Unidade Equiparada), ICMS, IPI, fretes e carretos, quantidades vendidas/saídas por produto, transferências entre almoxarifados, consultas de notas-fiscais e cheques internos emitidos para pagamento de compras. Também produz lançamentos automáticos no financeiro e estoque.")
rtfWriteLn( nRTF,,,,"" , " ")
rtfWriteLn( nRTF,,,,RTF_QJ+BOLD_ON,"Contabilidade")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ , "Através de um plano de contas cuidadosamente elaborado, servindo de base para comércio e industria, neste módulo podemos manter atualizados dados pertinentes a contabilidade trazendo informações em balancetes, livros diários e razão, sempre mantendo integração com os módulos de Vendas e Compras.")
rtfWriteLn( nRTF,,,,"" , " ")
rtfWriteLn( nRTF,,,,RTF_QJ+BOLD_ON,"Relatórios")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ , "Da mesma forma que o módulo Administrativo é importante para a entrada de informações, este é importante para saída de dados. Neste módulo iremos encontramos cerca de 74 relatórios prontos para serem usados e modificados conforme suas necessidades, além de uma infinidade de relatórios que podem ser criados pelo módulo utilitário com a opção de Geração de relatórios.")
rtfWriteLn( nRTF,,,,"" , " ")
rtfWriteLn( nRTF,,,,RTF_QJ+BOLD_ON,"Utilitários")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ , "Neste módulo podemos encontrar opções de Configuração de cores, Organização de índices, Segurança de arquivos e Backup/Restore e Segurança de sistema (Senhas,Usuários,etc.), além do gerador de relatórios anteriormente exemplificado.")
rtfWriteLn( nRTF,,,,"" , " ")
rtfWriteLn( nRTF,,,,RTF_QJ+BOLD_ON,"Funções")
rtfWriteLn( nRTF,,,,"" , "")
rtfWriteLn( nRTF,,,,RTF_QJ , "Para fazer a manutenção de dados dentro de janelas de visualização use as teclas rápidas INS(Insert-para incluir), DEL(Delete-para excluir) e ENTER (Para alterar). Para se movimentar dentro destas consultas utilize as teclas de setas para CIMA e BAIXO ou para movimentar entre boxes use TAB e para sair de qualquer local utilize a tecla ESCape.")
rtfEject( nRTF )

rtfClose( nRTF )

//----------------------------------------------------------
// Proposito :
// Abrir arquivo RTF e escrever cabecalhos
// Parametros:
// cFile - Nome do arquivo
// cHeader - Cabecalho do arquivo
// cFooter - Rodape do arquivo
// Retorna :
// nHandle - Handle do arquivo RTF
//----------------------------------------------------------
function rtfOpen( cFile, cHeader, cFooter )
local nHandle
local cBof := [{\rtf1\ansi\deff0\deftab720]+Chr(13)+Chr(10)+;
[ {\fonttbl]+Chr(13)+Chr(10)+;
[ {\f0\fnil Times New Roman;}]+Chr(13)+Chr(10)+;
[ {\f1\fnil Arial;}]+Chr(13)+Chr(10)+;
[ {\f2\fnil Courier New;}]+Chr(13)+Chr(10)+;
[ {\f3\fnil MS Sans Serif;}]+Chr(13)+Chr(10)+;
[ {\f4\fnil\fcharset2 Symbol;}]+Chr(13)+Chr(10)+;
[ {\f5\fnil\fprq2 System;}]+Chr(13)+Chr(10)+;
[ {\f6\fnil Verdana;}]+Chr(13)+Chr(10)+;
[ }]+Chr(13)+Chr(10)+;
[ {\colortbl\red0\green0\blue0;\red0\green0\blue254;}]+Chr(13)+Chr(10)+;
[ {\header \pard\par\f2\fs20]+cHeader+[ \par}]+Chr(13)+Chr(10)+;
[ {\footer \pard\par\f2\fs10]+cFooter+[ \par}]+Chr(13)+Chr(10)
//[ \margl2520\margr2520\margt1440\margb1440]+Chr(13)+Chr(10)
//[ \deftab720\vertalc\fs24]+Chr(13)+Chr(10)+;
nHandle := fCreate( cFile )
fWrite( nHandle, cBof, Len( cBof ))
return nHandle

//----------------------------------------------------------
// Proposito :
// Fecha arquivo RTF e escreve marcador final
// Parametros:
// Nada
// Retorna :
// nil
//----------------------------------------------------------
function rtfClose( nHandle )
local cEof := "}"
fWrite( nHandle, cEof, Len( cEof ))
fClose( nHandle )
return nil

//----------------------------------------------------------
// Proposito :
// Escreve uma string ou paragrafo
// Parametros:
// nHandle - Handle do archivo rtf
// nRow - Fila
// nCol - Columna
// cString - String a escribir
// Retorna :
// nil
//----------------------------------------------------------
function rtfWrite( nHandle, nFontNumber, nFontSyze, nFontColor, cStyle, cString )
cFontNumber := iif(nFontNumber=nil, "\f2" , "\f" +str(nFontNumber,1))
cFontSyze := iif(nFontSyze=nil , "\fs20", "\fs" +str(nFontSyze*2,2))
cFontColor := iif(nFontColor=nil , "\cf0" , "\cf" +str(nFontColor,1))
cString := cStyle+cFontNumber+cFontSyze+cFontColor+cString+"\plain\f2\fs10\cf0"
fWrite( nHandle, cString )
return nil

function rtfWriteLn( nHandle, nFontNumber, nFontSyze, nFontColor, cStyle, cString )
cFontNumber := iif(nFontNumber=nil, "\f2" , "\f" +str(nFontNumber,1))
cFontSyze := iif(nFontSyze=nil , "\fs20", "\fs" +str(nFontSyze*2,2))
cFontColor := iif(nFontColor=nil , "\cf0" , "\cf" +str(nFontColor,1))
//cStyle := iif("JUST"$upper(cStyle), "\qj" , "\qc" )
cString := " \par\plain"+cStyle+cFontNumber+cFontSyze+cFontColor+cString+"\plain\f2\fs10\cf0"
fWrite( nHandle, cString+Chr(13)+Chr(10) )
return nil

function rtfBullet( nHandle )
fWrite( nHandle, " \bullet" )
return nil

function rtfEject( nHandle )
fWrite( nHandle, " \sect\sectd" )
return nil

function rtfCols( nHandle, nCols )
fWrite( nHandle, " \cols"+str(nCols,1) )
return nil

nfRTF - Gera arquivos para Word

17 Fev 2014 12:41

Para Rochinha ou algum outro colega que domine esse conhecimento:

Estou precisando gerar relatório já formatado para o Word 2007, com rodapé e Título com negrito, etc...

Essas dicas de impressão no Word funcionam para Harbour ou xharbour ?

nfRTF - Gera arquivos para Word

17 Fev 2014 20:55

Amiguinho,

A série de exemplos nfRTF, nfXML, nfPDF e nfXLS foram feitas originariamente em preto-e-branco, ou seja, em Clipper puro, portanto sem frescuras. Podendo ser adaptada para Harbour ou xHarbour sem problemas.
Postar uma resposta