Jump to content
Fivewin Brasil

OPRN SOMENTE A4


MARSAN

Recommended Posts

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

.

.

.

Link to comment
Share on other sites

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...

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...