Articulo de referencia

PDF.js

{{cite web |title = Releases · mozilla/pdf.js |url = https://github.com/mozilla/pdf.js/releases |access-date = 12 March 2021 |website = [[GitHub]]}} "},"latest release version":...

PDF.js es una biblioteca de JavaScript que renderiza archivos en formato PDF ( Portable Document Format ) utilizando HTML5 Canvas , que cumple con los estándares web . El proyecto está liderado por Mozilla Corporation, después de que Andreas Gal lo lanzara (inicialmente como un experimento) en 2011.

Historia y aplicación

PDF.js se creó originalmente como una extensión para Firefox [ 4 ] y está incluido en Firefox desde 2012 (versión 15), [ 5 ] [ 6 ] y habilitado por defecto desde 2013 (versión 19). [ 7 ] [ 8 ] Se añadió a Firefox para Android en 2023 (versión 111). [ 9 ] [ 10 ]

El proyecto se creó para proporcionar una forma de visualizar documentos PDF de forma nativa en el navegador web, lo que evita posibles riesgos de seguridad al abrir documentos PDF fuera de un navegador, ya que el código para mostrar el documento se ejecuta en un entorno aislado dentro del navegador. [ 11 ] Su implementación utiliza el elemento Canvas de HTML5 , lo que permite velocidades de renderizado rápidas. [ 11 ]

PDF.js también se utiliza en Thunderbird , [ 12 ] ownCloud , [ 13 ] Nextcloud , [ 14 ] [ 15 ] y está disponible como extensión de navegador para Google Chrome / Chromium , [ 16 ] Pale Moon [ 17 ] [ 18 ] y SeaMonkey . [ 18 ] [ 19 ]

Se puede integrar o incorporar en una aplicación web o nativa para permitir la representación y visualización de archivos PDF, y permite usos avanzados como la representación del lado del servidor .

Muchas aplicaciones web, incluidas Dropbox , [ 20 ] Slack , [ 21 ] y LinkedIn Learning, [ 22 ] integran PDF.js para permitir la vista previa de documentos PDF.

Comportamiento

Según una evaluación comparativa de Mozilla , PDF.js tiene un buen rendimiento para visualizar la mayoría de los archivos PDF comunes, aunque puede presentar algunos problemas con documentos grandes o con muchos gráficos. [ 23 ]

PDF.js admite la mayoría de las especificaciones de PDF (incluido el soporte de formularios o XFA [ 24 ] ), pero algunas características aún no se han implementado, lo que puede afectar el comportamiento de renderizado dependiendo de las características que utilice el documento. [ 25 ]

Algunas características de PDF/X o funciones opcionales de PDF que no son compatibles con PDF.js incluyen:

La comunidad de colaboradores de PDF.js también señala que el comportamiento de PDF.js en el navegador varía según la compatibilidad del navegador con las funciones requeridas por PDF.js. [ 29 ] El rendimiento y la fiabilidad serán óptimos en Chrome y Firefox, que cuentan con soporte completo y están sujetos a pruebas automatizadas.

Seguridad

Debido a que PDF.js analiza documentos no confiables dentro del navegador, ha sido objeto de varias vulnerabilidades divulgadas. En 2015, CVE-2015-2743 documentó privilegios excesivos para trabajadores internos en PDF.js, lo cual se solucionó en Firefox 39 y las ramas ESR 31.8 y 38.1. [ 30 ] [ 31 ] Un módulo Metasploit relacionado explotó una inyección de JavaScript privilegiado en Firefox 35 y 36 a través del visor de PDF. [ 32 ]

En 2018, CVE-2018-5158 reveló que PDF.js no sanitizaba suficientemente las funciones de calculadora PostScript , lo que permitía que archivos PDF manipulados inyectaran JavaScript con los privilegios de la página de incrustación. [ 33 ] [ 34 ] [ 35 ]

Un problema más ampliamente difundido, CVE-2024-4367, fue revelado en mayo de 2024 por investigadores de Codean Labs. [ 36 ] La vulnerabilidad proviene de una verificación de tipo faltante en el manejo de fuentes de PDF.js, donde un tipo personalizado FontMatrixincrustado en metadatos PDF podría ser convertido en una cadena y alcanzar eval, lo que permite la ejecución arbitraria de JavaScript dentro del contexto de PDF.js. [ 37 ] Mozilla abordó el problema en PDF.js 4.2.67, Firefox 126, Firefox ESR 115.11 y Thunderbird 115.11. [ 38 ] La Oficina de Servicios de Tecnología de la Información del Estado de Nueva York y la Agencia de Ciberseguridad de Singapur emitieron avisos nacionales . [ 39 ] [ 40 ]

Véase también

Referencias

  1. 1 2 "Versiones · mozilla/pdf.js" . GitHub . Consultado el 12 de marzo de 2021 .
  2. "Versión 6.1.200" . 27 de junio de 2026. Consultado el 28 de junio de 2026 .
  3. "pdf.js/LICENSE en master · mozilla/pdf.js" . GitHub . 17 de febrero de 2022.
  4. "Visor de PDF (descontinuado)" . addons.mozilla.org . Archivado del original el 5 de diciembre de 2015. Consultado el 2 de diciembre de 2015 .
  5. Parfeni, Lucian (30 de abril de 2012). "PDF.JS y el panel del administrador de descargas se incorporan a Firefox 15" . Softpedia . SoftNews . Consultado el 15 de mayo de 2026 .
  6. ^ Blagoveschenskiy, Anton (29 de agosto de 2012). "Вышла новая версия браузера Firefox 15" [ Lanzada la nueva versión 15 del navegador Firefox ] . Rossiyskaya Gazeta (en ruso) . Consultado el 9 de septiembre de 2012 .
  7. "Error 773397: Deshabilitar pdf.js antes de FF15 beta 5" . bugzilla.mozilla.org . Consultado el 15 de mayo de 2026 .
  8. "Notas de la versión de Firefox 19.0" . mozilla.org . Consultado el 30 de abril de 2013 .
  9. "Firefox para Android 111.0, ver todas las nuevas funciones, actualizaciones y correcciones" . www.mozilla.org . Consultado el 19 de abril de 2024 .
  10. Adhikari, Sumit (16 de marzo de 2023). "Firefox 111 para Android ofrece protección total de cookies y visor de PDF" . Noticias de Android . Consultado el 15 de mayo de 2026 .
  11. 1 2 Shankland, Stephen (24 de junio de 2011). "Mozilla busca ofrecer PDF sin complicaciones en la web" . CNET . Recuperado el 24 de mayo de 2022 .
  12. "810815 - Integrar pdf.js en Thunderbird" . bugzilla.mozilla.org . Consultado el 28 de enero de 2022 .
  13. owncloud/files_pdfviewer , ownCloud, 8 de febrero de 2020 , consultado el 28 de marzo de 2020
  14. nextcloud/files_pdfviewer , Nextcloud, 18 de marzo de 2020 , consultado el 28 de marzo de 2020
  15. "Visor de PDF - Aplicaciones - App Store - Nextcloud" . apps.nextcloud.com . Consultado el 28 de marzo de 2020 .
  16. "Visor de PDF" . Chrome Web Store . Consultado el 15 de mayo de 2026 .
  17. "Complementos - Visor de PDF de la Luna" . Luna Pálida - Complementos . Archivado del original el 3 de enero de 2020. Consultado el 4 de mayo de 2021 .
  18. 1 2 "IsaacSchemm/pdf.js-seamonkey: bifurcación de SeaMonkey de pdf.js" . GitHub . Archivado del original el 6 de diciembre de 2020. Recuperado el 4 de mayo de 2021 .
  19. "Visor de PDF para SeaMonkey" . Complementos para SeaMonkey . 25 de abril de 2020. Archivado del original el 13 de enero de 2020. Consultado el 13 de enero de 2020 .
  20. Lauraharrisneal. "Anotaciones en las vistas previas de documentos" . dropbox.tech . Consultado el 5 de agosto de 2021 .
  21. "Lo que te importa, nos importa a nosotros. - Slack Engineering" . Slack Engineering . 16 de noviembre de 2016. Consultado el 5 de agosto de 2021 .
  22. Rawat, Anurag (24 de abril de 2019). "Bajo el capó: Aprender con documentos" . engineering.linkedin.com . Recuperado el 5 de agosto de 2021 .
  23. Bochenek, Thorben (8 de mayo de 2014). "¿Qué tan rápido es PDF.js? – Mozilla Hacks - el blog para desarrolladores web" . Mozilla . Recuperado el 15 de mayo de 2026 .
  24. «1706133 - (pdf-xfa) [ meta ] Soporte XFA» . bugzilla.mozilla.org . Consultado el 28 de enero de 2022 .
  25. "Guía para evaluar la representación de PDF.js" . PDFTron . Consultado el 5 de agosto de 2021 .
  26. "Compatibilidad de perfiles ICC para imágenes · Problema n.° 2856 · mozilla/pdf.js" . GitHub . Consultado el 24 de mayo de 2022 .
  27. "Soporte para sobreimpresión · Problema n.° 7360 · mozilla/pdf.js" . GitHub . Consultado el 24 de mayo de 2022 .
  28. "Problema sobre grupos knockout. · Problema n.° 3136 · mozilla/pdf.js" . GitHub . Consultado el 24 de mayo de 2022 .
  29. "Preguntas frecuentes · Wiki de mozilla/pdf.js" . GitHub . Consultado el 5 de agosto de 2021 .
  30. "CVE-2015-2743" . Detalles de CVE . Archivado del original el 4 de junio de 2016. Consultado el 15 de mayo de 2026 .
  31. "cve-2015-2743" . nvd.nist.gov . Consultado el 15 de mayo de 2026 .
  32. "Inyección privilegiada de JavaScript en 'pdf.js' de Mozilla Firefox (Metasploit)" . Base de datos de exploits . Offensive Security . 2015. EDB-ID:37958. Archivado del original el 12 de septiembre de 2015. Consultado el 15 de mayo de 2026 .
  33. "CVE-2018-5158" . Base de datos de avisos de GitHub . Consultado el 15 de mayo de 2026 .
  34. "CVE-2018-5158" . nvd.nist.gov . Consultado el 15 de mayo de 2026 .
  35. "CVE-2018-5158" . Detalles de CVE . Archivado del original el 18 de agosto de 2019. Consultado el 15 de mayo de 2026 .
  36. "cve-2024-4367" . nvd.nist.gov . Consultado el 15 de mayo de 2026 .
  37. Suijten, Thomas (20 de mayo de 2024). "CVE-2024-4367: Ejecución arbitraria de JavaScript en PDF.js" . Codean Labs . Archivado del original el 20 de junio de 2024. Recuperado el 15 de mayo de 2026 .
  38. "Vulnerabilidades de seguridad corregidas en Firefox 126 — Aviso de seguridad de la Fundación Mozilla 2024-21" . Mozilla . 14 de mayo de 2024. Archivado del original el 15 de junio de 2024. Consultado el 15 de mayo de 2026 .
  39. "Una vulnerabilidad en Mozilla PDF.js podría permitir la ejecución de código arbitrario" . its.ny.gov . Oficina de Servicios de Tecnología de la Información del Estado de Nueva York. 2024. Consultado el 15 de mayo de 2026 .
  40. "Vulnerabilidad de alta gravedad en Mozilla PDF.js" . Agencia de Ciberseguridad de Singapur . 2024. Archivado del original el 13 de junio de 2025. Consultado el 15 de mayo de 2026 .
  • Sitio web oficialEdita esto en Wikidata
  • "Ver archivos PDF en Firefox" . Ayuda de Firefox . Mozilla.
  • Chris Jones; Andreas Gal ; et  al. (15 de junio de 2011). "pdf.js: Renderizado de PDF con HTML5 y JavaScript" . Blog de Andreas Gal .
  • Catalin Cimpanu (3 de mayo de 2012). "Script del día: pdf.js" . Softpedia . Archivado del original el 13 de enero de 2015. Consultado el 3 de enero de 2020 .