Visual C++ .NET - imprimir atraves de la impresora Visual c++

 
Vista:

imprimir atraves de la impresora Visual c++

Publicado por tony20y21 (1 intervención) el 22/05/2011 06:36:05
Tengo que hacer un programa que imprima en la impresora, ya utilize el system("print archivo.txt"); pero solo me sale un mensaje que dice: C:\USUARIO\DOCUMENTS\ARCHIVO.TXT ESTA SIENDO IMPRESO, pero no lo imprime, algun codigo para imprimir? no necesariamente un txt o la pantalla, el punto que imprima atraves d elaimpresora GRACIAS!!!
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

Impresión a través de la impresora

Publicado por Alejandro (265 intervenciones) el 09/02/2024 18:22:31
Tony20y21, si estás trabajando en un entorno de Windows, puedes utilizar las funciones de la API de Windows para imprimir directamente a la impresora. Aquí hay un ejemplo básico usando las funciones de la API de Windows 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
#include <windows.h>
 
int main() {
    // Nombre de la impresora (puedes encontrarlo en la configuración de impresoras)
    const wchar_t* nombreImpresora = L"NombreDeTuImpresora";
 
    // Nombre del archivo que deseas imprimir
    const wchar_t* nombreArchivo = L"archivo.txt";
 
    // Configurar la estructura de impresión
    DOC_INFO_1 docInfo;
    docInfo.pDocName = L"Documento";
    docInfo.pOutputFile = nullptr;
    docInfo.pDatatype = nullptr;
 
    // Inicializar la impresora
    HANDLE impresora = nullptr;
    if (OpenPrinter(nombreImpresora, &impresora, nullptr)) {
        // Inicializar el documento para impresión
        if (StartDocPrinter(impresora, 1, reinterpret_cast<LPBYTE>(&docInfo))) {
            // Abrir la página para imprimir
            if (StartPagePrinter(impresora)) {
                // Leer el contenido del archivo y escribirlo en la página
                FILE* archivo = _wfopen(nombreArchivo, L"rb");
                if (archivo != nullptr) {
                    char buffer[1024];
                    size_t bytesRead;
 
                    while ((bytesRead = fread(buffer, 1, sizeof(buffer), archivo)) > 0) {
                        DWORD bytesWritten;
                        WritePrinter(impresora, buffer, static_cast<DWORD>(bytesRead), &bytesWritten);
                    }
 
                    fclose(archivo);
                }
 
                // Finalizar la página de impresión
                EndPagePrinter(impresora);
            }
 
            // Finalizar el documento de impresión
            EndDocPrinter(impresora);
        }
 
        // Cerrar la impresora
        ClosePrinter(impresora);
    }
 
    return 0;
}

Asegúrate de reemplazar "NombreDeTuImpresora" con el nombre real de tu impresora y "archivo.txt" con el nombre de tu archivo. Ten en cuenta que este es un ejemplo básico y debes manejar adecuadamente posibles errores y situaciones especiales en un programa más completo.
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