Número de pixels de uma página

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

Moderador: Moderadores

DLZ
Usuário Nível 3
Usuário Nível 3
Mensagens: 184
Registrado em: 09 Jun 2008 10:09
Localização: Ibirubá - RS - Brasil

Número de pixels de uma página

Mensagem por DLZ »

Olá..
Como faço para definir o número de pixels ( Pos Y e Pos X) de uma página para impressão com Win32prn ?
o meu problema é com impressão de Bmp..
Eu imprimo em uma HP Laser, sai blz.. Ai imprimo em uma Olivetti Matricial, sai maior !!
o q pode ser isso ?
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

Re: Número de pixels de uma página

Mensagem por Hasse »

Olá DLZ.

Ocorre que o número de pixels da página impressa com matricial é bem menor que a mesma página impressa numa jato-de-tinta ou lazer, ou seja, cabem menos pixels numa página da matricial.

Pode também ocorrer entre impressoras jato-de-tinta de modelos ou marcas diferentes quando a densidade de pixels/cm2 ou pixels/pol2 não for igual.

Você as variáveis abaixo para determinar a densidade de pixels:

Código: Selecionar todos

oPrinter:pixelsPerInchX  (Number of pixels per inch in X direction (horizontal) )
oPrinter:pixelsPerInchY (Number of pixels per inch in Y direction (vertical) )
Eventualmente até podem existir outras variáveis que no momento não me ocorrem, mas certamente algum outro colega se encarregará de colocá-las neste tópico.

Com o pequeno prg anexo você pode "ver" qual a densidade da impressora, visto que desenha um quadriculado com número nas colunas e linhas.
Anexos
TesteQ.prg
(3.31 KiB) Baixado 118 vezes
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)
DLZ
Usuário Nível 3
Usuário Nível 3
Mensagens: 184
Registrado em: 09 Jun 2008 10:09
Localização: Ibirubá - RS - Brasil

Re: Número de pixels de uma página

Mensagem por DLZ »

Bom dia..
Realmente, foi a conclusão que cheguei tb.., mas tem como eu saber quantos pix tem o "eixo X" e o "Eixo Y" em uma página ? tem alguma função que me retorne isso ?
Não vejo sentido em poder imprimir uma imagem se, dependendo da impressora, ela vai sair em um local diferente !!
DLZ
Usuário Nível 3
Usuário Nível 3
Mensagens: 184
Registrado em: 09 Jun 2008 10:09
Localização: Ibirubá - RS - Brasil

Re: Número de pixels de uma página

Mensagem por DLZ »

ahahmmm
Achei a solução...
as variáveis Oprint:PageHeigth e Oprint:PageWith retornam o número de pix que a página contem, na altura e largura respectivamente.. Ai foi só fazer uma proporção em percentuais para calcular as coordenadas da imagem conforme o tamanho da página..
Um abraç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

Re: Número de pixels de uma página

Mensagem por Hasse »

Beleza !!!

O caminho é este mesmo.

Qualquer dificuldade solta o grito...
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:

Re: Número de pixels de uma página

Mensagem por sygecom »

DLZ escreveu:ahahmmm
Achei a solução...
as variáveis Oprint:PageHeigth e Oprint:PageWith retornam o número de pix que a página contem, na altura e largura respectivamente.. Ai foi só fazer uma proporção em percentuais para calcular as coordenadas da imagem conforme o tamanho da página..
Um abraço..
Olá Dercio,
Seria possivel vc postar como solucionou, não entendi muito bem sua solução, hoje tenho uma impressão para LPT e outra para USB.

Agradeço atentecipadamente...
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
DLZ
Usuário Nível 3
Usuário Nível 3
Mensagens: 184
Registrado em: 09 Jun 2008 10:09
Localização: Ibirubá - RS - Brasil

Re: Número de pixels de uma página

Mensagem por DLZ »

Ola...
Fiz mais assim... Não ficou 100 %, mas foi o melhor que consegui fazer..

Primeiro, posicionei a figura usando como base uma impressora ( Hp Laserjet)
Depois disso, pegei o número máximo de pixels do eixo x e do exio Y.
apliquei uma regra de 3 básica para descobrir quantos porcendo do eixo x e y repsenta cada coordenada do quadrado da figura..
Depois é só calcular esse percentual baseado no que retornar nas variáveis de algura e largura máxima da página..
Não sei se me fiz entender.. ehehe..
Vou tentar montar um programa exemplo e postar aqui...
Um abraço...
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Número de pixels de uma página

Mensagem por sygecom »

DLZ escreveu:Ola...
Fiz mais assim... Não ficou 100 %, mas foi o melhor que consegui fazer..

Primeiro, posicionei a figura usando como base uma impressora ( Hp Laserjet)
Depois disso, pegei o número máximo de pixels do eixo x e do exio Y.
apliquei uma regra de 3 básica para descobrir quantos porcendo do eixo x e y repsenta cada coordenada do quadrado da figura..
Depois é só calcular esse percentual baseado no que retornar nas variáveis de algura e largura máxima da página..
Não sei se me fiz entender.. ehehe..
Vou tentar montar um programa exemplo e postar aqui...
Um abraço...
Dercio, se poder postar um exemplo agradeço.
Obrigado.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
DLZ
Usuário Nível 3
Usuário Nível 3
Mensagens: 184
Registrado em: 09 Jun 2008 10:09
Localização: Ibirubá - RS - Brasil

Re: Número de pixels de uma página

Mensagem por DLZ »

ok..
Vamos supor que eu queira imprimir meu Bitmap nas seguintes coordenadas:
Tudo em Pixels..
Linha Inicial = 60
Coluna Inicial = 60
Linha Final = 408
Coluna final = 450

Cheguei nesse valores testando a posição utilizando como impressora o PDFCreator.

Levando em conta que com essa impressora e papel A4, sem definir margem nenhuma, a quantidade de Pixels disponíveis em uma página são:
Linhas = 7017 (OPrint:PageHeight)
Colunas = 4958 (Oprint:PageWidth)

Muito bem..
Agora é só aplicar uma regra de 3 para descobrir quanto cada coordendada representa ( em % ) em relação ao total da página..
Ex:
7017 100
60 x
x=6000/7017
X=0,85506626763574176998717400598546 %
ou seja,
A posição inicial da imagem, deverá estar posicionada em uma coordendada que represente 0,85506626763574176998717400598546 % do tamanho total da página ((OPrint:PageHeight)

é só repetir o mesmo processo para todas as outras coordenadas e depois só aplicar o percentual às variáveis OPrint:PageHeight e Oprint:PageWidth

Eis o código fonte:

Código: Selecionar todos

  OPRINT:=INIC_IMP(Impressora_qualquer)
   oPrint:Landscape:= .F. 
   oPrint:FormType := 9  //a4 
   oPrint:Copies   := 1
   ALT_PAG:=oprint:PageHeight
   LARG_PAG:=oprint:PageWidth
   oprint:StartPage()
   PYI:=6000/7017
   PXI:=6000/4958
   PYF:=40800/7017
   PXF:=45000/4958

   YI:=ALT_PAG*(PYI/100)
   XI:=LARG_PAG*(PXI/100)
   YF:=ALT_PAG*(PYF/100)
   XF:=LARG_PAG*(PXF/100)
   IMPBMP(YI,XI,YF,XF,"Meu_Bmp.bmp")

FUNCTION IMPBMP(LI,CI,LF,CF,PBMP)
obmp:=Win32Bmp():New()
obmp:LoadFile(PBMP)
obmp:Draw(oprint,{CI,LI,CF,LF})
obmp:destroy()
Espero que entendam minha "maracutaia" ehehe
Não sou muito bom para explicar..
Um abraço !!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Número de pixels de uma página

Mensagem por sygecom »

Dercio, entendi perfeitamente, na veradade eu que tava comendo poeira aqui !! mas você me ajudou , e muitoooo vlw.

Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder