pdf.js alcanzó su primer hito

Comentarios 4

El pasado viernes, pdf.js alcanzó el estado que se quería que tuviera antes de hacer pública la noticia: renderiza el papel de Tracemonkey perfectamente, por lo tanto, lo estamos anunciando. El equipo de desarrollo esta muy emocionado por el progreso del proyecto desde que fue anunciado hace apenas dos semanas. A continuación se muestra una comparación entre la primera versión que se dio a conocer y la reciente versión 0.2. Cada par de capturas de pantalla muestra encima, la anterior y abajo la nueva versión.

0.1-0.2-page1

Esta es la demostración más dramática de la mayor funcionalidad en la versión 0.2: la carga de las fuentes Type 1 (De hecho, las diferencias entre las capturas anteriores podrían haber sido incluso más dramáticas, excepto que se trabajó muy duro en el código para la selección de la fuente utilizada en el texto para la mayor parte del cuerpo del documento, para así, poderse enfocar más fácilmente en otras funcionalidades no implementadas aún). La carga dinámica de las fuentes Type 1 en una aplicación web fue un gran reto.

0.1-0.2-page2

La figura 2 en esta pagina, muestra varias partes del renderizado de pdf.js.

  • La mejora muy evidente en las etiquetas de los elementos de la figura en la versión 0.2 se debe a la carga en pdf.js de fuentes TrueType correctamente.
  • Las sombras bajo las cajas redondeadas, son imágenes enmascaradas que implementó Shaon.
  • Las lineas discontinuas son dibujadas usando la nueva API que se ha introducido al <canvas> de Firefox y se encuentran en proceso de estandarización.

0.1-0.2-page3

La figura 4 es otra demostración dramática de la diferencia de cargar fuentes Type 1 y medirlas con precisión.

0.1-0.2-page11

Las coloridas barras son gracias Shaon también; usan patrones de sombreado (personalizado, funciones con parámetros) que pdf.js evalúa todo en JS dibujando los valores de los píxeles resultantes en canvas. Estas barras en particular son patrones «sombras en ejes» también conocidos como «degradados lineales». El texto en la descripción también luce mucho mejor en la versión 0.2, mezcla distintos tipos de fuentes, que están siendo cargadas gracias a Vivien.

0.1-0.2-page13

En la figura anterior, vemos una demostración de algunas nuevas características de la version 0.2. Las etiquetas en la figura están siendo dibujadas porque pdf.js ahora carga fuentes TrueType. Los segmentos de barras contenidos en el gráfico están siendo fielmente renderizados ahora gracias a que Shaon implementó rellenos de mosaicos de patrones.

0.1-0.2-nav

Y por último pero no menos importante, es obvio en las imágenes anteriores que la interfaz de usuario es mucho mas agradable y funcional en la versión 0.2. Es el trabajo justindarc. Esta captura de pantalla muestra una excelente funcionalidad del visor pdf.js: el «panel de visualización», que sale a flote cuando pasamos el puntero por encima de la barra oscura en la parte izquierda de la página. También se puede notar en la última captura que se muestran dos páginas en la versión 0.2 a diferencia de la versión anterior que solo puede mostrar una página a la vez.

Elegimos el renderizado perfecto de píxeles de esta página como nuestro primer hito porque llegar aquí, requiere resolver algunos problemas difíciles y es más fácil centrar la atención en un solo objetivo. Queremos probar que un lector PDF en HTML5 es realmente factible y no sólo hablar por diversión. Aún quedan muchos problemas pendientes, pero aún no hemos atravesado por ninguno que sea tan difícil como para repensar en la viabilidad del proyecto pdf.js.

Comunidad

El proyecto pdf.js tiene una grande y creciente comunidad. Como hemos señalado anteriormente, justindarc ha revisado la interfaz de usuario del visor. notmasteryet implementó el soporte para PDF encriptados y JPEG embebidos entre otras cosas. jvierek agregó un backend para desarrolladores web que será una de las principales características en el próximo hito. sayrer ha mejorado enormemente nuestra infraestructura de pruebas. Todos han compartido los arreglo de bugs. La lista de colaboradores es probable que haya aumentado en el tiempo en que se escribió este artículo y ustedes lo leen, por lo que si quieren ver la lista completa, entra aquí current list.

Más Navegadores/SOs, más problemas

Se pretende que pdf.js funcione con todos los navegadores compatibles con HTML5. Y que, por definición, significa que pdf.js debe funcionar igualmente bien en todos los sistemas operativos en que se ejecutan los navegadores. La realidad es diferente. pdf.js produce resultados diferentes en casi todos los elementos en el navegador de OS x Matrix. Hemos dicho más arriba que TraceMonkey renderiza pdf.js «perfectamente»…si está funcionando en una Nightly de Firefox. En una máquina con Windows 7 que Firefox puede utilizar Direct2D y DirectWrite. Si usted ignora lo que parece ser un error en la fuente DirectWrite. Funciona menos bien en otras plataformas y en versiones de Firefox más antiguas, y aún peor en otros navegadores. Pero así es la vida a punta de lanza de las plataformas web. pdf.js ha llegado al punto en que una parte importante de sus problemas son en realidad el motor de renderizado del navegador, errores, o de características que no existen. Descubrir estos huecos y corregir algunos de ellos ha sido uno de los mayores retornos sobre la inversión en pdf.js hasta el momento.

¿Qué sigue?

Para la próxima versión, se tienen dos grandes objetivos: el primero es seguir sumando características necesarias para renderizar los archivos PDF (por supuesto). El próximo objetivo es un poco más ambicioso: Hacer una representación exacta de la especificación PDF 1.7 en sí misma. Ya se está trabajando en esto, durante el período de estabilización para la liberación 0.2. En segundo lugar es para mejorar la arquitectura. Esto en sí consta de dos partes: el uso de Trabajadores Web para paralelizar las tareas de computación intensiva, y permitir al principal hilo de pdf.js, ser interrumpido para mejorar la respuesta de interfaz de usuario. (Lo ideal sería que la plataforma web que permitirá hacer todas las tareas de computación intensiva como el dibujo de <canvas> aparte el hilo de interfaz de usuario, pero eso es un problema difícil y sin solución.)

Se puede seguir avanzando rápidamente hacia la representación de la especificación PDF, ya que no preocupan las regresiones, gracias sobre todo al trabajo de sayrer respecto a las pruebas.

Contribuye

Se quiere que pdf.js sea un proyecto de código abierto guiado e impulsado por la comunidad. Usarlo para Firefox, pero hay muchas buenas aplicaciones para él. Nos encantaría verlo incorporado en otros navegadores o aplicaciones web, porque está escrito solamente en las tecnologías web compatible con los estándares, el código se ejecutará en cualquier navegador compatible. está bajo una licencia muy liberal 3-cláusula de la licencia BSD, y damos la bienvenida a sus colaboradores externos. Estamos mirando adelante a sus ideas o código para hacer mejor pdf.js! Echa un vistazo a nuestra github y nuestra wiki, habla con nosotros en el IRC en # pdfjs, e inscribirse en nuestra lista de correo.

Andreas Gal y Chris Jones (y el equipo de )

Tomado y traducido de: Chris Pitchin’ Hey.

4 Comentarios

Escribir Comentario
  1. Genial estos avances en pdf.js, ojala que el proyecto de resultados alentadores y continué, y como ellos dicen se pueda implementarse en varios navegadores.
    Ya veo la hora de poder gozar con este lector pdf en Firefox.

  2. No saben en qué versión de Firefox saldrá esta nueva funcionalidad incluida, al menos para probarla?

  3. Espero que lo incorporen a la versión 6.0

Escribe un comentario

Puedes usar las etiquetas HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>