
715 - Lo que NADIE te ha contado sobre PDFs en Linux
Visualiza PDFs en tu terminal Linux con tdf. Descubre esta herramienta TUI ultrarrápida, integra con Yazi y dispara tu productividad en la línea de comandos.
No hay ninguna duda que el documento digital por excelencia hoy en día es el PDF. Se ha convertido en un estándar por mérito propio, y es la forma mas sencilla para traspasar información de un sitio a otro, o de una persona a otra. Además, desde la aparición de PDF.js, y la posibilidad de ver PDFs directamente en el navegador, se ha roto una barrera importante. O al menos casi. Y es que a mi me faltaba algo, me faltaba consumir los PDFs sin salir de la terminal. Por mucho que lo intento siempre termino volviendo a la terminal. En el episodio 627, te hablé que iba a probar Obsidian en Linux y Android, y te puedo asegurar que durante este año, lo he estado utilizando de forma intensa. Al menos al principio. Pero conforme pasaba el tiempo, poco a poco, he ido pasando mas tiempo en Neovim y menos en Obsidian. Me centro mucho mas en la terminal, que utilizando una interfaz gráfica. Obviamente, esto depende de cada uno. Lo que a mi, me puede resultar altamente productivo, para ti puede representar un auténtico dolor. La cuestión, como te decía, es que yo me siento como pez en el agua. Y sobre todo cuando cuento con herramientas como Yazi, que como te decía en el episodio 656 se trata del gestor de archivos más rápido de Linux. Actualmente, en mi terminal de referencia Kitty y con la comodidad que me proporciona Yazi, puedo previsualizar imágenes, o documentos en formato Markdown, y mucho mas… Pero, ¿Que pasa con lo PDFs? Pues también gracias a tdf puedo previsualizar PDFs.

Lo que NADIE te ha contado sobre PDFs en Linux
Hasta la fecha, y de forma tradicional, los PDFs requerían una GUI, o como te decía en la introducción, mas recientemente un navegador web. Pero, la presencia de los PDFs estaba vetada en la terminal. Para mi, esto era un gran inconveniente, ya que me gusta consumir la información desde la terminal. Por eso, cuando descubrí tdf me quedé ojiplático, era justo lo que andaba buscando desde hace mucho tiempo. No se trataba de una herramienta que lanzaba una interfaz gráfica, era una herramienta que se abría directamente en la terminal, lo que me permitía documentarme sin salir de mi entorno natural.
¿Qué es tdf?
tdf es una herramienta de software libre que te permite visualizar archivos PDF directamente en tu terminal de Linux. Ya te puedes ir olvidadndo de abrir un programa con interfaz gráfica para ver un PDF. Con tdf, lo haces todo desde la línea de comandos, justo donde ya estás trabajando, donde estás editando documentos con Neovim o con tu editor por defecto.
Se trata de una herramienta implementada en Rust, y que utiliza la librería ratatui
para construir su interfaz de usuario basada en texto (TUI).
Características principales de tdf
Algunas de las características más interesantes de tdf son,
- Productividad sin salir de la terminal. Si ya trabajas en la línea de comandos (configurando un servidor, programando, o gestionando archivos con herramientas como Yazi), tdf te permite abrir y revisar PDFs sin cambiar de contexto, lo que agiliza tu flujo de trabajo.
- Velocidad y eficiencia. Al ser una aplicación de terminal y estar escrita en Rust, tdf es sorprendentemente rápido y consume muy pocos recursos. Esto es ideal para sistemas con recursos limitados como una Raspberry Pi, o incluso en servidores VPS donde no tienes una interfaz gráfica.
- Búsqueda de texto. Puedes buscar contenido dentro de los PDFs, algo esencial para documentos largos.
- Hot reloading. Si un PDF se actualiza mientras lo estás viendo, tdf puede recargarlo automáticamente para mostrarte los cambios en tiempo real. Esto es especialmente interesante para trabajar con Typst, porque te va a permitir editar archivos en Neovim, y ver los resultados directamente en la terminal.
- Diseño adaptativo. Se ajusta al tamaño de tu terminal, ofreciendo una experiencia de visualización cómoda.
Uso y funcionamiento
Una vez has lanzado tdf
con algún documento el uso es tremendamente sencillo. Solo tendrás que memorizar unos pocos atajos de teclado para moverte en este editor. Además, los atajos de teclado siguen la convención de Vi y también puedes utilizar los cursores. Así,
- Con
l
yh
avanzas o retrocedes una página. - Con
j
yk
avanzas o retrocedes un conjunto de páginas. Como te comenté, se trata de una herramienta que es adaptativa. Esto quiere decir, que puedes estar viendo varias páginas a las vez. En este caso, al utilizarj
ok
avanzarás o retrocederás todas las páginas que estás viendo, en lugar de ir una a una. q
te permite salir de la herramienta.g
te lleva a la página que quieras del documento/
para realizar búsquedasn
yN
para navegar entre los resultados de la búsqueda.f
quita los bordes de la página, para que puedas ver el contenido del PDF sin distracciones.?
te muestra la ayuda de la herramienta, con todos los atajos de teclado disponibles.
Para iniciar tdf
desde una terminal solo tienes que escribir tdf
seguido por el nombre del documento pdf
, y directamente se abrirá la herramienta.
Instalación
Por ahora no está disponible en ArchLinux, al menos en el repositorio oficial. En el repositorio AUR, si que está, pero es un poco confuso. A mi me resulto cuanto menos confuso, así que finalmente me decanté por instalarlo directamente desde el código fuente, para lo que tienes que ejecutar la siguiente instrucción,
rustup install nightly && cargo +nightly install --git https://github.com/itsjunetime/tdf.git
Esta es probablemente lo mas complicado del uso de esta aplicación, precisamente, su instalación. Si bien, te tengo que decir, que en mi caso no tuve ningún problema a la hora de la instalación.
tdf frente a otros visores de PDF
Es imposible no caer en la tentación de comparar tdf
con otros visores PDF, empezando por aquellos que tienen interfaz gráfica, para continuar con lo de línea de comando. Empezando por los primeros,
- No necesitas salir de la terminal. Siempre mantienes el foco en la misma. De esta manera evitas distracciones, sobre todo si lo que estás utilizando como visor es el propio navegador.
- El consumo de recursos es mínimo. Al estar implementado en Rust, es muy eficiente y rápido. Pero vuelvo al caso anterior de utilizar un navegador como visor de PDF. El consumo de recursos comparado con un navegador es ínfimo.
- Te permite una mayor integración con tu ecosistema, con tu medio natural, con tu terminal. Un ejemplo claro es el uso de Yazi, donde como puedes imaginar la integración es total y absoluta.
Pero igualmente resulta ganador si lo comparas con otras herramientas de la línea de comandos,
- Por un lado, resulta mucho mas interactivo, y por supuesto mas visual, que simplemente convertir el pdf a simple texto, dejando de lado. La diferencia de utilizar
tdf<file>
apdftotext <file> - | less
es como del cielo a la tierra. - Pero además
tdf
es una herramienta que está diseñada específicamente para visualizar PDFs, mientras que otras herramientas de línea de comandos comoless
omore
son visores de texto genéricos. Esto significa quetdf
maneja mejor los elementos específicos de los PDFs, como imágenes, tablas y formatos complejos.
Combinando tdf con Yazi
Por supuesto, y como no podía ser de otra forma, puedes integrar tdf
con yazi
, consiguiendo exprimir al máximo lo mejor de los dos mundos.
Imagina que estás navegando entre tus archivos utilizando Yazi. Cuando localizas un archivo, directamente en Yazi, ya ves la portada del documento, pero si no tienes suficiente, si quieres ojear su contenido, lo puedes abrir directamente con tdf sin salir de la terminal. Hasta el momento, había esta utilizando zathura
, porque es una herramienta muy rápida, y para lo que estoy utilizando me viene fantástico. Pero claro, esto te obliga a salir de la terminal. Ahora con tdf
, ya no lo necesitas. Puedes seguir en la terminal.
Para combinarlo con Yazi, tienes que hacer un para de modificaciones en la configuración de Yazi. Tienes que añadir esta línea en la sección [opener]
,
pdf = [
{ run = 'tdf "$@"', desc = "tdf", block = true, for = "unix" },
]
Y dentro de la rules
de [open]
, añadir esta línea,
{ mime = "application/pdf", use = [ "pdf" ] },
De cualquier forma te recomiendo que le des un vistazo a mis dotfiles, para que veas como lo tengo configurado y que te resulte mas sencillo configurarlo con Yazi.
Conclusión
Ya te puedes imaginar, que esta es una herramienta que ha venido para quedarse. Una herramienta que ya he incorporado a mi caja de herramientas imprescindibles. Ahora me puedo mantener dentro de mi habitat natural sin tener la necesidad de salir ni siquiera para leer documentación… Veremos el tiempo que pasa para hacer lo mismo con vídeos.
Más información,