Página 1 de 1

Número de pixels de uma página

Enviado: 20 Jun 2008 14:23
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 ?

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

Enviado: 20 Jun 2008 19:24
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.

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

Enviado: 23 Jun 2008 08:44
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 !!

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

Enviado: 23 Jun 2008 10:49
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..

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

Enviado: 24 Jun 2008 12:52
por Hasse
Beleza !!!

O caminho é este mesmo.

Qualquer dificuldade solta o grito...

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

Enviado: 27 Jun 2008 12:52
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...

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

Enviado: 27 Jun 2008 17:00
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...

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

Enviado: 11 Jul 2008 13:12
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.

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

Enviado: 14 Jul 2008 15:29
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 !!

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

Enviado: 16 Jul 2008 17:58
por sygecom
Dercio, entendi perfeitamente, na veradade eu que tava comendo poeira aqui !! mas você me ajudou , e muitoooo vlw.

Abraços