En este artículo voy a demostrar cómo convertir un archivo de texto plano a formato PDF desde línea de comandos en GNU/Linux, personalizando fuentes, márgenes, tamaño de página, etc. Existen muchas herramientas para convertir archivos de texto a PDF desde línea de comandos en GNU/Linux, algunos ejemplos son:

Y muchas, muchas otras más...

Sin embargo, entre las que he probado, mi predilecta es definitivamente GNU Enscript, una herramienta que convierte archivos ASCII a PostScript (lenguaje de descripción de páginas utilizado por la mayoría de las impresoras).

La ventaja que tiene enscript, respecto a las herramientas anteriormente mencionadas, es que permite personalizar todo tipo de parámetros y opciones del PDF generado, tales como márgenes, fuentes, formato y tamaño de página, etc. Claro que al trabajar con formato PostScript como salida, hace falta una herramienta auxiliar que convierta luego el archivo PS a PDF. Para el caso típicamente se recurre a ps2pdf (parte del paquete ghostscript).

Para instalar GNU Enscript y ps2pdf en Debian y derivados, simplemente ejecutar:

# apt-get install enscript ghostscript

Las opciones más comunes de enscript son:

  • -a: rango de páginas a imprimir, por ejemplo: "1-10".
  • -b: encabezado de página en formato de texto, por ejemplo "$n %W Página $% de $='".
  • -f: fuente y tamaño a utilizar, por ejemplo "Times-Roman12".
  • -M: tamaño de papel, por ejemplo: "A4"
  • -p: nombre del archivo de salida o "-" para volcar por salida estándar.
  • -r: modo "landscape" o apaisado.
  • --margins: márgenes (en puntos).
  • --footer: pie de página (funciona de manera similar a -b).

Y decenas de opciones más (ver man enscript), incluso permite generar un índice o tabla de contenidos (--toc).

Ejemplo

Supongamos que necesitamos convertir el archivo salida.txt a formato PDF. Pero además deseamos que la fuente sea "Courier" en tamaño "7", los márgenes sean de apenas 1 punto, y el formato de página o tamaño de papel sea "A4".

Primero se debe convertir el archivo .txt a PS utilizando enscript con las siguientes opciones:

$ enscript -M A4 --margins=1:1:1:1 -f Courier7 salida.txt -p salida.ps

Luego simplemente convertir el archivo PS generado por enscript a PDF utilizando ps2pdf:

$ ps2pdf salida.ps

Veamos directamente una prueba...

Creo un archivo de texto que contenga un listado de directorio:

root@debian:~# ls -l /usr/local/ > salida.txt
root@debian:~# cat salida.txt 
total 36
drwxrwsr-x 2 root staff 4096 dic 29 12:55 bin
drwxrwsr-x 2 root staff 4096 dic  9  2016 etc
drwxrwsr-x 2 root staff 4096 dic  9  2016 games
drwxrwsr-x 2 root staff 4096 dic  9  2016 include
drwxr-xr-x 7 root root  4096 dic 21 19:40 lib
lrwxrwxrwx 1 root staff    9 dic  9  2016 man -> share/man
drwxr-sr-x 6 root staff 4096 sep 25 14:22 pgsql
drwxrwsr-x 2 root staff 4096 dic  9  2016 sbin
drwxrwsr-x 8 root staff 4096 dic 21 19:40 share
drwxrwsr-x 2 root staff 4096 dic  9  2016 src

Convierto el .txt a PS en papel A4, fuente Courier tamaño 8, y márgenes 5/5/10/20 (izquierdo/derecho/superior/inferior):

root@debian:~# enscript -M A4 --margins=5:5:10:20 -f Courier8 salida.txt -p salida.ps
[ 1 page * 1 copy ] copiadas en salida.ps

Luego convierto el PS a PDF:

root@debian:~# ps2pdf salida.ps

El archivo PDF generado es el siguiente: salida.pdf

Notar que he utilizado la cabecera por defecto.

Referencias


Tal vez pueda interesarte


Compartí este artículo