Foros del Web » Programación para mayores de 30 ;) » Programación General »

quiero imprimir en el lenguaje c por la mierda de impresora. Recompensamos en carne

Estas en el tema de quiero imprimir en el lenguaje c por la mierda de impresora. Recompensamos en carne en el foro de Programación General en Foros del Web. hola estoy intentando realizar un programa que lleve un listado de empleados y vacaciones y que ademas de llevar la gestion de esta proder imprimirlo, ...
  #1 (permalink)  
Antiguo 21/04/2004, 08:17
 
Fecha de Ingreso: abril-2004
Mensajes: 6
Antigüedad: 20 años
Puntos: 0
quiero imprimir en el lenguaje c por la mierda de impresora. Recompensamos en carne

hola estoy intentando realizar un programa que lleve un listado de empleados y vacaciones y que ademas de llevar la gestion de esta proder imprimirlo, no logro dar con una funcion para poder imprimirlo por la impresora, como no en lenguaje c/c++, gracias y espero respuesta

Última edición por monka; 21/04/2004 a las 10:22
  #2 (permalink)  
Antiguo 21/04/2004, 14:06
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
hmmm nunca lo hice, pero se me ocurre que abras el archivo "LPT1" o "PRN", y mandes escrituras como si fuera un archivo normal, eso debería de mandar los datos a la impresora (sería lo mismo que hacer C:\>type autoexec.bat > PRN)

otra cosa que se me ocurre es que redirijas STDOUT a la impresora (LPT1), asi con un simple printf tendrías la salida a impresora, pero no recuerdo como hacerlo.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 01/05/2004, 00:17
Avatar de artury  
Fecha de Ingreso: marzo-2004
Ubicación: Leon, Mexico
Mensajes: 210
Antigüedad: 20 años, 1 mes
Puntos: 0
carne, carne...........stdout=lpt1
lo pones cuando comiences a imprimir
__________________
asi es eso del box
  #4 (permalink)  
Antiguo 07/05/2010, 21:34
Avatar de avefenix1810  
Fecha de Ingreso: marzo-2010
Ubicación: Santiago de Chile
Mensajes: 10
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: quiero imprimir en el lenguaje c por la mierda de impresora. Recompensamo

Hola a todos...hasta hace unos días también tuve la misma interrogante, pero buscando y metiéndome en cada lugar que aparecía, encontré un programa que me permite imprimir un archivo del tipo .txt que se utiliza con el lenguaje C y..... RESULTA.
Los métodos indicados acá como respuesta...NO funcionan, en cambio este SI.
Como el método no es de mi invención voy a copiar tal cual lo encontré.

Los lenguajes como C y C++ no definen una forma estandar de imprimir.

La razon es simple: el trabajo de impresion es una tarea específica de la plataforma, lo que implica:

No hay una forma estandar de imprimir en C/C++

Se debe usar alguna caracteristica especifica de la plataforma (como codigo no portable) y/o del compilador para imprimir algo.

Por ejemplo en Turbo C++ se puede usar stdprn para hacer referencia a la impresora e imprimir algo, tal como sigue:

fprintf(stdprn, "Hola mundo...\n");


int num = 50;
fprintf(stdprn, "Valor del numero: %d\n", num);



Otra forma es funcionalmente similar a trabajar con archivos, pero en lugar de abrir un archivo del disco duro, haremos referencia a la impresora con uno de los siguiente valores:

LPT1:
PRN
LPT2:

Por ejemplo en Dev-C++ podemos usar:

#include <iostream>
#include <fstream>
using namespace std ;

int main()
{
// Identifica el puerto de la impresora
char const * const pszPrinterName = "LPT1:" ;

// Abre el flujo de la impresora
ofstream prn( pszPrinterName );

// Asegura que la impresora se abrio exitosamente
if ( ! prn ) {
cerr << "ERROR: No se puede abrir " << pszPrinterName << '\n' ;
return 1 ;
}

// Imprime un mensaje
prn << "Hola mundo!" ;

prn << '\r' // Retorno de carro (ENTER)
<< '\f' ; // Expulsa la ultima hoja de la impresora

// Cierra la impresora
prn.close();

return 0;
}



El siguiente código me resulto, ya que es lo que buscaba.


Impresión usando al API de Windows

Si estamos trabajando con Windows, la mejor forma es usar la API, con esto logramos que sea el propio Windows, quien se encargue de ciertas tareas.

Por ejemplo, con el siguiente código, hecho por muestro amigo ajo podemos imprimir un archivo de texto. Se mostrará el clásico cuadro de diálogo de impresión de Windows y podemos entonces seleccionar cualquier impresora, ya sea conectada al puerto paralelo, USB o de red:


//Ejemplo que muestra como imprimir un archivo de texto plano.
#include <windows.h>
#include <fstream>
#include <string>
#include <iostream>

using namespace std;

typedef std::basic_ifstream<TCHAR> tifstream;
typedef std::basic_string<TCHAR> tstring;

void Outtextxy(HDC hdc,int x,int y,tstring Msg)
{
TextOut(hdc,x,y,Msg.c_str(),static_cast<int>(Msg.l ength()));
}

void ShowError(tstring strMsg)
{
MessageBox (NULL,strMsg.c_str(),TEXT("Imprimir"),MB_ICONERROR );
exit(1);
}
void ShowInformation(tstring strText)
{
MessageBox (NULL,strText.c_str(),TEXT("Imprimir"),MB_ICONINFO RMATION);
}
void PrintFile(tifstream& f)
{
PRINTDLG pd;
DOCINFO di;
tstring strLine;
int y=300;

memset (&pd, 0, sizeof(PRINTDLG));
memset (&di, 0, sizeof(DOCINFO));

di.cbSize = sizeof(DOCINFO);
di.lpszDocName = TEXT("Imprimiendo");

pd.lStructSize = sizeof(PRINTDLG);
pd.Flags = PD_PAGENUMS | PD_RETURNDC;
pd.nFromPage = 1;
pd.nToPage = 1;
pd.nMinPage = 1;
pd.nMaxPage = 0xFFFF;


if(f.fail())
ShowError(TEXT("Error el archivo no se pudo abrir para lectura"));

if (PrintDlg (&pd)){
if (pd.hDC){
if (StartDoc (pd.hDC, &di) != SP_ERROR){
cout << "Imprimiendo...\nEspere un momento" << endl;
StartPage (pd.hDC);
while(!f.eof()){
getline(f,strLine);
Outtextxy(pd.hDC,500,y,strLine.c_str());
y+=100;
}
EndPage (pd.hDC);
EndDoc (pd.hDC);

}
else
ShowError(TEXT("Error: No se pudo comenzar a imprimir."));

}
else
ShowError(TEXT("Error: No se pudo crear el contexto de dispositivo"));

}
else
ShowInformation(TEXT("Se cancelo la impresion"));

ShowInformation(TEXT("Termino la impresion correctamente."));
}

int main(int argc,char *argv[])
{

tifstream in(TEXT("texto.txt")); /* acá va escrito el nombre del archivo que quieres imprimir */
PrintFile(in);
in.close();
return 0;
}



Para que funcione el ejemplo debemos tener un archivo llamado texto.txt en el mismo directorio del programa ejecutable.

Si trabajamos con Dev-C++, debemos ir a Project -> Project Options -> Parameters, y en el cuadro Linker agregamos las siguientes líneas en caso de no tenerlas:

-lgdi32
-lcomdlg32



En particular yo trabajo con Dev-C++.


Espero les sirva. Saludos.
  #5 (permalink)  
Antiguo 07/05/2010, 21:35
Avatar de avefenix1810  
Fecha de Ingreso: marzo-2010
Ubicación: Santiago de Chile
Mensajes: 10
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: quiero imprimir en el lenguaje c por la mierda de impresora. Recompensamo

Me olvidaba... la recompensa se acepta solo...y digo SOLO si es "carne femenina"....jajajajaja...Saludos.
  #6 (permalink)  
Antiguo 13/07/2010, 10:39
 
Fecha de Ingreso: julio-2010
Mensajes: 16
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: quiero imprimir en el lenguaje c por la mierda de impresora. Recompensamo

Necesito imprimir en papel una archivo.dat en C...utilizo visual c++ como editor
alguna idea..mejor si es p/impresora USB


gracias
  #7 (permalink)  
Antiguo 13/07/2010, 10:40
 
Fecha de Ingreso: julio-2010
Mensajes: 16
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: quiero imprimir en el lenguaje c por la mierda de impresora. Recompensamo

me olvidaba es muy urgente...jaja
  #8 (permalink)  
Antiguo 28/03/2011, 09:48
 
Fecha de Ingreso: marzo-2011
Mensajes: 9
Antigüedad: 13 años
Puntos: 0
Pregunta Respuesta: quiero imprimir en el lenguaje c por la mierda de impresora. Recompensamo

Trabajo con dev-C++ de windows y al tratar de compilar el proyecto de API para windows me genera el siguiente error



Compilador: Default compiler
Ejecutando gcc.exe...
gcc.exe "C:\Dev-Cpp\imprimirAPIwindows.c" -o "C:\Dev-Cpp\imprimirAPIwindows.exe" -g3 -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib" -g3
C:\Dev-Cpp\imprimirAPIwindows.c:3:20: fstream: No such file or directory
C:\Dev-Cpp\imprimirAPIwindows.c:4:19: string: No such file or directory
C:\Dev-Cpp\imprimirAPIwindows.c:5:21: iostream: No such file or directory
C:\Dev-Cpp\imprimirAPIwindows.c:7: error: syntax error before "namespace"
C:\Dev-Cpp\imprimirAPIwindows.c:7: warning: data definition has no type or storage class
C:\Dev-Cpp\imprimirAPIwindows.c:9: error: syntax error before ':' token
C:\Dev-Cpp\imprimirAPIwindows.c:10: error: syntax error before ':' token
C:\Dev-Cpp\imprimirAPIwindows.c:12: error: syntax error before "tstring"

C:\Dev-Cpp\imprimirAPIwindows.c: In function `Outtextxy':
C:\Dev-Cpp\imprimirAPIwindows.c:14: error: `hdc' undeclared (first use in this function)
C:\Dev-Cpp\imprimirAPIwindows.c:14: error: (Each undeclared identifier is reported only once
C:\Dev-Cpp\imprimirAPIwindows.c:14: error: for each function it appears in.)
C:\Dev-Cpp\imprimirAPIwindows.c:14: error: `x' undeclared (first use in this function)
C:\Dev-Cpp\imprimirAPIwindows.c:14: error: `y' undeclared (first use in this function)
C:\Dev-Cpp\imprimirAPIwindows.c:14: error: `Msg' undeclared (first use in this function)
C:\Dev-Cpp\imprimirAPIwindows.c:14: error: `static_cast' undeclared (first use in this function)
C:\Dev-Cpp\imprimirAPIwindows.c:14: error: syntax error before "int"
C:\Dev-Cpp\imprimirAPIwindows.c: At top level:
C:\Dev-Cpp\imprimirAPIwindows.c:17: error: syntax error before "strMsg"
C:\Dev-Cpp\imprimirAPIwindows.c: In function `ShowError':
C:\Dev-Cpp\imprimirAPIwindows.c:19: error: `strMsg' undeclared (first use in this function)
C:\Dev-Cpp\imprimirAPIwindows.c: At top level:
C:\Dev-Cpp\imprimirAPIwindows.c:22: error: syntax error before "strText"
C:\Dev-Cpp\imprimirAPIwindows.c: In function `ShowInformation':
C:\Dev-Cpp\imprimirAPIwindows.c:24: error: `strText' undeclared (first use in this function)
C:\Dev-Cpp\imprimirAPIwindows.c: At top level:
C:\Dev-Cpp\imprimirAPIwindows.c:26: error: syntax error before '&' token
C:\Dev-Cpp\imprimirAPIwindows.c: In function `PrintFile':
C:\Dev-Cpp\imprimirAPIwindows.c:30: error: `tstring' undeclared (first use in this function)

C:\Dev-Cpp\imprimirAPIwindows.c:30: error: syntax error before "strLine"
C:\Dev-Cpp\imprimirAPIwindows.c:47: error: `f' undeclared (first use in this function)
C:\Dev-Cpp\imprimirAPIwindows.c:53: error: `cout' undeclared (first use in this function)
C:\Dev-Cpp\imprimirAPIwindows.c:53: error: `endl' undeclared (first use in this function)
C:\Dev-Cpp\imprimirAPIwindows.c:56: error: `strLine' undeclared (first use in this function)
C:\Dev-Cpp\imprimirAPIwindows.c: In function `main':
C:\Dev-Cpp\imprimirAPIwindows.c:80: error: `tifstream' undeclared (first use in this function)
C:\Dev-Cpp\imprimirAPIwindows.c:80: error: syntax error before "in"
C:\Dev-Cpp\imprimirAPIwindows.c:81: error: `in' undeclared (first use in this function)

Ejecución Terminada


A que se debera esto?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:29.