La historia open source detrás de PDF Cleaner
De una herramienta en Rust a una app web en el navegador — la historia y la filosofía detrás de PDF Cleaner.
El linaje de PDF Cleaner empieza en un fin de semana lluvioso, en un piso compartido de estudiantes de ingeniería en España, con una carpeta de Descargas repleta de PDFs de Wuolah y una impresión ya escupida en la que la mitad de las hojas eran publicidad. La primera versión — llamada gulagcleaner — eran 200 líneas de Rust en línea de comandos: leía un PDF, buscaba una decena de palabras clave en español y descartaba las páginas marcadas. Se publicó en GitHub sin plan de negocio, sin roadmap y sin más ambición que dejar de gastar tinta.
Del terminal al navegador: por qué reescribirlo
Una utilidad de terminal es un regalo para desarrolladores y una barrera insuperable para el 95 % de los estudiantes que sacarían provecho de ella. Esta web reconstruye la misma idea como app pura de navegador: sin instalar, sin subir, sin esperar cola. Cada capa de detección corre en JavaScript directamente en tu pestaña, apoyada en las mismas piezas de base (pdf-lib para reescribir el PDF, pdfjs-dist para extraer el texto, y una compilación WebAssembly del motor original para la parte fina de la detección).
Tres reglas que no vamos a romper
1. Cero subidas al servidor. Jamás. El día que enviemos un solo byte de un PDF de usuario a nuestro servidor, nos habremos convertido en lo mismo que veníamos a sustituir. Si una función no puede correr en el navegador, no la lanzamos.
2. Cero patrones oscuros. Sin modal de newsletter, sin "regístrate para desbloquear más de 10 páginas", sin banners publicitarios propios encima del limpiador, sin rastreadores de terceros. El sello que dice gratis para siempre es literal, no marketing.
3. Solo se descartan páginas enteras. En cuanto empecemos a repintar, recortar o modificar el contenido de una página, estaremos alterando el trabajo de alguien. La línea se queda en el borrado por página completa, no negociable.
Qué viene después
En roadmap: más firmas de detección para plataformas francesas e italianas, internacionalización a portugués e inglés como idiomas de primera clase, y una pequeña biblioteca de "perfiles" compartibles para que un grupo de estudio se ponga de acuerdo sobre qué cuenta como anuncio en su universidad. Todo lo que se pueda hacer en el navegador, lo haremos en el navegador. Lo que no, sencillamente no lo haremos.