C/Visual C - cod. fuentes para manejar imp.

 
Vista:

cod. fuentes para manejar imp.

Publicado por giovanny leones vega (1 intervención) el 19/02/2003 22:26:47
por favor si alguien me puede ayudar con los codigos fuentes para manipular la impresora. es decir enviar un archivo o fichero por impresora.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Manipulación de impresoras: Envío de archivos a la impresora

Publicado por Alejandro (1153 intervenciones) el 06/05/2025 00:08:41
Giovanny, para enviar un archivo a la impresora en C/C++, puedes utilizar las funciones de la API de Windows. A continuación, te muestro un ejemplo básico de cómo hacerlo:

Ejemplo de código en C++



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <windows.h>
#include <iostream>
 
void enviarArchivoAImpresora(const char* nombreArchivo) {
    HANDLE hPrinter;
    DOCINFO di;
    DWORD dwWritten;
 
    // Abrir la impresora
 if (!OpenPrinter((LPSTR)"Nombre de la impresora", &hPrinter, NULL)) {
        std::cerr << "Error al abrir la impresora." << std::endl;
        return;
    }
 
    // Configurar la información del documento
    di.cbSize = sizeof(DOCINFO);
    di.lpszDocName = "Documento de prueba";
    di.lpszOutput = NULL;
    di.lpszDatatype = NULL;
    di.fwType = 0;
 
    // Iniciar el documento
    if (StartDoc(hPrinter, &di) > 0) {
        // Iniciar la página
        StartPage(hPrinter);
 
        // Abrir el archivo
        FILE* archivo;
        fopen_s(&archivo, nombreArchivo, "rb");
        if (archivo) {
            // Leer el archivo y enviarlo a la impresora
            char buffer[4096];
            size_t bytesLeidos;
            while ((bytesLeidos = fread(buffer, 1, sizeof(buffer), archivo)) > 0) {
                WritePrinter(hPrinter, buffer, bytesLeidos, &dwWritten);
            }
            fclose(archivo);
        } else {
            std::cerr << "Error al abrir el archivo." << std::endl;
        }
 
        // Finalizar la página y el documento
        EndPage(hPrinter);
        EndDoc(hPrinter);
    } else {
        std::cerr << "Error al iniciar el documento." << std::endl;
    }
 
    // Cerrar la impresora
    ClosePrinter(hPrinter);
}
 
int main() {
    const char* nombreArchivo = "ruta/del/archivo.txt"; // Cambia esto por la ruta de tu archivo
    enviarArchivoAImpresora(nombreArchivo);
    return 0;
}

Explicación



1. Abrir la impresora: Utiliza `OpenPrinter` para abrir la impresora especificando su nombre.

2. Configurar el documento: Se configura la estructura `DOCINFO` para definir el nombre del documento que se enviará a la impresora.

3. Iniciar el documento y la página: Se inicia el documento y la página con `StartDoc` y `StartPage`.

4. Leer y enviar el archivo: Se abre el archivo en modo binario y se lee en bloques, enviando cada bloque a la impresora con `WritePrinter`.

5. Finalizar el documento: Se finaliza la página y el documento con `EndPage` y `EndDoc`.

6. Cerrar la impresora: Finalmente, se cierra la impresora con `ClosePrinter`.

Notas



- Asegúrate de reemplazar `"Nombre de la Impresora"` con el nombre real de tu impresora y `"ruta/del/archivo.txt"` con la ruta del archivo que deseas imprimir.
- Este código es específico para Windows. Si estás utilizando otro sistema operativo, el enfoque será diferente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar