PCL (Printer Command Language)
¡Hola a todos y a todas, coders!
Tengo un archivo de carta que es el siguiente (ahora vais a ver con vuestros propios ojos el lenguaje PCL):
Y voilá! aquí mismo es donde lo pude comprobar:
Primero que todo, espero que hayan pasado unas muy felices fiestas y hayáis empezado el año 2026 con muy buen pie.
Yo hoy quería hablar de un lenguaje con el que he estado trabajando este último tiempo, y se trata de un lenguaje de etiquetas para impresoras que si bien es bastante antiguo a día de hoy se sigue usando, al menos donde yo trabajo dentro del OpenVMS, que es un entorno que lo he explicado en su momento en una de las anteriores entradas.
Printer Command Language envía secuencias de comandos binarios a la impresora. Estos comandos se suelen usar por ejemplo para escoger cierto tipo de letra, posicionar el cursor, transmitir la información de una imagen, etc. Que por cierto, este último es en lo que he estado trabajando.
Tengo un archivo de carta que es el siguiente (ahora vais a ver con vuestros propios ojos el lenguaje PCL):
<ESC>E
<ESC>&l5H
<ESC>(0N<ESC>(s1p-v0s0b4101T
<ESC>(s11V
<ESC>&l6D
<ESC>&a3L
<FF>
<ESC>&a110CCuento de Luno
<ESC>(s3B
<ESC>&a110CLuno
<ESC>&a110CEl zorro
<ESC>&a110CCuentacuentos
<ESC>&a110CKitsune
<ESC>&a110C<ESC>&d1D46702 Disfruten<ESC>&d@
<ESC>&a110C
<ESC>&a110C
<ESC>&a110C
<ESC>&a22C<ESC>&d1DASUNTO: ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@`
<ESC>&a36CÉrase una vez un pequeño zorro llamado Luno, que vivía en el bosque `
<ESC>&a22Ccerca de un río cristalino. Cada mañana, Luno salía a explorar, `
<ESC>&a45C<ESC>(s3Bdescubriendo flores de colores y escuchando el canto<ESC>(s0B
<ESC>&a47Cde los pájaros. Un día, encontró una piedra brillante que <ESC>&a118C
<ESC>&a47Crelucía bajo el sol y decidió guardarla como su tesoro más <ESC>&a118C
<ESC>&a47Cvalioso.
<ESC>&a36CLuno aprendió que, aunque la piedra era hermosa, su verdadera <ESC>&a22C
<ESC>&a22Criqueza estaba en los amigos que había hecho y en las aventuras que `
<ESC>&a22Cvivía cada día en el bosque. Desde entonces, siempre compartía `
<ESC>&a22Csus hallazgos y alegrías con todos los animales que encontraba.`
<ESC>(s0B
<ESC>&a36CEl zorro comprendió que la amistad y la generosidad eran `
<ESC>&a22Clos verdaderos tesoros de la vida, más valiosos que cualquier piedra.`
<ESC>&a22CY así, Luno vivió feliz, explorando y compartiendo, hasta que la luna `
<ESC>&a22Cllenó los cielos de nuevas aventuras.
<ESC>&a36CEstamos a su disposici<o'>n para leer más cuentos que nos inspire`
<ESC>&a22Cy enseñen valores.
<ESC>&a90CMónica Borredá Lucas
<ESC>&a90Code and Fun
<FF>
<ESC>&a110CFin del cuento de Luno
<ESC>E<ESC>&l0O<ESC>&l26A<ESC>&l0O<ESC>&l26A<ESC>&l0l0E<ESC>&l-180u0Z<ESC>*r0F `
Y lo que pretendo es que al final de esa carta, que es un archivo PCL, insertar una imagen PCL también, habría que insertar dicha imagen en extensión PCL, bien, a partir de aquí se pueden hacer de varias formas, existe un software llamado Ghostscript que lo que hace es convertirte archivos en dicha extensión pero por lo que he descubierto mientras investigaba solo se puede con archivos de entrada PDF o PostScript, yo tuve que hacer de un archivo imagen jpg un PDF y de ahí hacer la conversión a PCL, pero el problema es que si tú quieres manejar archivos binarios dentro de una terminal como tiene OpenVMS no debe exceder de cantidad de bytes, y el PDF ya pesaba un poco más de la cuenta, por lo tanto acabó convirtiéndose en un PCL que no soportaba.
Al final probé con reaConverter, que es un conversor online y me bajó muchísimo los bytes, de ahí lo pude subir al directorio de la terminal de OpenVMS y realizar el siguiente script donde insertaría el código binario (PCL) al final de la carta.
$ ! Convertimos la carta y la imagen a stream
$ CONVERT/FDL=STREAM_LF.FDL P6_CARTA2.ENVIO_S2 P6_CARTA2_STREAM.PCL
$ CONVERT/FDL=STREAM_LF.FDL NEGRO.PCL NEGRO_STREAM.PCL
$ ! Concatenamos los archivos convertidos
$ COPY P6_CARTA2_STREAM.PCL + NEGRO_STREAM.PCL SALIDA.PCL
$ WRITE SYS$OUTPUT "Carta con imagen insertada generada en SALIDA.PCL"
Y voilá! aquí mismo es donde lo pude comprobar:
<ESC>&a90CMónica Borredá Lucas
<ESC>&a90Code and Fun
<FF>
<ESC>&a110CFin del cuento de Luno
<ESC>E<ESC>&l0O<ESC>&l26A<ESC>&l0O<ESC>&l26A<ESC>&l0l0E<ESC>&l-180u0Z<ESC>*r0F `
Así que supuestamente después de esto debería de funcionar, al imprimir con la impresora debería aparecer esa imagen que hemos insertado en la carta ahora que ya la tendríamos físicamente en nuestras manos.
Es un hecho que aún tengo que confirmar pero he querido traeros información acerca de este lenguaje porque la verdad es que me ha parecido bastante curioso ahora que llevo un año trabajando en OpenVMS y lenguaje DCL. Sin olvidarme de BASIC, que era la idea inicial para hacer un script, pero por lo que investigué el flujo de datos de dicho lenguaje no funciona muy bien para trabajar con archivos binarios.
Esto sería todo, espero que para vosotros también haya resultado interesante esta entrada y lenguaje.
¡Nos seguimos leyendo, coders!
Comentarios
Publicar un comentario