MARSAN Posted November 18, 2015 Report Share Posted November 18, 2015 Ajuda com MP-4200 TH só imprime em papel A4 OPRN:setportrait() OPRN:setpage(9) IF (((indpe->nitepe*2)+200)*34)>OPRN:nvertres() OPRN:setpage(256) OPRN:SETSIZE(800,((indpe->nitepe*2)+70)*34) ENDIF avanca:=OPRN:nvertres()/66 // altura da linha usada para avanço de linha a cada linha impressa coluna:=OPRN:nhorzres()/80 // largura da coluna para avanço de colunas if avanca>30 avanca:=34 // altura padrão de linhas endif m_linw=M_EMPR oprn:Say(linhafw,1*largura,m_linw,OFNT3) linhafw:=linhafw+avanca*1 DO WHILE .NOT. EOF() .... ENDDO oPrn:EndPAGE() EndPrint Ronaldbuch 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 19, 2015 Report Share Posted November 19, 2015 Você quer deixar sempre em A4, é isso? oPrn:SetPage(9) // A4 oPrn:SetPortrait() //Vertical Quote Link to comment Share on other sites More sharing options...
MARSAN Posted November 19, 2015 Author Report Share Posted November 19, 2015 BOM DIA AMIGOS, VOU TENTAR ME EXPRESSAR MELHOR. Primeiramente obrigado pela atencao amigo kapi, utilizo esta rotina abaixo para impressao de cupom em uma imp. bematech 4200 nao fiscal, porem o cupom quando atinge o tamanho de de uma folha a4 ela corta com a guilhotina e nao imprime o restante da nota. ou seja uma nota com muitos itens nao imprime na totalidade. OPRN:setportrait() OPRN:setpage(9) IF (((indpe->nitepe*2)+200)*34)>OPRN:nvertres() OPRN:setpage(256) OPRN:SETSIZE(800,((indpe->nitepe*2)+70)*34) ENDIF avanca:=OPRN:nvertres()/66 // altura da linha usada para avanço de linha a cada linha impressa coluna:=OPRN:nhorzres()/80 // largura da coluna para avanço de colunas if avanca>30 avanca:=34 // altura padrão de linhas endif m_linw=M_EMPR oprn:Say(linhafw,1*largura,m_linw,OFNT3) linhafw:=linhafw+avanca*1 DO WHILE .NOT. EOF() .... ENDDO oPrn:EndPAGE() EndPrint Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 19, 2015 Report Share Posted November 19, 2015 se a impressora é não fiscal, o melhor, é usar a TDOSPRN.PRG com PRINTFILERAW(). Quote Link to comment Share on other sites More sharing options...
mkyx Posted November 20, 2015 Report Share Posted November 20, 2015 Essa função: oPrn:setpage(256) é para configurar o tamanho de forma personalizada depois disso, vc pode definir o altura e largura de sua página: oPrn:setsize(largura,altura) a largura eu uso 800, que ficou legal a altura, vc precisa calcular, pois varia de um cupom para outro para isso, vc precisa da quantidade de produtos que serão impressos, quantidade de linha que serão usadas para montar o cabeçalho com o logotipo e tudo, quantidade de linhas que serão gastos para montar o rodapé do cupom, incluindo formas de pagamento, área de mensagem, propaganda etc. exemplo: qt_prod:=100 (quant. de produtos a ser impresso) quantidade de linhas usadas no cabeçalho, região que fica acima, antes da lista de produtos --> qt_linha_cabec:=10 quantidade de linhas usadas no rodapé, incluindo tudo que vai nele --> qt_linha_rodapé:=30 depois disso, vê qual é a altura da letra que será usado, nos comandos de impressão, eu uso o valor fixo 34 (altura padrão) com isso em mão, temos a definição abaixo, para a altura da página, suficiente para imprimir os 100 itens do pedido. oPrn:setsize(800,(qt_prod*34)+(qt_linha_cabec*34)+(qt_linha_rodape*34)) Pronto Espero te ajudado. Pompeo Guaratinguetá - SP Quote Link to comment Share on other sites More sharing options...
Theotokos Posted November 20, 2015 Report Share Posted November 20, 2015 FAz um teste, e verifica se a sua rotina esta executando o "IF" OPRN:setportrait() OPRN:setpage(9) IF (((indpe->nitepe*2)+200)*34)>OPRN:nvertres()MsgInfo( "ENTROU AQUI" ) OPRN:setpage(256) OPRN:SETSIZE(800,((indpe->nitepe*2)+70)*34) ENDIF avanca:=OPRN:nvertres()/66 // altura da linha usada para avanço de linha a cada linha impressa coluna:=OPRN:nhorzres()/80 // largura da coluna para avanço de colunas if avanca>30 avanca:=34 // altura padrão de linhas endif m_linw=M_EMPR oprn:Say(linhafw,1*largura,m_linw,OFNT3) linhafw:=linhafw+avanca*1 DO WHILE .NOT. EOF() .... ENDDO oPrn:EndPAGE() EndPrint Quote Link to comment Share on other sites More sharing options...
mkyx Posted November 20, 2015 Report Share Posted November 20, 2015 O comando IF é para verificar se vai permanecer a configuração A4, oPrn:setpage(9), ou se vai precisar fazer uma configuração de página personalizada oPrn:setpage(256) Portanto, ** observação: oPrn:nVertRes ---> devolve a altura da página em pontos . . . . IF ((qt_prod*34)+(qt_linha_cabec*34)+(qt_linha_rodapé*34))>oPrn:nVertres ** definir configuração de página personalizado largura (800) e altura através da fórmula acima oPrn:setpage(256) oPrn:setsize(800,(qt_prod*34)+(qt_linha_cabec*34)+(qt_linha_rodape*34)) ENDIF . . . Quote Link to comment Share on other sites More sharing options...
Theotokos Posted November 20, 2015 Report Share Posted November 20, 2015 Então!!! Eu Entendi isso!!! Mas por exemplo, eu utilizo esta mesma forma para imprimir... só que eu não configura com A4 e nem coloco esta condição de IF... faço direto... OPRN:setpage(256)oPrn:setsize(800,(qt_prod*34)+(qt_linha_cabec*34)+(qt_linha_rodape*34)) Assim se tiver apenas dois itens... imprime um tamanho e se tiver 100 itens imprime outro tamanho... Quote Link to comment Share on other sites More sharing options...
mkyx Posted November 20, 2015 Report Share Posted November 20, 2015 Eu acredito que vá funcionar, normalmente, do jeito que vc faz, sem problema. Theotokos 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.