25 puntos por GN⁺ 2025-08-16 | 1 comentarios | Compartir por WhatsApp
  • EmbedPDF es un visor de PDF open source que puede integrarse fácilmente en cualquier proyecto JavaScript
  • Ofrece compatibilidad con diversos frameworks frontend como React, Vue, Svelte, Preact y Vanilla JS
  • Incluye funciones avanzadas como anotaciones, resaltado, redacción real de texto, búsqueda, zoom y rotación
  • Su desplazamiento virtual y arquitectura de plugins mejoran tanto el rendimiento como la extensibilidad
  • Con licencia MIT, cualquiera puede usarlo y contribuir libremente

Resumen del proyecto open source de visor de PDF EmbedPDF

  • EmbedPDF es un visor de PDF open source, independiente del framework, que puede insertarse fácilmente en cualquier proyecto JavaScript
  • Usa licencia MIT y destaca por su compatibilidad con frameworks frontend modernos como React, Vue, Svelte, Preact y Vanilla JS
  • Ofrece una experiencia de lectura moderna y una API amigable para desarrolladores

Funciones principales

  • Soporte de anotaciones: ofrece varias funciones de anotación como resaltado, notas adhesivas, texto libre e ink
  • Redacción real: al usar la función de redacción, el contenido real dentro del documento se elimina por completo como medida de seguridad
  • Incluye funciones clave de manipulación de PDF como búsqueda, selección de texto, zoom y rotación
  • Con scroll suave y virtualizado, permite visualizar documentos grandes sin degradación del rendimiento
  • La arquitectura basada en plugins y los plugins con tree shaking garantizan excluir código innecesario y facilitar la extensión

Documentación y demo

  • La documentación oficial, guía de instalación, referencia de API y ejemplos están disponibles en https://www.embedpdf.com
  • En la demo en vivo se pueden subir archivos PDF directamente o probar las funciones con documentos de ejemplo

Open source y licencia

  • Con licencia MIT, el código fuente puede usarse libremente y acepta contribuciones
  • Incluye PDFium, y esa parte está sujeta a la Apache License 2.0

Comunidad y contribuciones

  • Se da la bienvenida a la participación en la comunidad open source y a diversos tipos de contribuciones
  • La comunicación entre desarrolladores está disponible mediante la guía de Contributing y Github Discussions

Importancia y diferenciadores del proyecto

  • Como alternativa a los visores de PDF comerciales existentes, permite que cualquiera incorpore fácilmente una función de visor de PDF en sistemas internos o en un SaaS
  • Su alta compatibilidad con distintos frameworks y su estructura moderna y modular son sus principales diferenciadores
  • Es un ejemplo poco común de software open source que ofrece funciones avanzadas de procesamiento de PDF como la redacción

1 comentarios

 
GN⁺ 2025-08-16
Comentarios en Hacker News
  • En realidad, el trabajo importante lo hace PDFium; se señala que PDFium es un proyecto que Google adquirió de Foxit y siguió desarrollando directamente, y que hoy se usa en Chrome (no es para restarle mérito al trabajo que se está discutiendo, solo para mencionar que no es un parser de PDF escrito completamente desde cero)
    • Creo que muchos visores de PDF, incluidos productos comerciales, están construidos sobre PDFium
  • Me pregunto por qué desarrollaron este proyecto cuando ya existe Mozilla PDF.js https://github.com/mozilla/pdf.js (no es una crítica; simplemente tengo curiosidad, porque hay muchísimas razones para volver a crear algo que ya existe)
    • El objetivo principal era crear un visor de PDF que los desarrolladores pudieran integrar fácilmente en sus sitios web; en algunos casos de uso, PDF.js es difícil o complejo de personalizar y extender
    • Si necesitas marcado de PDF (anotaciones, formas, comentarios), las opciones que vienen a la mente son construirlo por tu cuenta o usar editores de PDF por suscripción bastante caros; de hecho, he escuchado que para los equipos que integraron Apryse, el costo de solo habilitar edición básica de PDF ya es una carga muy grande
    • Incluso con una mirada rápida se nota que tiene funciones distintas de las de los productos existentes, como los comentarios en anotaciones
    • Si abres el documento de demostración en iPad o iPhone, verás que la función Print Preview solo funciona en dispositivos de escritorio
    • Al ver los 402 issues abiertos, uno puede imaginar la enorme complejidad de los PDF y el esfuerzo que implica manejar todas esas funciones
  • Antes hice un side project con un visor de PDF integrado; la primera versión usaba pdf.js, pero al hacer zoom rápido se trababa y era difícil mantener el foco, así que lo implementé yo mismo con C++ pdfium y renderizado con Metal; se puede ver en este video de demostración, donde apliqué un enfoque de tiling para equilibrar memoria y rendimiento; no sabía que pdfium también tuviera este nivel de rendimiento en WebAssembly y, la verdad, desarrollar UI en la web me resulta más cómodo que en C++
    • Honestamente, la demo se siente mucho más rápida y fluida; el zoom está realmente muy bien logrado, y al verlo me dieron ganas de volver a meterme a desarrollarlo e intentar mejorar el rendimiento
  • Estoy usando pdf.js (17 MB, 158 páginas, muchas imágenes, en Windows) y comparto algunos problemas que encontré al probarlo
    • Los enlaces no funcionan
    • Los marcadores se muestran, pero no funcionan
    • En Firefox no se puede seleccionar texto
    • En Chrome, el clic medio (para desplazamiento) termina activando la selección de texto
    • En pdf.js el scroll va bien, pero en este producto al desplazarse la pantalla se ve borrosa durante cientos o incluso milisegundos, con una degradación de calidad severa; si saltas varias páginas con la tecla End y similares, solo aparece una pantalla en blanco
    • En FF no funcionan arriba/abajo, page up/down ni home/end (izquierda/derecha sí)
  • Lo probé rápidamente y confirmé que en Firefox las anotaciones no funcionaban en absoluto, mientras que en Chrome sí funcionaban bien todas las funciones de anotación, como subrayado y resaltado
    • Aún no había podido probar las anotaciones en Firefox, así que gracias por avisar; qué bueno que en Chrome funcionen sin problema, y pienso revisarlo pronto
  • Me pregunto si soporta la edición de outline embebido (anotaciones); siempre ha sido la función que más he extrañado en los visores/editores de PDF, y cada vez que recibo un PDF sin outline siento que la necesito
  • En la combinación Linux + Firefox, las herramientas de anotación/redacción de la demo no funcionaban para nada; en cambio, en Chromium sí funcionaban en la misma máquina
    • Acabo de corregir el problema que ocurría en Firefox, y ahora tanto en Linux + Firefox como en Chromium las funciones de anotación y redacción ya funcionan correctamente
  • La documentación también es excelente, y me gustó especialmente el concepto de librería headless de React; permite añadir fácilmente UI y funciones personalizadas. Preguntan qué tan difícil sería resaltar/subrayar automáticamente ciertos términos y mostrar un componente personalizado al hacer clic o hover
    • Se puede hacer muy fácilmente; esa funcionalidad ya está implementada. Puedes renderizar directamente selectionMenu y componentes personalizados en AnnotationLayer; si quieres profundizar más, te invitan a preguntar en el canal de Discord
  • El producto se ve impresionante; la duda es cómo planean sostener el desarrollo de un visor de PDF gratuito con tantas funciones, y si piensan ofrecer funciones empresariales, hosting de PDF u otro modelo de monetización
    • La respuesta a todo eso es “sí”: el visor de PDF del lado del cliente seguirá siendo gratuito y con licencia MIT, pero planean ofrecer como servicios pagos funciones adicionales como hosting de PDF y analítica/control de acceso para empresas
  • En general funciona bien, pero al cambiar la herramienta de redacción al modo de visualización (con la línea roja todavía activa), la redacción seguía activada y no se podía hacer scroll; se solucionaba recargando
    • Es buen feedback y lo van a corregir pronto; en móviles, desactivar el scroll en modo de redacción es un comportamiento intencional por la comodidad al seleccionar áreas con precisión, pero al cambiar a la pestaña de visualización siempre debería salir del modo de redacción; agradecen que lo hayan detectado