Salta al contingut principal

PrintPruna (2026)

Extensió per a Chrome i Firefox que permet marcar blocs HTML d'una pàgina per netejar-la abans d'imprimir-la a PDF.

PrintPruna (2026)

PrintPruna (2026)

Extensió per a Chrome i Firefox que permet marcar blocs HTML de la pàgina actual per netejar-la abans d'imprimir-la a PDF. Sense servidor, sense dades que surtin del navegador: tot passa dins la mateixa pestanya.

Què fa?

En fer clic a la icona de l'extensió s'obre un petit menú amb tres opcions:

  • Selecciona: marca el bloc que vulguis conservar; la resta de la pàgina s'amaga. El bloc seleccionat es reajusta (~90% d'ample, centrat) perquè no perdi llegibilitat si depenia d'un layout flex/grid amb els germans ara amagats.
  • Elimina: marca un bloc concret i el fa desaparèixer, mantenint la resta de la pàgina intacta. Es pot fer servir diverses vegades seguides per eliminar més d'un bloc.
  • Imprimeix: obre el diàleg d'impressió del navegador directament (window.print()), sense passar pel teclat. Útil en pàgines que bloquegen Ctrl+P/Cmd+P amb JavaScript.

En els modes "Selecciona" i "Elimina", el cursor canvia a una creueta i els elements es ressalten en passar-hi el ratolí (blau per "Selecciona", vermell per "Elimina"). Fes clic sobre l'element desitjat per aplicar l'acció, o prem Esc en qualsevol moment per sortir del mode de marcatge sense fer cap canvi. Per tornar a l'estat original de la pàgina, n'hi ha prou amb recarregar-la (F5).

Bypass del bloqueig de Ctrl+P

Algunes pàgines bloquegen la drecera d'impressió amb JavaScript per evitar que l'usuari imprimeixi o desi el contingut en PDF. Quan s'activa qualsevol opció del menú, PrintPruna instal·la un listener de keydown a nivell de window en fase de captura, que s'avança als listeners que la pàgina hagi enganxat a document. Com que la fase de captura recorre window → document → ..., el listener de l'extensió s'executa sempre primer i atura la propagació sense cridar preventDefault(), deixant que el navegador faci la seva acció per defecte.

És una mitigació "best effort": si la pàgina enganxa el seu listener directament a window abans que s'injecti l'extensió, aquest mètode no el pot superar. Per a aquests casos hi ha l'opció "Imprimeix" del menú, que crida window.print() des de l'"isolated world" de l'extensió i no es veu afectada encara que la pàgina hagi sobreescrit window.print.

Arquitectura

Manifest V3 compartit entre Chrome i Firefox, amb només dos permisos (activeTab, scripting):

manifest.json     Manifest V3, compartit entre Chrome i Firefox
src/popup.html    Menú de la icona amb les opcions "Selecciona", "Elimina" i "Imprimeix"
src/popup.js      Injecta el content script (si cal) i envia el mode triat
src/content.js    Lògica de hover, selecció/eliminació de blocs
src/content.css   Estils del ressaltat en hover i el cursor de marcatge

Instal·lació en mode desenvolupador

Chrome / Edge / Brave: obre chrome://extensions, activa "Mode desenvolupador" i clica "Carrega l'extensió sense empaquetar", seleccionant la carpeta del projecte.

Firefox: obre about:debugging#/runtime/this-firefox i clica "Carrega el complement temporal", seleccionant el fitxer manifest.json. La càrrega és temporal i es perd en tancar el navegador; per una instal·lació permanent caldria signar l'extensió via addons.mozilla.org.

Stack tecnològic

  • Manifest V3
  • Chrome Extensions API (activeTab, scripting)
  • JavaScript vanilla, sense dependències

Codi font: github.com/albertsarle/print-pruna

Tecnologies

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

Assoliments

  • Extensió sense dependències, compatible amb Chrome, Edge, Brave i Firefox amb el mateix manifest
  • Mode "Elimina" reutilitzable diverses vegades seguides per netejar més d'un bloc
  • Bypass del bloqueig de Ctrl+P: window.print() cridat des de l'"isolated world" de l'extensió, no interceptable per la pàgina
  • Listener de teclat en fase de captura que s'avança als scripts de la pàgina que intenten bloquejar la drecera d'impressió