Impresion en RED

13/10/2004 - 18:33 por Eyes | Informe spam
Tengo un problema, actualmente estas migrnado de Base de datos y se tuvo que
modificar el codigo de las Apps, debido a corto tiempo que nos falta para
poner en marcha la migracion, estamos evaluando a Terminal Server para
ejecutar nuestras aplicaciones en nuestras sucursales.

Una de las cosas que nos preocupa en la impresion de Cheques, Facturas,
etc, que imprimimos en impresoras de Matriz.

Actualmente la computadora que va a imprimir estos documentos tiene
conectada la impresora.

El codigo siguiente es en donde se elije la puerto de la impresora, por ser
local es LPT1(Win 2K, Xp, Nt) o PRN (Win98)

m_fpPrn = fopen("prn","a");
m_fpLpt = fopen("lpt1","a");

Buscando en Internet me recomendaron usar lo siguiente:

system("NET USE LPT1 /d"); // free up the port
system("NET USE LPT1 \\\\10.74.2.240\\FX880");

Pero al mandar a imprimirm simplemente no imprime nada.

Como puedo imprimir en una impresora de Matriz en RED ??? o que mas debo
hacer para que se impriman los documentos en la computadora local?

Espero haberme explicado

Gracias y Saludos
Daniel

PD: Tengo VC++ 6.0

Preguntas similare

Leer las respuestas

#1 Rodrigo Corral [MVP]
14/10/2004 - 12:59 | Informe spam
ufff!!! Voy a tratar de adivinar... por que nunca he hecho nada parecido...

Se me ocurre que pinches la impresora directamente a un puerto del servidor
que hace de teminal server. Cuando conectes al servidor con el cliente marca
en el cliente de escritorio remoto, en la ficha Recursos Locales, puertos
serie e impresoras. En teoria esto hace que los cliente vean los puertos y
las impresoras como suyas...


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org
Respuesta Responder a este mensaje
#2 Eyes
14/10/2004 - 15:27 | Informe spam
No Rodrigo. creo que me expliqué mal. Lo que necesito es imprimir en el
puerto del cliente, pero obviamente en el Terminal Server está al App.

Básicamente es imprimir un cheque de una sucursal, en la sucursal y no en el
servidor (no en la Empresa Matriz).

No sé si me explico?

"Rodrigo Corral [MVP]" wrote:

ufff!!! Voy a tratar de adivinar... por que nunca he hecho nada parecido...

Se me ocurre que pinches la impresora directamente a un puerto del servidor
que hace de teminal server. Cuando conectes al servidor con el cliente marca
en el cliente de escritorio remoto, en la ficha Recursos Locales, puertos
serie e impresoras. En teoria esto hace que los cliente vean los puertos y
las impresoras como suyas...


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org



Respuesta Responder a este mensaje
#3 Willser F. González C.
14/10/2004 - 16:32 | Informe spam
Lo primero que se debe chequear es que realmente el puerto LPT1 está
redireccionado correctamente, es decir, que el NET USE ... funciona bien.
Para ello, puede probar imprimiendo algo directamente desde el prompt, no
sé, algo así como DIR *.* >PRN (o LPT1).

Pienso que por ahí está la cosa.

"Eyes" escribió en el mensaje
news:
Tengo un problema, actualmente estas migrnado de Base de datos y se tuvo


que
modificar el codigo de las Apps, debido a corto tiempo que nos falta para
poner en marcha la migracion, estamos evaluando a Terminal Server para
ejecutar nuestras aplicaciones en nuestras sucursales.

Una de las cosas que nos preocupa en la impresion de Cheques, Facturas,
etc, que imprimimos en impresoras de Matriz.

Actualmente la computadora que va a imprimir estos documentos tiene
conectada la impresora.

El codigo siguiente es en donde se elije la puerto de la impresora, por


ser
local es LPT1(Win 2K, Xp, Nt) o PRN (Win98)

m_fpPrn = fopen("prn","a");
m_fpLpt = fopen("lpt1","a");

Buscando en Internet me recomendaron usar lo siguiente:

system("NET USE LPT1 /d"); // free up the port
system("NET USE LPT1 \\\\10.74.2.240\\FX880");

Pero al mandar a imprimirm simplemente no imprime nada.

Como puedo imprimir en una impresora de Matriz en RED ??? o que mas debo
hacer para que se impriman los documentos en la computadora local?

Espero haberme explicado

Gracias y Saludos
Daniel

PD: Tengo VC++ 6.0
Respuesta Responder a este mensaje
#4 Rodrigo Corral [MVP]
14/10/2004 - 16:37 | Informe spam
Estaba equivocado. Si haces lo que te he dicho verás los puertos del cliente
en el servidor... con lo cual el problema estaria solucionado... creo... en
principio tu programa de servidor veria los puertos del cliente y podria
escribir en ellos...


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org
Respuesta Responder a este mensaje
#5 Fernando Marin
15/10/2004 - 01:41 | Informe spam
Creo que la mejor forma para imprimir en red es seleccionando la impresora
mediante
los dialogos standar de windows, esto hace que la aplicación no dependa de
la impresora
ni de la versión del sistema operativo

Aque te pongo un pequeño ejemplo:

// Primero debes incluir los siguientes archivos
#include "stdafx.h"
#include "windows.h"
#include "WINSPOOL.H"
#include "afxtempl.h"

// Se seleciona la impresora, se crea un contexto de impresión,
// inicias el documento, inicias la pagina, llamas a las funciones
// que imprimen el texto o graficos, cierras la pagina .. (así con todas las
páginas)
// y cierras el documento

HDC hdcPrn=NULL;
LPDEVMODE pDevMode;
CPrintDialog dlgImpresora(TRUE); // dialogo de impresión
if(dlg.Impresora.DoModal( )==IDOK)
{
hdcPrn=dlgImpresora.CreatePrinterDC( );
DOCINFO di = { sizeof(DOCINFO),_T("Titulo Documento"),NULL };
if(NULL!=hdcPrn)
{
if(StartDoc(hdcPrn,&di)>0)
{
StartPage(hdcPrn);
GDICalls(hdcPrn); // Función para la impresión de pagina
EndPage(hdcPrn);
EndDoc(hdcPrn);
}
DeleteDC(hdcPrn);
}
}

// Función para la impresión de pagina
void GDICalls(HDC hDC)
{
// Definimos el tamaño del papel, así como la resolución y modo grafico
int nTamX=GetDeviceCaps(hDC,HORZSIZE)*10;//2100;//
int nTamY=GetDeviceCaps(hDC,VERTSIZE)*10;//2000;//
int nResX=GetDeviceCaps(hDC,HORZRES);//0;//
int nResY=GetDeviceCaps(hDC,VERTRES);//0;//
SetMapMode(hDC,MM_ANISOTROPIC);//hDC,MM_LOMETRIC);//
SetWindowExtEx(hDC,nTamX,nTamY,NULL);
SetViewportExtEx(hDC,nResX,nResY,NULL);

// Selección de la fuente, te pongo como selecionar la fuente, ya que es
lo que
// me costo mas entender
HFONT m_fontOld;
LOGFONT lf; // Nueva fuente
memset(&lf,0,sizeof(LOGFONT));
lf.lfOrientation=0;
lf.lfEscapement=0;
lf.lfItalic=0;
lf.lfUnderline=0;
lf.lfStrikeOut=0;
lf.lfWidth=0;
lf.lfWeight=0;
lf.lfCharSet=0;
lf.lfOutPrecision=0;
lf.lfClipPrecision=0;
lf.lfQuality=0;//PROOF_QUALITY;
lf.lfPitchAndFamily=0;//FF_MODERN;
lf.lfHeightP;
strcpy(lf.lfFaceName,"Times New Roman"/*"Ariel"*//*"Courrier New"*/);
HFONT m_font;
m_font=CreateFontIndirect(&lf);
m_fontOld=(HFONT)SelectObject(hDC,m_font); // seleccionas la fuente y
guardas la fuente antigua

// llamas a las funciones de impresión
Rectangle(hDC, 350, 115, 1050, 200); // dibujas un rectangulo
TextOut(hDC, 390, 60,"Hola Mundo",10); // Para escribir Texto
DrawText(hDC,"Hola Mundo" ,-1,CRect(700, 65, 1000, 500),DT_CENTER ); //
Otra función para escribir texto
(HFONT)SelectObject(hDC,m_fontOld); // selecionas la fuente antigua
}


// unas notas que he encontrado
/*
The task for put out CString to a printer

1º Show common dialog box for printing and create a valid handle to the
newly created printer device context.
2º Calculate Height and Width in millimeters and pixels, of the paper, for
set up the rectangle, in logical coordinates, in which the text is to be
formatted
3º Create the body font and save the old font in a handle for restore later.
4º Create a DOCINFO structure contains the input and output filenames and
other information used by the StartDoc function
5º Starts a print job "StartDoc"
6º Prepares the printer driver to accept data "StartPage"
7º Draws formatted text in the specified rectangle, check the number of
characters processed by DrawTextEx, spand the rectangle and Draw the length
Measured of the text to print with dtparams.uiLengthDrawn of DRAWTEXTPARAMS
structure
8º Informs the device that the application has finished writing to a page
"EndPage"
9º While have text to print return to point 6º
10º Ends a print job "EndDoc"
11º Restore old font, delete body font and delete the printer device
context.

*/

Un saludo y espero que te sirva


www.arrendamientos.biz
Fernando Marín


"Eyes" escribió en el mensaje
news:
Tengo un problema, actualmente estas migrnado de Base de datos y se tuvo
que
modificar el codigo de las Apps, debido a corto tiempo que nos falta para
poner en marcha la migracion, estamos evaluando a Terminal Server para
ejecutar nuestras aplicaciones en nuestras sucursales.

Una de las cosas que nos preocupa en la impresion de Cheques, Facturas,
etc, que imprimimos en impresoras de Matriz.

Actualmente la computadora que va a imprimir estos documentos tiene
conectada la impresora.

El codigo siguiente es en donde se elije la puerto de la impresora, por
ser
local es LPT1(Win 2K, Xp, Nt) o PRN (Win98)

m_fpPrn = fopen("prn","a");
m_fpLpt = fopen("lpt1","a");

Buscando en Internet me recomendaron usar lo siguiente:

system("NET USE LPT1 /d"); // free up the port
system("NET USE LPT1 \\\\10.74.2.240\\FX880");

Pero al mandar a imprimirm simplemente no imprime nada.

Como puedo imprimir en una impresora de Matriz en RED ??? o que mas debo
hacer para que se impriman los documentos en la computadora local?

Espero haberme explicado

Gracias y Saludos
Daniel

PD: Tengo VC++ 6.0
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida