Jump to content
Fivewin Brasil

qual melhor font pra imprimir com print..help


scom

Recommended Posts

ola amigos

estou fazendo meus relatórios aagora e gostaria de saber qual font e tamanho posso usar para ficar o mais pareceido com a letra chr(15) para usar 133 caracteres na linha. estou usando o PRINT

alguem pode me dar uma dica?

Robson

Link to comment
Share on other sites

ola amigos

estou fazendo meus relatórios aagora e gostaria de saber qual font e tamanho posso usar para ficar o mais pareceido com a letra chr(15) para usar 133 caracteres na linha. estou usando o PRINT

alguem pode me dar uma dica?

Robson

Link to comment
Share on other sites

Caro Robson,

Se está migrando e só agora irá começar a fazer os relatórios te digo que chegou finalmente na pior parte do processo.

Sofri bastante até compreender e decidir qual a melhor forma de definir como meu sistema que antes era em clipper iria imprimir usando xHarbour/FiveWin.

Inicialmente sua questão é válida porém um pouco confusa. Quando declara que usa "PRINT" entendo que usa o comando "?" do clipper como abaixo:

?"teste de impressão"

Outra questão confusa é: Se agora pode usar uma quantidade maior de fontes e estilos, por qual motivo pretende utilizar uma fonte que assemelha-se ao antigo método de condensado das impressoras matriciais "CHR(15)" ?

Bem, entenda. Se não vai explorar os atuais recursos de impressão disponíveis então basicamente deve manter seus códigos em arquivos PRG´s que não contenham no início a declaração #include "fivewin.ch" e seu programa irá funcionar exatamente como antes quando era compilado com clipper. Simples assim.

Mas se pretende utilizar recursos de impressão parecidos com os programas do windows então sua forma de programar irá mudar radicalmente. Produzindo um relatório, mesmo com o uso de uma fonte parecida com o CHR(15), ao imprimir numa impressora matricial a impressão será lenta como se estivesse imprimindo uma imagem. Não será aquela impressão rápida que conhecemos das impressoras matriciais enviadas por programas DOS. Em impressoras laser ou jato de tinta não haverá problemas, mas em matriciais a impressão utilizando fontes como a Courier New ou Lucida console irá destruir completamente a reputação de seus sistemas.

Minhas recomendações:

Mantenha seus PRG´s que produzem impressão sem nenhuma alteração e a forma de utilização será idêntica ao seu antigo sistema em clipper. Para isto basta colocar as rotinas de impressão em PRG´s que não contenham #include "fivewin.ch". Você não poderá usar recursos como o preview, impressão de bitmaps, gráficos, gerenciador de impressão do windows e outros.

Se deseja utilizar recursos de impressão melhores você tem duas saídas:

1ª Fazer todos relatórios usando a classe TPrinter do Fivewin e informar aos seus clientes que seu sistema recomenda o uso somente de impressoras laser ou jato de tinta.

2ª Permitir que o seu cliente escolha que tipo de impressão deseja usar. Os dois tipos são EMF e RAW. A impressão EMF é a típica impressão dos programas windows e a impressão RAW é a impressão típica dos programas DOS. Desta forma você teria dois códigos para gerar o relatório. Caso o cliente escolha EMF você pode usar fontes, imagens, gráficos, linhas, preview e todo o resto porém este método é indicado somente para impressoras laser e jato de tinha. Caso seu cliente escolha EMF para uma impressora matricial aí é uma decisão exclusivamente dele e a lenta impressão será uma consequência desta escolha. Diferentemente do modo EMF, se o cliente escolher o modo RAW você deverá escrever um código fonte exatamente como fazia antigamente no clipper, porém, você deve imprimir o relatório para um arquivo texto temporário o que é facilmente realizado com o comando SET PRINTER TO arquivo.prn e em seguida utilizar a função do xharbour PRINTFILERAW( "Epson lx-300", "arquivo.prn") para enviar para a impressora. A função PRINTFILERAW apesar de usar o gerenciador de impressão do windows para enviar o documento faz com que a impressora se comporte como uma impressora matricial recebendo comandos como CHR(15), CHR(18) e os demais conhecidos. Assim sendo, você deve também permitir que o seu cliente após escolher o modo RAW escolha também qual padrão de códigos será utilizado, EPSON ou HP. Isto é necessário pois se a impressora for padrão EPSON o comando para ligar o condensado é CHR(15) mas se for padrão HP é CHR(27)+'(s16.67H'

Note que usando a função PRINTFILERAW você deve especificar exatamente o nome da impressora que está instalada no windows seja ela uma impressora local, rede ou remota.

Sempre tento expor esta questão da forma mais simples possível, mas percebo que é impossível e somente com demonstração prática a simplicidade do que escrevi acima pode ser absorvida.

Penso, inclusive, em dispor de tempo para desenvolver um tutorial esclarecedor sobre esta questão e encerrar definitivamente esta questão que fez vários de nós buscar meios e recursos que para mim são apenas "quebra galhos" afim de sanar dúvidas relacionadas a impressão que aparentemente foram desprezadas e ignoradas pelos desenvolvedores do FiveWin forçando o uso de soluções de terceiros como DOSPRN, DOSUTIL, CRISTAL REPORT, FAST REPORT e outros.

Encerrando meu longo argumento, afirmo-te. Não há necessidade de utilização de nenhum recurso extra como os acima citados pois o FiveWin e igualmente o xHarbour oferecem recursos de impressão satisfatórios. Utilizo estes meios e garanto que nada mais é necessário além do conhecimento sobre estas técnicas e coloco-me a disposição para ajudá-lo neste desafio.

Adicione em seu MSN o contato shark_programador@hotmail.com

SharkAbraços!

Shark - FWH 8.09 / xharbour 1.1.0 / xMate 1.15 / Resource WorkShop

figura21fd4.jpg

http://www.superdownloads.com.br/download/41/programa-de-auto-escola-automax/

Link to comment
Share on other sites

Shark >> Desde o inicio uso os mesmo comando do Clipper puro para impressão

@Prow()+1,2 Say "Imprimindo"

até porque aqui na empresa os relatórios são gigantescos. para cada empresa uma média de 90 a 150 paginas todo fim de mês para 49 empresas, fora os que são impressos no decorrer do periodo. entao tem que ser em matriciais mesmo senão o chefe ia pra roça icon_smile_big.gif e ia me levar junto icon_smile_big.gif

Até ai sem problemas, mas a coisa pega na hora de mandar isso para uma Laser/Matricial USB. baseado nisso sempre faço dois prgs de relatório.., dependendo da impressora escolhida no PrinterSet o programa checa a resolução da impressora e te joga para o prg correspondente. Sendo assim a sua dica de somente os mesmos relatórios do clipper é falho. ou então me de o caminho das pedras de como imprimir usando o mesmo codigo do clipper em ambas impressoras.

Depois de tanto bater a cabeça na quina da mesa to chegando chegando a um acordo com ;


//-> para Matricial

DEFINE FONT oFont NAME "Courier New" SIZE 0, -8 OF oPrn

DEFINE FONT oFont2 NAME "Courier New" SIZE 0, -12 BOLD OF oPrn

//- Como Imprimir em Centimetros sem errar e em qualquer Impressora

ResLinha := oPrn:nVertRes() / 40

ResLinha := oPrn:nLogPixely() / 2.54

ResColuna := oPrn:nLogPixelx() / 2.54

id=code>id=code>

Desse jeito imprimo em qq impressora usando apenas a classe tPrinter nativa do FiveWim.. e Te "agarantiu" que a impressão não fica tão lenta de matar de tanto esperar em matriciais icon_smile_big.gif ainda to apanhando um pouco pra fazer quadros mas um dia chego lá..

Tem a classe tImprimi do Villian que vem com os fontes e é muito legal mesmo.. dominando a tImprimi a gente só não faz chover.... por enquanto. icon_smile_big.gif

Abraços..

Luiz Arruda-Corumba(MS)

ico.corumba@gmail.com

FiveWin Desde 2004id=blue>

[x]Harbour

xDev

WS

Não Abandone seu tópico

Retorne avisando se a dica funcionouid=red>

Link to comment
Share on other sites

Shark

Discordo das suas colocacoes, eu tenho a impressao em RAW e EMF sem problema algum.

O que eu fiz foi criar uma classe de impressao herdando TdosPrn e TPRINT.

A minha classe so faz uma coisa muito simples identifica se a impressora é matricial ou jato de tinta ou laser e direciona para Tprint ou Tdosprn.

Meu sistema não perde em nada em velocidade de impressão para sistemas em dos.

Ela faz mais uma coisinha, eu posso usar recursos graficos em um relatorio que ela converte para texto e substitui na impressão na hora de mandar para impressoras matriciais.

Veja abaixo um exemplo de como ficou simples de montar um relatorio:


Local oImpressao

oImpressao := TImpressao():New( "Relatório de Planos de Pagamentos", oRelCad05 )

oImpressao:Executa_Sql( "SELECT * FROM " + Sql_NameTable( "D002" ) + " WHERE codigo_pe >= " + ANY2SQL( Str( nCodigo_1, 3 ) ) + " AND codigo_pe <= " + ANY2SQL( Str( nCodigo_2, 3 ) ) + " ORDER BY codigo_pe" )

If oImpressao:Imprime()

oImpressao:nPrnlin := 65

oImpressao:cPrnlinha := Replicate( "-", 143 )

oImpressao:Inicia_Relatorio( 65, 143 )

Begin Sequence

RELATORIO->( dbGotop() )

While ! RELATORIO->( Eof() )

If oImpressao:Cancela_Relatorio()

Break

EndIf

If oImpressao:Cabecalho( .t.,, .t. )

oImpressao:PrnSay( oImpressao:nPrnLin, 001, "Cod Descricao Reduzido Forma Parc. Tipo Tipo de Prazo Preco Desc. Vlr. Minimo Documento Altera Baixa" )

oImpressao:nPrnLin += 1

oImpressao:PrnSay( oImpressao:nPrnLin, 001, oImpressao:cPrnlinha )

oImpressao:nPrnLin += 1

EndIf

oImpressao:PrnSay( oImpressao:nPrnLin, 01, RELATORIO->codigo_pe, "@R 999" )

oImpressao:PrnSay( oImpressao:nPrnLin, 05, RELATORIO->desc_pe )

oImpressao:PrnSay( oImpressao:nPrnLin, 37, RELATORIO->nome_pe )

oImpressao:PrnSay( oImpressao:nPrnLin, 49, RELATORIO->avista_pe )

oImpressao:PrnSay( oImpressao:nPrnLin, 59, RELATORIO->nr_parc_pe, "999" )

oImpressao:PrnSay( oImpressao:nPrnLin, 63, RELATORIO->dia_mes_pe )

oImpressao:PrnSay( oImpressao:nPrnLin, 69, RELATORIO->prazo_pe )

oImpressao:PrnSay( oImpressao:nPrnLin, 92, RELATORIO->preco_pe )

oImpressao:PrnSay( oImpressao:nPrnLin, 101, RELATORIO->per_des_pe, "@E 99.99%" )

oImpressao:PrnSay( oImpressao:nPrnLin, 109, RELATORIO->vlr_min_pe, "@E 999,999.99" )

oImpressao:PrnSay( oImpressao:nPrnLin, 120, RELATORIO->mod_doc_pe )

oImpressao:PrnSay( oImpressao:nPrnLin, 134, RELATORIO->grdup_pe )

oImpressao:PrnSay( oImpressao:nPrnLin, 140, RELATORIO->bx_auto_pe )

oImpressao:nPrnLin += 1

RELATORIO->( dbSkip() )

End

End sequence

oImpressao:Finaliza_Relatorio()

Grava_Historico( "Imprimiu um relatorio de Planos de Pagamento", "Cadastro de Planos de Pagamento" )

EndIf

Release All

id=code>id=code>

FW 2.3C/CLIPPER 5.X/XHARBOUR/C/C++/JAVA/DELPHI/XMATE/MD/MYSQL/FIREBIRD/INTERBASE

Link to comment
Share on other sites

PESSOAL, ACHEI NA INTERNET QUE PARA IMPRIMIR RAPIDO EM IMPRESSORAS MATRICIAIS É SOMENTE USAR O FONT Draft 17cpi, NO FONTES DO WINDOWS NÃO TEM MAS É SO COLOCAR QUE FUNCIONAR E REALMENTE FUNCIONOU PARA MIM. FIZ ASSIM:

DEFINE FONT oFontPrn NAME "Draft 17cpi" SIZE 0, -07 OF oPrn

DEFINE FONT oFontPrnBold NAME "Draft 17cpi" SIZE 0, -07 BOLD OF oPrn

DEFINE FONT oFontPrnMedia NAME "Draft 17cpi" SIZE 0, -12 OF oPrn

DEFINE FONT oFontMediaBold NAME "Draft 17cpi" SIZE 0, -12 BOLD OF oPrn

DEFINE FONT oFontPrnGrande NAME "Draft 17cpi" SIZE 0, -14 OF oPrn

e to usando o PRINT

veja como fico.

2u9onxk.jpg

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...