Impressão em modo RASCUNHO

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

Impressão em modo RASCUNHO

Mensagem 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 ?
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)
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem 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.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem 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
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
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

Mensagem 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.
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
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem 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
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
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

Mensagem 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 ?
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)
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

Mensagem 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 ?
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
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem 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
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem 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
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
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

Mensagem 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.
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
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem 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
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

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

Mensagem 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" ?
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)
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

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

Mensagem 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.
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)
Responder