CONFIGURAR PAGINA PELO PRINTER

SARAGIOTTO 25/02/2010 20:00:48
#335396
Caros amigos,
como q eu faço para configurar pagina usando o comando PRINTER sendo q eu quero configurar para imprimir em meia pagina (razao)
metade de uma folha tamanho CARTA? (em impressora matricial naquelas folhas de formularios continuos, q sao picotadas na metade, e tem q parar na metade para estar pronto para imprimir a proxima venda)

MICROSCHEME 25/02/2010 20:18:58
#335398
Resposta escolhida

Olá.

Primeiro, vai ter que pelas preferências de impressão da impressora configurar tamanho e largura do formulário
e gravar com um nome, tipo form1/2página ou razão, como preferir e deixar esta preferência escolhida na impressora.

Pelo printer, terá que manipular as propriedades ScaleHeight e ScaleWidht como o exemplo abaixo:

na entrada do código para impressão:

OldScaleHeight = Printer.ScaleHeight [ô] guarda o valor atual da propriedade scaleheight
OldScaleWidht = Printer.ScaleWidth [ô] guar o valor atual da propriedade scalewidht
Printer.ScaleHeight = 7935 [ô] refaz a propriedade scaleheight em pixels
Printer.ScaleWidth = 4705 [ô] refaz a propriedade scalewhidt em pixels

Agora você codifica tua imressão:

Printer.Print . . .
Printer.Print . . .
. . .
. . .
Printer.Enddoc

Na saída da impressão volta as configurações das scalas:

Printer.ScaleHeight = OldScaldeHeight
Prnter.ScaleWidht = OldScaleWidht

Acho que é isso.

. . .


MICHAELL 20/07/2010 16:21:07
#347957

Muitos aqui, inclusive eu, ja tivemos a grande dificuldade com o objeto PRINTER.PRINT. Parece não existir uma maneira de configurar a impressora matricial para NÃO avançar a

folha demais no final da impressão, principalmente quando é utilizado folha de papel continua. No final da impressão, o papel avança exatamente o tamanho de uma folha A4. Então

voce troca o tipo de folha para CARTA e observa que não mudou absulutamente nada? sim, isso acontece.

Bem, existe sim uma solução, no qual encontrei na internet aos poucos e então montei um quebra cabeça.

1º - Antes de imprimir utilizando o objeto printer, voce deve primeiro escolher o tipo de escala = TWIPS.
Não adianta utilizar escala em centimetros, milimetros, polegadas, que não vai funcionar.
Exemplo: Printer.ScaleMode = vbTwips

2º - Voce deve definir o tamanho da folha nas propriedades width e height do objeto printer.
Exemplo: Printer.Width = 21.6 * 567 (multipliquei por 567, pois cada 567 twips equivale a 1cm)

3º - Voce deve criar no servidor de impressão do windows o tipo de formulário que voce deseja imprimir.
Para isso, faça o seguinte:
- Acesse painel de controle > impressoras
- Clique no menu arquivo > Propriedades do servidor
- Adicione um novo formulario e selecione nas propriedades da impressora
- Não se esqueça de clicar no botao Salvar Formulario.
- Existe limite minimo na altura, para que o formulario apareça nas propriedades da impressora. Dependendo do drive da impressora pode não aparecer se voce configurar

um papel for muito pequeno. Nesse caso deve-se tentar utiliza um outro drive.
- Se voce configurar um tamanho do papel menor que da impressão, a impressao ficará cortada

4º - Voce deve selecionar o formulario criado nas propriedades da impressora.
Para isso, faça o seguinte:
- Acesse painel de controle > impressoras
- Clique com o botao direto na impressora desejada > propriedades
- Acesse a guia Configuracoes do dispositivo e selecione o formulario criado
- Acesse a guia Geral > no botao Preferencia da impressao > guia Papel / Qualidade > no botao avançado e selecione o papel / formulario criado

5º - No final da impressão, antes de EndDoc, envie o comando de nova pagina. Dessa forma a impressora vai avançar até a proxima folha e ainda deixara um espaço para voce

destacar a folha. Quando voce mandar imprimir novamente, a impressora recolhe automaticamente o que deixou de espaçamento e começa a imprimir normalmente. Se voce nao informar

essa nova pagina, esse espaçamento não acontecerá. Exemplo: Printer.NewPage

Segue abaixo um exemplo:

Printer.ScaleMode = vbTwips
Printer.Width = 21.6 * 567 [ô] largura da folha
Printer.Height = 27.9 * 567 [ô] altura da folha
Printer.Print [Ô]Qualquer texto[Ô]
Printer.NewPage
Printer.EndDoc

Essa solução que postei, serve mais para aqueles que desejam imprimir em formulario continuo, pois deve-se definir o tamanho do papel.
Não consegui fazer por exemplo parar a impressão exatamente aonde termina a impressão, assim como funciona com o PRINT. Se alguem souber, poste ai pra nós.
Bem, espero ter ajudado e ajudar a muitos que terão essa mesma duvida.
Abraço
LIZANDER 20/07/2010 21:14:36
#347986
SaraGiotto...

Vc vai usar o Printer ou o Print???

A resposta vai nortear como iremos te ajudar.

O Printer utiliza o spooler do windows, então todo job fechado com Printer.EndDoc vai ser ejetado a página, de acordo com as configurações pré-definidas na própria impressora (configuração interna que a maioria das matriciais possuem).

Agora, se vc vai usar o Print...
O Print é uma impressão feita direto na porta da Impressora (LPTn), onde o spooler do Windows não tem controle (e nem enxerga). Nesse tipo de impressão, vc imprime linha por linha, utilizando o comando Print, portanto, vc deverá saber quantas linhas tem o seu formulário (ou metade dele, no caso do picotado). Nesse tipo de impressão, a folha não é ejetada e o carro da impressora para no último item impresso. Cabe a você forçar com um Print [Ô] [Ô] para cada linha que deseja avançar.
Por exemplo:
PrnFile = FreeFile
Open cArquiv For Output As PrnFile
Print #PrnFile, [Ô]Imprime isso[Ô]
Print #PrnFile, [Ô]Imprime aquilo[Ô]
Print #PrnFile, [Ô][Ô] // << Linha em branco

O tamanho do avanço de linha que a impressora dá, também é configurável na maioria das impressoras matriciais.

Espero ter ajudado.
MICHAELL 21/07/2010 09:08:30
#348007
para impressao em bobina, no qual voce deseja imprimir um recibo, comprovante.. o recomendado é usar PRINT mesmo...
mas agora para imprimir em um formulario, os dados dentro de campos, como por exemplo um recibo feito na grafica ou nota fiscal, eu acho melhor usar PRINTER pois voce pode controlar o espaçamento exato dos dados e conforme falei acima, pode soltar para a proxima folha sem problemas.



Tópico encerrado , respostas não são mais permitidas