Resumen Imprimir en la misma posicion en varias impresoras

Mensaje enviado por José Rubí de la Vega <jrubi@ctv.es>

Esta solucion que te propongo es MUY poco elegante pero puedes probar.
Se trata, mas o menos, de modificar el sistema de coordenadas de la impresora de manera que el 0,0 se coloque en la esquina superior izquierda de la hoja fisica y no del area imprimible. Tal como te lo voy a contar puede haber un pequeño margen de error por redondeos pero creo que puede servirte.

Antes de empezar a imprimir debes hacer algo como :

Dim OrigenX As Long, OrigenY As Long, PhWidth As Long
Dim PhHeight As Long, PhOfX As Long, PhOfY As Long

PhWidth = GetDeviceCaps(Printer.hdc, PHYSICALWIDTH)
PhHeight = GetDeviceCaps(Printer.hdc, PHYSICALHEIGHT)
PhOfX = GetDeviceCaps(Printer.hdc, PHYSICALOFFSETX)
PhOfY = GetDeviceCaps(Printer.hdc, PHYSICALOFFSETY)
OrigenX = (Printer.Width / PhWidth) * PhOfX
OrigenY = (Printer.Height / PhHeight) * PhOfY
Printer.Scale (OrigenX, OrigenY)-(Printer.ScaleWidth + OrigenX, Printer.ScaleHeight + OrigenY)

De esta manera colocamos en la esquina superior izquierda del area imprimible las coordenadas que le corresponderian si la impresora imprimiera en toda la pagina. Haz pruebas en varias impresoras para ver si el resultado es aceptable (y ya me contaras).

Las declaraciones necesarias son :

Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex
As Long) As Long
Public Const PHYSICALHEIGHT = 111
Public Const PHYSICALOFFSETX = 112
Public Const PHYSICALOFFSETY = 113
Public Const PHYSICALWIDTH = 110


At 15:03 12/12/99 +0100, Palomo wrote:
>Estoy haciendo un programa de impresión de facturas, y necesito que lo
>haga en posiciones del papel exactas. Pero el problema es que lo consigo
>bien en mi impresora, pero al llevar la aplicación a otro PC y con otra
>impresora sale descuadrado, creo que debe ser por los margenes
>predeterminados de cada impresora. Teneis algún código o dirección de la
>cual sacar información que me permita hacer mi aplicación genérica para la
>gran mayoria de impresoras.


Un saludo.

_________________________________________________
José Rubí de la Vega
E-mail : jrubi@ctv.es
WWW : http://www.ctv.es/USERS/jrubi
Podrás encontrar información sobre VB, las listas
vb-esp y visualbasic-esp y un resumen de los
mensajes de las mismas



Resumen Resumen

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com