Toda la conversion de imagenes (lectura de JPG/PNG/WEBP/AVIF/BMP, miniaturas,
normalizacion a JPEG con la calidad elegida) la hace sharp
(libvips), que es una dependencia npm con binarios precompilados — no un
.exe externo que haya que descargar, instalar o mandar por separado
— es una app Electron comun, con la misma huella que miles de apps
legitimas (VS Code, Slack, Discord, y el propio YT-DLP Minimalist).
El armado del PDF lo hace pdf-lib (tambien npm, sin binarios externos).
Both files were scanned on VirusTotal and came back clean:
- Installer: 0/68 detections — View results
- Portable: 0/63 detections — View results
- Elegir carpeta / agregar carpetas o imagenes sueltas adicionales
- Incluir subcarpetas (recursivo)
- Lista de imagenes reordenable: botones Subir/Bajar/Quitar/Quitar todo, y ahora tambien arrastrando los items con el mouse (drag&drop nativo del navegador, sin dependencias extra)
- Vista de miniaturas (boton "Miniaturas")
- Calidad de imagen ajustable (1-100)
- Nombre de PDF y ruta de salida opcionales
- Barra de progreso durante la conversion
- Abrir con / arrastrar y soltar una carpeta o imagenes desde el Explorador
- Orden natural de archivos (Imagen2 antes que Imagen10)
- Descomprimir
.zip/.cbzy agregar las imagenes de adentro .rar/.cbr: soportado si el usuario tiene 7-Zip o WinRAR instalados (se detectan automaticamente las rutas tipicas de instalacion:Program Files\7-Zip\7z.exe,Program Files\WinRAR\UnRAR.exe, etc., igual que hacia la version PowerShell). Si no hay ninguno instalado se avisa con un mensaje claro en vez de fallar en silencio. No se distribuye ningun binario de RAR con la app (evita el tema de licencias).- Ventana transparente/acrilica:
BrowserWindowse crea conframe: falseytransparent: true. El desenfoque nativo (backgroundMaterial: 'acrylic'en Windows 11 22H2+,vibrancyen macOS) esta soportado y detectado enmain.js, pero queda desactivado por defecto (USAR_BLUR_NATIVO = false) porque su intensidad es fija y no responde a la barra "Desenfoque" del panel de opciones; el blur activo por defecto es el de CSS (backdrop-filter), que si es ajustable. Barra de titulo propia con icono, minimizar y cerrar (arrastrable via-webkit-app-region: drag), esquinas redondeadas (roundedCorners: true) y un tinte semitransparente por CSS como respaldo para cuando el acrilico no esta disponible (Windows 10, Linux, etc. — en esos casos se ve un fondo oscuro solido normal, sin romper nada).
PDF Creator se puede agregar al menu contextual de Windows usando Nilesoft Shell (version Canary, que es la que soporta la sintaxis usada aca). Con esto aparece una opcion "Convertir a PDF..." al hacer clic derecho sobre archivos o carpetas seleccionados, junto a otras herramientas como FFmpeg o ImageMagick si ya las tenes integradas.
En contextmenu/app_PDFCreator.nss esta el script listo para usar:
item(title='Convertir a PDF...' type='file|dir|back.dir' mode='multiple' image=image.res('C:\Program Files\PDF Creator\PDF Creator.exe', 0)
tip='Convierte imagenes seleccionadas a un unico PDF con la app Convertidor a PDF'
cmd='C:\Program Files\PDF Creator\PDF Creator.exe' arg=sel(true," "))
- Instala Nilesoft Shell Canary (no la version estable, esta sintaxis requiere Canary).
- Copia
contextmenu/app_PDFCreator.nssa la carpeta de imports de Shell (normalmenteC:\Program Files\Nilesoft Shell\imports\). - Asegurate de que la ruta del
.exeen el script (C:\Program Files\PDF Creator\PDF Creator.exe) coincida con donde instalaste PDF Creator; si la cambiaste durante la instalacion, edita esa linea. - Reinicia el explorador de Windows (o ejecuta
shell.reloaddesde Shell) para que el nuevo item aparezca en el menu contextual.
Una vez activo, podes seleccionar una o varias imagenes (o una carpeta, comprimido) y elegir "Convertir a PDF..." directamente desde el clic derecho.
- Node.js 18 o superior
npm install
npm startnpm run distGenera un instalador .exe (NSIS) y una version portable en dist/, igual
que YT-DLP Minimalist. No hace falta empaquetar nada mas: sharp y
pdf-lib quedan incluidos en el paquete de Electron automaticamente.
Falta el icono: poné tu .ico en assets/icon.ico antes de compilar (o
sacá la linea "icon": "assets/icon.ico" de package.json si todavia no
tenés uno).
