[{"data":1,"prerenderedAt":240},["ShallowReactive",2],{"sideproject-ca-print-pruna-chrome-extension":3},{"id":4,"title":5,"body":6,"date":209,"description":210,"extension":211,"featured":212,"image":213,"locale":214,"meta":215,"navigation":228,"order":229,"path":230,"repo":231,"seo":232,"status":233,"stem":234,"technologies":235,"url":231,"__hash__":239},"sideprojects\u002Fca\u002Fsideprojects\u002Fprint-pruna-chrome-extension.md","PrintPruna (2026)",{"type":7,"value":8,"toc":201},"minimark",[9,13,17,22,25,61,68,72,95,108,112,123,133,137,147,167,171,187,190],[10,11,5],"h1",{"id":12},"printpruna-2026",[14,15,16],"p",{},"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.",[18,19,21],"h2",{"id":20},"què-fa","Què fa?",[14,23,24],{},"En fer clic a la icona de l'extensió s'obre un petit menú amb tres opcions:",[26,27,28,36,42],"ul",{},[29,30,31,35],"li",{},[32,33,34],"strong",{},"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\u002Fgrid amb els germans ara amagats.",[29,37,38,41],{},[32,39,40],{},"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.",[29,43,44,47,48,52,53,56,57,60],{},[32,45,46],{},"Imprimeix",": obre el diàleg d'impressió del navegador directament (",[49,50,51],"code",{},"window.print()","), sense passar pel teclat. Útil en pàgines que bloquegen ",[49,54,55],{},"Ctrl+P","\u002F",[49,58,59],{},"Cmd+P"," amb JavaScript.",[14,62,63,64,67],{},"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 ",[49,65,66],{},"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).",[18,69,71],{"id":70},"bypass-del-bloqueig-de-ctrlp","Bypass del bloqueig de Ctrl+P",[14,73,74,75,78,79,82,83,86,87,90,91,94],{},"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 ",[49,76,77],{},"keydown"," a nivell de ",[49,80,81],{},"window"," en fase de captura, que s'avança als listeners que la pàgina hagi enganxat a ",[49,84,85],{},"document",". Com que la fase de captura recorre ",[49,88,89],{},"window → document → ...",", el listener de l'extensió s'executa sempre primer i atura la propagació sense cridar ",[49,92,93],{},"preventDefault()",", deixant que el navegador faci la seva acció per defecte.",[14,96,97,98,100,101,103,104,107],{},"És una mitigació \"best effort\": si la pàgina enganxa el seu listener directament a ",[49,99,81],{}," 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 ",[49,102,51],{}," des de l'\"isolated world\" de l'extensió i no es veu afectada encara que la pàgina hagi sobreescrit ",[49,105,106],{},"window.print",".",[18,109,111],{"id":110},"arquitectura","Arquitectura",[14,113,114,115,118,119,122],{},"Manifest V3 compartit entre Chrome i Firefox, amb només dos permisos (",[49,116,117],{},"activeTab",", ",[49,120,121],{},"scripting","):",[124,125,130],"pre",{"className":126,"code":128,"language":129},[127],"language-text","manifest.json     Manifest V3, compartit entre Chrome i Firefox\nsrc\u002Fpopup.html    Menú de la icona amb les opcions \"Selecciona\", \"Elimina\" i \"Imprimeix\"\nsrc\u002Fpopup.js      Injecta el content script (si cal) i envia el mode triat\nsrc\u002Fcontent.js    Lògica de hover, selecció\u002Feliminació de blocs\nsrc\u002Fcontent.css   Estils del ressaltat en hover i el cursor de marcatge\n","text",[49,131,128],{"__ignoreMap":132},"",[18,134,136],{"id":135},"installació-en-mode-desenvolupador","Instal·lació en mode desenvolupador",[14,138,139,142,143,146],{},[32,140,141],{},"Chrome \u002F Edge \u002F Brave",": obre ",[49,144,145],{},"chrome:\u002F\u002Fextensions",", activa \"Mode desenvolupador\" i clica \"Carrega l'extensió sense empaquetar\", seleccionant la carpeta del projecte.",[14,148,149,142,152,155,156,159,160,107],{},[32,150,151],{},"Firefox",[49,153,154],{},"about:debugging#\u002Fruntime\u002Fthis-firefox"," i clica \"Carrega el complement temporal\", seleccionant el fitxer ",[49,157,158],{},"manifest.json",". La càrrega és temporal i es perd en tancar el navegador; per una instal·lació permanent caldria signar l'extensió via ",[161,162,166],"a",{"href":163,"rel":164},"https:\u002F\u002Faddons.mozilla.org",[165],"nofollow","addons.mozilla.org",[18,168,170],{"id":169},"stack-tecnològic","Stack tecnològic",[26,172,173,176,184],{},[29,174,175],{},"Manifest V3",[29,177,178,179,118,181,183],{},"Chrome Extensions API (",[49,180,117],{},[49,182,121],{},")",[29,185,186],{},"JavaScript vanilla, sense dependències",[188,189],"hr",{},[14,191,192,195,196],{},[32,193,194],{},"Codi font:"," ",[161,197,200],{"href":198,"rel":199},"https:\u002F\u002Fgithub.com\u002Falbertsarle\u002Fprint-pruna",[165],"github.com\u002Falbertsarle\u002Fprint-pruna",{"title":132,"searchDepth":202,"depth":202,"links":203},2,[204,205,206,207,208],{"id":20,"depth":202,"text":21},{"id":70,"depth":202,"text":71},{"id":110,"depth":202,"text":111},{"id":135,"depth":202,"text":136},{"id":169,"depth":202,"text":170},"2026-09-22T12:00:00Z","Extensió per a Chrome i Firefox que permet marcar blocs HTML d'una pàgina per netejar-la abans d'imprimir-la a PDF.","md",false,"\u002Fimages\u002Fsideprojects\u002Fprint-pruna-chrome-extension-banner.png","ca",{"slug":216,"type":217,"categories":218,"tags":219,"achievements":223,"githubUrl":198},"print-pruna-chrome-extension","sideproject",[217],[220,221,175,222],"Chrome Extension","Firefox Extension","JavaScript",[224,225,226,227],"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ó",true,1,"\u002Fca\u002Fsideprojects\u002Fprint-pruna-chrome-extension",null,{"title":5,"description":210},"published","ca\u002Fsideprojects\u002Fprint-pruna-chrome-extension",[236,237,238],"Manifest V3 (compartit Chrome\u002FFirefox)","Chrome Extensions API (activeTab, scripting)","JavaScript vanilla","7l_MLyeOk46LRQq_iEbMPm9DSEb0pr0BUJJX4_ieGRw",1790062380917]