El pasado viernes, pdf.js – el proyecto con que Mozilla pretende dar soporte nativo para la lectura del formato pdf utilizando JavaScript y HTML5- 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.
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.
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.
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
La figura 4 es otra demostración dramática de la diferencia de cargar fuentes Type 1 y medirlas con precisión.
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.
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.
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
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.
Vía: Firefoxmanía