Página 1 de 1
Impressão em modo RASCUNHO
Enviado: 26 Mai 2007 18:06
por Hasse
Boa noite galera.
Tenho um sistema em xHarbour, com impressão via Win32prn.
O cliente quer impressão em modo RASCUNHO.
Já configurei a impressoa para o modo rascunho, porém parece que o win32prn passa por cima desta configuração e continua a imprimir em modo QUALIDADE CARTA. Já tentei com HP e com EPSON e o resultado é sempre o mesmo: QUALIDADE CARTA.
Eu já procurei no Fórum porém nada encontrei.
Há alguma Função no xHarbour ou SET que possa ser usado ?
Enviado: 26 Mai 2007 18:41
por MARCELOG
Já que é rascunho, coloque o conteúdo em arquivo texto e use a função printfileraw().
Veja oas parâmetros nos testes do xharbour ou mesmo nos sources.
MarceloG.
Enviado: 26 Mai 2007 20:14
por sygecom
Buenas...
Hasse, de uma olhada no link abaixo....um colega mostra como fazer isso..com a
SetPrintQuality()
https://pctoledo.org/forum/viewto ... t=win32prn
Abraços
Leonardo Machado
Enviado: 26 Mai 2007 22:28
por Hasse
Caro sygecom.
Gerei 4 executáveis com valores diferentes e na segunda vou testar no equipamento do cliente.
Eu volto ao assunto.
Obrigado.
Enviado: 26 Mai 2007 22:36
por sygecom
Tche, pra finalizar o assunto e resolver de vez.....vc pode usar uma GUI para mandar imprimir ex: HWGUI.....ai o usuario pode formatar na HORA de mandar imprimir...
Abraços
Leonardo Machado
Enviado: 27 Mai 2007 12:25
por Hasse
Bom dia Leonardo.
Obrigado pela sugestão. Vamos por partes:
Ainda não uso nenhuma GUI.
Quais são os passos necessários para tal ?
O processo pode ser automatizado, de tal forma que o cliente não necessite fazer a opção na hora de imprimir. É necessito de rapidez, pois são centenas de impressões diárias.
A HWGUI aceita o win32prn ?
Enviado: 29 Mai 2007 21:03
por Hasse
Colega Sigecom.
Por incrível que pareça, a Função SetPrintQuality() não surte os mesmos efeitos em TODAS as impressoras, e mesmo ainda, com resultados desiguais em impressoras de marcas diferentes.
Numa HP 3920 funciona beleza.
Numa Epson 660 não produz efeitos lineares, ou seja, NÃO imprime em modo RASCUNHO, imprime normalmente no modo NORMAL, porém o comando funciona com o modo QUALIDADE FOTOGRÁFICA.
Haveria alguma explicação lógica para este comportamento ?
Enviado: 01 Jun 2007 15:15
por sygecom
Buenas...Hasse...desculpa..mas não tinha visto seu post...
Ainda não uso nenhuma GUI.
Quais são os passos necessários para tal ?
Tche, eu toh usando a HWGUI, mas vc pode dar uma pesquisada em varias...no caso da HWGUI vc pode baixar o CVS da HWGUI no link abaixo:
http://sourceforge.net/projects/hwgui/
O processo pode ser automatizado, de tal forma que o cliente não necessite fazer a opção na hora de imprimir. É necessito de rapidez, pois são centenas de impressões diárias.
Tenho um exmplo que posso te mandar do uso da HWGUI + VL +GTWVT....isso tudo pode ser migrando do modo console para a HWGUI aos poucos...
A HWGUI aceita o win32prn ?
Sim Aceita...
Colega Sigecom.
Por incrível que pareça, a Função SetPrintQuality() não surte os mesmos efeitos em TODAS as impressoras, e mesmo ainda, com resultados desiguais em impressoras de marcas diferentes.
Numa HP 3920 funciona beleza.
Numa Epson 660 não produz efeitos lineares, ou seja, NÃO imprime em modo RASCUNHO, imprime normalmente no modo NORMAL, porém o comando funciona com o modo QUALIDADE FOTOGRÁFICA.
Haveria alguma explicação lógica para este comportamento ?
Desculpa......mas não sei lhe dizer pq acontece isso...assim que eu souber algo posto aqui.....e como resolveu ? ou não resolveu ?
Abraços
Leonardo Machado
Enviado: 03 Jun 2007 00:48
por sygecom
Hasse....vc tentou usar a função SetPrintQuality(-1)...preste atenção que tem um -1....jah tentou usar nessa impressora que não funciona o modo economico ?
Abraços
Leonardo Machado
Enviado: 06 Jun 2007 20:36
por Hasse
Colega Sygecom.
Sim, tentei com vários valores, negativos (-1) como também positivos.
Os resultados foram os seguintes:
1)-Nas impressoras Laser da HP o comando NÃO surtiu qualquer efeito.
2)-Nas impressoras Epson, modelos 660 e 890 também Não surtiu qualquer efeito.
3)-Numa impressoras HP modelo 3920 houve diferenças:
a)-Com valores POSITOVOS de 1 a 4 NÃO houve qualquer alteração.
b)-Com valores NEGATIVOS:
b1)-Com valor (-4) a impressão é de qualidade superior e muito lenta.
b2)-Com valor (-3) a impressão é de muito boa qualidade, porém mais rápida.
b3)-Com valor (-2) e (-1) a impressão se faz em qualidade rascunho e muito rápida.
Por sorte o cliente que desejava impressão em modo rascunho é aquele que tem a impressora HP. Desta forma, enquanto não surgir outro cliente porém com outra marca de impressora, o problema está resolvido.
No entanto, é prudente continuarmos a pesquisa, pois de um momento para outro poderá aparecer outro cliente que este desejo.
Obrigado pela colaboração.
Enviado: 10 Jun 2007 17:07
por sygecom
Por sorte o cliente que desejava impressão em modo rascunho é aquele que tem a impressora HP. Desta forma, enquanto não surgir outro cliente porém com outra marca de impressora, o problema está resolvido.
Tche, como nunca podemos contar com a sorte..se vc tiver alguma novidade compartilha com nos...please....se eu achar algo posto aqui....
Agradeço desde Já.
Leonardo Machado
Enviado: 10 Jun 2007 23:27
por MARCELOG
...
local nResult
nResult := PrintFileRaw(cNomedaImpressora,cNomedoArquivo,cNomeSpool)
if nResult < 0
alert("Fiou!")
endif
Return
cNomedaImpressora tem que ser igual ao que está instalado.
Enviado: 13 Jun 2007 08:03
por Hasse
Bom dia Marcelog.
OK, você me convenceu a trabalhar em cima da tua sugestão.
O "cNomedaImpressora" é fácil já que a Classe Win32prn busca o nome da impressora padrão.
A primeira dificuldade é saber o nome do arquivo a ser impresso, já que a Classe Win32prn() não trabalha com arquivo gravado. Como você sugere proceder.
A segunda, onde busco o "cNomeSpool" ?
Enviado: 13 Jun 2007 09:06
por MARCELOG
O printfileraw() é uma função que usa as api´s do windows para imprimir um arquivo com baixa qualidade (rascunho).
Isso acelera o processo de impressão.
Não tem nada a ver com a win32prn que, como o windows, pinta aquilo que vai ser impresso numa área da memória e transfere, vamos dizer, ponto a ponto, essa imagem para a impressora.
Como o nome diz, PRINT FILE RAW, você deve jogar os dados a serem impressos num arquivo e depois enviá-lo para a impressora.
cNomeSpool é o nome que vai aparecer naquela "telinha" da impressora e é facultativo tal informação.
Nesse caso, como cNomeSpool, a função usa o nome do arquivo para o windows indicar isso na telinha da impressora.
Se você quer imagens e/ou utilizar a win32prn para imprimir rápido vai ter que definir uma fonte que use poucos pontos (pixels) para agilizar o processo.
A courrier new é bem rápida!
MarceloG
Ps:
Use getprinters() ou getdefaultprinter() para pegar corretamente o nome das impressoras instaladas ou o nome da impressora padrão.
Enviado: 13 Jun 2007 12:32
por Hasse
Bom dia Marcelog
Acredito que havará dificuldade para esta implantação.
De qualquer forma, se eu tiver alguma, eu posto aquí.
Valeu.
Obrigado.