Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-12-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: May 2013
Posts: 727
Poder: 5
aguml Va por buen camino
Relacion para obtener el tamaño del papel

Pues eso, que segun la Wikipedia he podido obtener los tamaños mas genericos de papel y los da en mm y para imprimir usando C++Builder tengo estos valores y van bien:

Código PHP:
#define MAXHEIGHTA5 745  //Alto maximo para imprimir en A5
#define MAXWIDTHA5 524   //Ancho maximo para imprimir en A5
#define MAXHEIGHTA4 1080 //Alto maximo para imprimir en A4
#define MAXWIDTHA4 745   //Ancho maximo para imprimir en A4
#define MAXHEIGHTA3 1537 //Alto maximo para imprimir en A3
#define MAXWIDTHA3 1040  //Ancho maximo para imprimir en A3 
y segun la wikipedia:
Código:
B3 = 353mm x 500mm
B4 = 250mm x 353mm
B5 = 176mm x 250mm
segun mis calculos tengo esta relacion de aspecto:

A5:
Código:
Alto: 3,547619047619047619047619047619
Ancho: 3,547619047619047619047619047619
A4:
Código:
Alto: 3,6363636363636363636363636363636
Ancho: 3,547619047619047619047619047619
A3:
Código:
Alto: 3,6595238095238095238095238095238
Ancho: 3,5016835016835016835016835016835
Mi pregunta es ¿en que se basa esa relacion y cual es la relacion correcta para calcular todas correctamente?
Responder Con Cita
  #2  
Antiguo 19-12-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: May 2013
Posts: 727
Poder: 5
aguml Va por buen camino
Segun he leido por ahi eso depende de la resolucion de pantalla y que con esto se obtiene los pixeles por pulgadas:
Código PHP:
int ppxGetDeviceCaps(Printer()->HandleLOGPIXELSX);
int ppyGetDeviceCaps(Printer()->HandleLOGPIXELSY); 
El caso es que he cambiado la resolucion de pantalla por todas las que me permite el pc y los valores de ppx y ppy siempre son 360.
Estoy totalmente perdido, lo que quiero es imprimir un BMP, JPG, o GIF en los diferentes tamaños de papel y saber de antemano si la imagen cabe o no sin redimensionarla para saber si dividirla en varios folios o no.
Responder Con Cita
  #3  
Antiguo 23-12-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: May 2013
Posts: 727
Poder: 5
aguml Va por buen camino
Buscando info leí que para saber la relacion hay que tener dos valores: relacion en pixeles por pulgada de la imagen, y ancho/alto imagen.
Lo primero era saber los ppp del bmp usando codigo puro y duro. Para ello busqué más información y pude obtener esto:

Código PHP:
bool LoadPPPBMP intwidthintheightlongresHlongresVchar *bmpfile )
{
   
BITMAPFILEHEADER bmpheader;
   
BITMAPINFOHEADER bmpinfo;
   
DWORD bytesread;

   
HANDLE file CreateFile bmpfile GENERIC_READFILE_SHARE_READ,
         
NULLOPEN_EXISTINGFILE_FLAG_SEQUENTIAL_SCANNULL );
   if ( 
NULL == file )
        return 
false;

   if ( 
ReadFile file, &bmpheadersizeof BITMAPFILEHEADER ),
        &
bytesreadNULL ) == false )
   {
        
CloseHandle file );
        return 
false;
   }

   if ( 
ReadFile file, &bmpinfosizeof BITMAPINFOHEADER ),
        &
bytesreadNULL ) == false )
   {
        
CloseHandle file );
        return 
false;
   }

   if ( 
bmpheader.bfType != 'MB' )
   {
        
CloseHandle file );
        return 
false;
   }

   *
width   bmpinfo.biWidth;
   *
height  abs bmpinfo.biHeight );
   *
resH bmpinfo.biXPelsPerMeter;
   *
resV bmpinfo.biYPelsPerMeter;

   
CloseHandle file );
   return 
true;

Con esa funcion obtengo los pixeles por metro y necesito los pixeles por pulgadas y para ello hago esto:

Código PHP:
void __fastcall TForm2::ObtenerDimensionesPapel(int &maxHeightint &maxWidthcharpath)
{   
   
int xy;
   
long resHresV;
   
bool retval LoadPPPBMP ( &x, &y, &resH, &resVpath);

   
//Para calcular los pixeles por pulgadas (ppp) resX y resV tienen el valor de relacion en pixeles por metro
   //asi que multiplico el valor de una pulgada entre 100 y multiplico el resultado por el valor en ppm
   
int pppX resH * (2.54 100);
   
int pppY resV * (2.54 100);

   
//En VividReport1->PageUHeight y PageUWidth está el tamaño del papel en mms y lo 
   //divido entre 10 para pasarlo a cms
   
maxHeight = (VividReport1->PageUHeight 10) * pppX 2.54;
   
maxWidth = (VividReport1->PageUWidth 10) * pppY 2.54;

Una vez he obtenido los ppp ya se ve como obtengo la relacion y obtengo correctamente los ppp pero la relacion no me da lo que deviese ya que por ejemplo para maxHeight en A4 me da unos 1100 haciendo pruebas pero con las funciones obtengo unos 595.27. Si pongo al componente VividReport1 para que trabaje con la unidad Points me pone en PageUHeight justo ese valor y el ancho tambien coincide ¿que hago mal? Esto me tiene loco.
Os pongo los enlaces que me han ayudado a comprender un poco este lio.
Obtener info del header del bmp: http://tipsandtricks.runicsoft.com/C...pTutorial.html
Obtener formula para relacion: http://www.digitalfotored.com/imagen...tospulgada.htm
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
FastReport+Corte de papel+tamaño de papel Cheerpipe Impresión 3 25-03-2008 17:55:53
¿Como se hace para que la impresora reconozca el tamaño del papel? maravert Impresión 0 11-01-2007 04:33:29
Cómo cambiar el tamaño de papel para imprimir Laura Roura Impresión 1 04-10-2006 22:03:16
Incluir codigo para tamaño de papel JOMABRI Impresión 2 11-06-2004 21:34:10
tamaño de papel para XP agonzalez Impresión 1 20-08-2003 16:54:37


La franja horaria es GMT +2. Ahora son las 17:50:46.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi