Saltar al contenido principal

PrintPruna (2026)

Extensión para Chrome y Firefox que permite marcar bloques HTML de una página para limpiarla antes de imprimirla a PDF.

PrintPruna (2026)

PrintPruna (2026)

Extensión para Chrome y Firefox que permite marcar bloques HTML de la página actual para limpiarla antes de imprimirla a PDF. Sin servidor, sin datos que salgan del navegador: todo ocurre dentro de la misma pestaña.

Disponible en la Chrome Web Store.

¿Qué hace?

Al hacer clic en el icono de la extensión se abre un pequeño menú con tres opciones:

  • Selecciona: marca el bloque que quieras conservar; el resto de la página se oculta. El bloque seleccionado se reajusta (~90% de ancho, centrado) para no perder legibilidad si dependía de un layout flex/grid con los hermanos ahora ocultos.
  • Elimina: marca un bloque concreto y lo hace desaparecer, manteniendo el resto de la página intacta. Se puede usar varias veces seguidas para eliminar más de un bloque.
  • Imprime: abre el diálogo de impresión del navegador directamente (window.print()), sin pasar por el teclado. Útil en páginas que bloquean Ctrl+P/Cmd+P con JavaScript.

En los modos "Selecciona" y "Elimina", el cursor cambia a una cruceta y los elementos se resaltan al pasar el ratón por encima (azul para "Selecciona", rojo para "Elimina"). Haz clic sobre el elemento deseado para aplicar la acción, o pulsa Esc en cualquier momento para salir del modo de marcado sin hacer ningún cambio. Para volver al estado original de la página, basta con recargarla (F5).

Bypass del bloqueo de Ctrl+P

Algunas páginas bloquean el atajo de impresión con JavaScript para evitar que el usuario imprima o guarde el contenido en PDF. Cuando se activa cualquier opción del menú, PrintPruna instala un listener de keydown a nivel de window en fase de captura, que se adelanta a los listeners que la página haya enganchado en document. Como la fase de captura recorre window → document → ..., el listener de la extensión se ejecuta siempre primero y detiene la propagación sin llamar a preventDefault(), dejando que el navegador haga su acción por defecto.

Es una mitigación "best effort": si la página engancha su listener directamente en window antes de que se inyecte la extensión, este método no puede superarlo. Para esos casos está la opción "Imprime" del menú, que llama a window.print() desde el "isolated world" de la extensión y no se ve afectada aunque la página haya sobrescrito window.print.

Arquitectura

Manifest V3 compartido entre Chrome y Firefox, con solo dos permisos (activeTab, scripting):

manifest.json     Manifest V3, compartido entre Chrome y Firefox
src/popup.html    Menú del icono con las opciones "Selecciona", "Elimina" e "Imprime"
src/popup.js      Inyecta el content script (si hace falta) y envía el modo elegido
src/content.js    Lógica de hover, selección/eliminación de bloques
src/content.css   Estilos del resaltado en hover y el cursor de marcado

Instalación en modo desarrollador

Chrome / Edge / Brave: abre chrome://extensions, activa "Modo de desarrollador" y haz clic en "Cargar extensión sin empaquetar", seleccionando la carpeta del proyecto.

Firefox: abre about:debugging#/runtime/this-firefox y haz clic en "Cargar complemento temporal", seleccionando el archivo manifest.json. La carga es temporal y se pierde al cerrar el navegador; para una instalación permanente habría que firmar la extensión vía addons.mozilla.org.

Stack tecnológico

  • Manifest V3
  • Chrome Extensions API (activeTab, scripting)
  • JavaScript vanilla, sin dependencias

Código fuente: github.com/albertsarle/print-pruna

Tecnologías

Manifest V3 (compartido Chrome/Firefox)Chrome Extensions API (activeTab, scripting)JavaScript vanilla

Logros

  • Extensión sin dependencias, compatible con Chrome, Edge, Brave y Firefox con el mismo manifest
  • Modo "Elimina" reutilizable varias veces seguidas para limpiar más de un bloque
  • Bypass del bloqueo de Ctrl+P: window.print() llamado desde el "isolated world" de la extensión, no interceptable por la página
  • Listener de teclado en fase de captura que se adelanta a los scripts de la página que intentan bloquear el atajo de impresión