Win32prn para Iniciantes

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

Moderador: Moderadores

Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Win32prn para Iniciantes

Mensagem por Hasse »

Boa noite colegas.

Hoje recebi um e-mail com remetente não identificado, que faz a pergunta abaixo:
Boa Tarde,
Gostaria de saber se ha como criar um formulário usando vários BOX, para depois colocar as descrições, tenho tentado mas os box na hora da impressão, ficam se sobrepondo.
Resposta:

TODOS os BOX devem ser criados ANTES do seu preenchimento. Este é o único requisito.
Não importa quando você vai inserir o texto.
Lembrando que os BOX não são transparentes. Então um texto existente que sobreposto com o BOX fica invisível.

Numa impressão crio TODOS os BOX de uma só batelada, e só depois passo a preencher com textos.
Como exemplo, fiz a template dos BOX do boleto da CEF.
Depois passo ao seu preenchimento. E fica muito bem, e bem acabado.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Ezequiel Moura
Usuário Nível 1
Usuário Nível 1
Mensagens: 3
Registrado em: 09 Nov 2017 06:57
Localização: SAO PAULO

Win32prn para Iniciantes

Mensagem por Ezequiel Moura »

Pessoal , boa tarde , aproveitando o assunto , preciso de uma ajuda . Crio meus relatórios usando o win32prn , porêm quando estou logado pelo TS do windows server ( no caso 2003 ) , ele dá erro do create(), diz não conseguir criar a impressão , porem se crio o PDF ( no meu caso uso o freepdf ) , mando imprimir por ele e vai . Tem alguma dica do que possa fazer pra ir direto ?

A impressora está instalada na maquina local e entra como default quando logo pela Conexão da Area Remota. Funciona normalmente pra qual impressão fora do programa .


Desde já agradeço.


Ezequiel
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Win32prn para Iniciantes

Mensagem por Hasse »

Boa tarde Ezequiel.

Lembre que quando você está em rede via TS, você está vendo a tela do servidor. O Aplicativo está rodando no servidor.
Então você terá que ter a impressora no servidor, ou então, instalar um driver semelhante ao "PDFCreator" ou "doPDF" .
Imprimir o relatório em PDF no servidor e importar o arquivo PDF gerado, do servidor para o computador local.

Há ainda uma forma de imprimir localmente, mas neste detalhe não sei te orientar.
Acho que um entendido em redes poderia te auxiliar.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
fogueira
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 02 Dez 2021 17:14
Localização: Portugal

Win32prn para Iniciantes

Mensagem por fogueira »

Boa tarde

Preciso de uma ajuda.

Usando a seguinte situação oprn:textout("OLA SOU UM TESTE")

numa impressora laser ou numa impressora pdf (microsoft print to pdf ou adobe ) não obtenho exactamente as mesmas posições.

No Pdf começa mais à esquerda e também mais acima.

Deduzo que seja das margens que estejam associadas a cada tipo de impressora.

Como posso resolver esta diferença de forma a ter exactamente a mesma posição pois preciso de encaixar o texto dentro de uma box independentemente da impressora escolhida.

Código: Selecionar todos

 OPRN:BOX(150,250,1660,550,100,100)
   oprn:newLine()
   oprn:newLine()
   oprn:newLine()
   oprn:newLine()
   oprn:setFont('COURIER',11,0)
   oprn:setprc(oprn:prow(),5) 
   oprn:textout(wNlinha) 
Desde já obrigado
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Win32prn para Iniciantes

Mensagem por Hasse »

Boa noite.
Eu nunca usei com impressora laser, portanto não posso te ajudar nesta situação.
Certamente há pequenas diferenças que notei entre impressora jato de tinta e PDF, mas são mínimas.
Nunca tive qualquer reclamação.
E estas diferenças não me incomodam e nem aos meus clientes (e alguns são bem chatos).
Sds.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
carlaoonline
Usuário Nível 3
Usuário Nível 3
Mensagens: 190
Registrado em: 24 Ago 2014 22:38
Localização: Porto Alegre-RS

Win32prn para Iniciantes

Mensagem por carlaoonline »

Bom dia!
fogueira escreveu:Como posso resolver esta diferença de forma a ter exactamente a mesma posição pois preciso de encaixar o texto dentro de uma box independentemente da impressora escolhida.

Uma sugestão seria ao invés de mandar imprimir com o Win32prn seria você criar um arquivo PDF com o conteúdo a ser impresso, dessa forma o usuário teria a opção de visualizar o documento gerado direto no aplicativo padrão para PDF da máquina OU se preferir pode mandar imprimir direto fazendo o Harbour enviar o comando certo para o aplicativo leitor de PDF imprimir sem visualizar (imprimir direto).

Gerar PDF, para quem não conhece ainda, parece complicado mas na realidade é bem simples depois que se familiariza com os comandos e resultados.

Aqui no fórum tem vários post a respeito.

Segue um deles: viewtopic.php?f=4&t=25918#p152128
fogueira
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 02 Dez 2021 17:14
Localização: Portugal

Win32prn para Iniciantes

Mensagem por fogueira »

Obrigado CARLAONLINE

Vou dar uma vista de olhos

Entretanto, caso seja útil, arranjei aqui uma maneira uma vez que o problema estava na diferença entre o textout() e o Box() pois a Box mantinha as coordenadas dos pixeis.

Uma vez que oprn:leftmargin e topmargin retorna as areas não usadas na impressora escolhida

99 na laser em ambos os casos

e 0 no microsoft to pdf

ajusto as coordenadas da box retirando 99 e a caixa acompanha o texto
Responder