Não deixar formulário contínuo ejetar para próxima folha

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Não deixar formulário contínuo ejetar para próxima folha

Mensagem por porter »

Olá pessoal,
Ao imprimir em um arquivo texto, que cabe na metade de um formulário continuo, preciso que a folha ejete até a metade do formulário, gostaria de saber se alguém já teve que imprimir um orçamento dessa forma.
O formulário, é aquele que se destaca no meio, é o formulário razão, quando imprimo, está ejetando para a próxima folha, talvez a solução seja algum comando no arquivo para impedir que a folha ejete até a próxima folha.

Estou imprimindo em um arquivo texto em uma impressora matricial LX-300, pela USB,

Obrigado.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Não deixar formulário contínuo ejetar para próxima folha

Mensagem por Toledo »

Você já tentou incluir um comando para configurar o tamanho da página de impressão?

Por exemplo, no início do relatório, incluir este comando:

Código: Selecionar todos

@ prow(),pcol() SAY CHR(27)+'C'+CHR(33) 
No comando acima a página vai ter 33 linhas, que é metade de um formulário de 66 linhas.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Não deixar formulário contínuo ejetar para próxima folha

Mensagem por porter »

Olá Toledo, obrigado por sua atenção, quando imprimo o arquivo texto por exemplo pelo bloco de notas, está saltando para próxima página.
No arquivo texto que estou gerando, tentei esse comando no começo do relatório, estou imprimindo pela matricial lx-300 pela USB.

@ prow(),pcol() SAY CHR(27)+'C'+CHR(33)
E também no final do relatório
@ prow(),pcol() SAY chr(27)+'C'+chr(1)
eject
@ prow(),pcol() SAY chr(27)+'C'+'B'

Código: Selecionar todos

SET DEVICE TO PRINT
set print to c:\vendas\teste.txt
set print on 
setprc(0,0)
@ prow()+1, pcol() SAY "TESTE TESTE TESTE TESTE"
@ prow()+1, pcol() SAY "TESTE TESTE TESTE TESTE"
@ prow()+1, pcol() SAY "TESTE TESTE TESTE TESTE"
@ prow()+1,pcol() SAY chr(27)+'C'+chr(1)
eject
@ prow()+1,pcol() SAY chr(27)+'C'+'B'
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Não deixar formulário contínuo ejetar para próxima folha

Mensagem por Toledo »

Mas porque você usa o Bloco de Notas para imprimir o relatório?

Acho que por usar o Bloco de Notas, a impressora não reconhece estes comandos de configuração da impressora, por isto que o eject salta a página como se ele tivesse 66 linhas.

Se você está compilando com o Harbour, seria interessante ver:

Clique nestas tag para ver os tópicos que discute sobre estas funções: GetPrinters PrintFileRaw GetDefaultPrinter

GetPrinters = cria uma array (matriz) com as impressoras instaladas no Windows

PrintFileRaw = imprime um arquivo TXT em qualquer impressora (que aceita impressão em modo Raw) instalada no Windows (não importa se a porta da impressora é LPT, USB, COM ou rede)

GetDefaultPrinter = retorna o nome da impressora Padrão no Windows

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Não deixar formulário contínuo ejetar para próxima folha

Mensagem por Kapiaba »

Como você está chamando o Bloco de notas?

Gere o Araquivo .TXT e chame assim:

Código: Selecionar todos


   cFile := "CARTA.TXT"

   WinExec( "Notepad.exe /a/p" + cFile )
   // Para Imprimir direto na USB usando o Bloco de Notas como impressora
   WinExec( "Notepad.exe /p" + cFile )
Abs.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Não deixar formulário contínuo ejetar para próxima folha

Mensagem por Jairo Maia »

Olá porter,

Como você está imprimindo um formulário aparentemente simples, e em impressora ESC/POS (Raw), veja também se esse exemplo ajuda:

Para compilar use: HBMK2 Exemplo.Prg hbwin.hbc xhb.hbc

Código: Selecionar todos

Function Main()
 Local nLines:=33, cPrinter, cFile, nLinha := 0, nColuna := 0
 
 /*
   Se houver pasta em nome do arquivo, ela deve existir ou dá erro
 */
 cFile := "C:\vendas\Teste.Txt"
 
 Set Device To Printer    // Seta saída para impressora
 
 Set Printer To ( cFile )  // arquivo a gerar (entre parenteses)
 
 @ ++nLinha, nColuna Say "TESTE TESTE TESTE TESTE"
 @ ++nLinha, nColuna Say "TESTE TESTE TESTE TESTE"
 @ ++nLinha, nColuna Say "TESTE TESTE TESTE TESTE"

 /*
   Posiciona o cabeçote na última linha do formulário se nescessário
 */
 If nLinha < nLines
  @ nLines, nColuna Say ""
 EndIf
 
 Set Printer To          // fecha o arquivo gerado (nescessário)
 Set Device To Screen    // Seta saída para vídeo
 
 /*
  Você pode usar alguma função para escolher a impressora, mas
  aqui será enviado para a impressora configurada como padrão.
  Coloque a EPSON LX-300 como padrão, ou coloque o nome da impressora
  exatamente como aparece na lista de impressoras do Windows
 */
 
 cPrinter := GetDefaultPrinter()  // pega a impressora padrão
 
 /*
   Imprime o arquivo em impressora compatível com o modo RAW
 */
 Win_PrintFileRaw( cPrinter, cFile, "Teste de impressao" )

Return Nil
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Responder