Cobol - manejo spool de impresión, fijar orientación de la hoja

 
Vista:
Imágen de perfil de Carola

manejo spool de impresión, fijar orientación de la hoja

Publicado por Carola (1 intervención) el 26/10/2017 23:58:55
Hola:

Tengo un programa en el que necesito fijar o predeterminar (sin la intervención del usuario) la orientación de la hoja en impresora predeterminada de windows.
Desarrollo en Acucobol-gt, versión 4.0, bajo ambiente windows.
Se agradece cualquier ayuda.

Saludos

Tokota
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

Fijar la orientación de la hoja en la impresora predeterminada

Publicado por Alejandro (300 intervenciones) el 11/09/2023 22:16:14
Para fijar la orientación de la hoja en la impresora predeterminada de Windows desde un programa desarrollado en AcuCOBOL-GT versión 4.0, puedes utilizar la función de llamada al sistema operativo para establecer la configuración de impresión. A continuación, te proporciono un ejemplo de cómo hacerlo:

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
IDENTIFICATION DIVISION.
PROGRAM-ID. ConfiguracionImpresora.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 PrinterName PIC X(80) VALUE "NombreDeTuImpresora".
01 DeviceMode   PIC X(4096).
01 DMField      POINTER.
01 PageSize     PIC S9(8) COMP VALUE 1.  // 1 para vertical, 2 para horizontal.
 
PROCEDURE DIVISION.
    CALL "Winspool.OpenPrinter" USING BY VALUE PrinterName
                                    GIVING PrinterHandle
    IF PrinterHandle = 0
        DISPLAY "No se pudo abrir la impresora." UPON CONSOLE
        STOP RUN
    END-IF
 
    CALL "Winspool.GetPrinter" USING BY VALUE PrinterHandle
                                 BY REFERENCE 2
                                 BY REFERENCE DeviceMode
                                 BY VALUE 4096
                                 GIVING ReturnSize
    IF ReturnSize = 0
        DISPLAY "No se pudo obtener la configuración de impresión." UPON CONSOLE
    ELSE
        MOVE DeviceMode TO DMField
        MOVE PageSize TO OFFSET DMField + 20  // Offset para establecer la orientación (vertical)
        CALL "Winspool.SetPrinter" USING BY VALUE PrinterHandle
                                     BY VALUE 2
                                     BY REFERENCE DMField
                                     BY VALUE 0
        IF ReturnCode = 0
            DISPLAY "La orientación de la hoja se estableció correctamente." UPON CONSOLE
        ELSE
            DISPLAY "No se pudo establecer la orientación de la hoja." UPON CONSOLE
        END-IF
    END-IF
 
    CALL "Winspool.ClosePrinter" USING BY VALUE PrinterHandle
 
    STOP RUN.

En este programa de ejemplo:

1. Se especifica el nombre de la impresora predeterminada en `PrinterName`.
2. Se abre la impresora utilizando la función `Winspool.OpenPrinter`.
3. Se obtiene la configuración de la impresora con `Winspool.GetPrinter` y se ajusta la orientación de la hoja en el campo `PageSize`.
4. Se utiliza `Winspool.SetPrinter` para aplicar la nueva configuración.
5. Finalmente, se cierra la impresora con `Winspool.ClosePrinter`.

Asegúrate de reemplazar `"NombreDeTuImpresora"` con el nombre de la impresora que deseas configurar. Ten en cuenta que esta solución utiliza llamadas al sistema operativo de Windows y puede requerir permisos adecuados.
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