Recientemente, un cliente me pidió que agregara una nueva característica al sitio Drupal de la compañía: mostrar archivos PDF en el navegador. Mientras exploraba las opciones en drupal.org, me di cuenta de que era una oportunidad perfecta para documentar mi proceso real de toma de decisiones cuando elegí un nuevo módulo. Siempre digo que elija los módulos con prudencia, pero ahora puede ver cómo creo que funciona en la vida real.
Define lo que quieres
El primer paso es definir lo que quieres. En mi caso, yo quería:
- La capacidad de ver archivos PDF en un navegador web, similar a este ejemplo. El cliente cargaría archivos PDF del boletín de la empresa y los visitantes podrían leerlos fácilmente.
- El sitio es Drupal 7, por lo que el módulo debería coincidir con la versión principal. (Drupal 7 ha estado fuera por un tiempo, por lo que si un desarrollador de módulos aún no ha sacado una versión de Drupal 7, probablemente no lo harán).
- Aunque el cliente no especificó esto, también quería evitar confiar en un servicio de terceros. Para los videos, me complace publicar el contenido en YouTube o Vimeo y luego incrustarlo en un sitio de Drupal, pero para los archivos PDF, no creo que la posible exposición adicional supere la molestia, la rotura y los gastos potenciales. Sin embargo, estaba abierto a un servicio de terceros si era la única opción.
- A pesar de mi deseo de evitar un servicio de terceros, sabía que mi elección probablemente requeriría un Javascript de terceros biblioteca . Aunque esto agregaría un paso adicional en futuras actualizaciones, generalmente me siento mejor sobre la ejecución de mi propia copia de una biblioteca en lugar de confiar en un servicio de terceros.
- Quería mantener el módulo lo más ligero y específico posible. No quería involucrarme con una forma radicalmente nueva de manejar u organizar archivos multimedia. Quería algo más como Colorbox, que amplía las imágenes para verlas mejor, pero sigue siendo completamente independiente de cómo elijas administrar los archivos de imágenes. Tuve el presentimiento de que esta biblioteca sería pdf.js, pero estaba abierta a otras posibilidades.
- Como de costumbre, quería seguir las pautas generales para elegir un módulo de Drupal. Básicamente, elija un módulo que ya haya estado en uso por unos pocos miles de personas (si es posible) por un tiempo, con un mínimo de dependencias, que parece ser mantenido por un desarrollador activo que planea seguir apoyando el proyecto en el futuro y no lo hace. t requiere una tasa de licencia.
Buscar en Drupal.org
Con estos objetivos en mente, el siguiente paso fue una simple búsqueda en Drupal.org. Es hora de saltar a la bola del hoyo del módulo de bondad.
Página de "comparación" para módulos PDF
Mi primera parada fue (o debería haber sido), esta página: una comparación de los módulos del visor de PDF. Drupal.org tiene una excelente tradición de páginas de documentación que resumen los pros y los contras de varios módulos en el mismo espacio. Hay una lista central de páginas de comparación, pero también están esparcidas por todo el sitio.
La página de comparación de PDF incluye cuatro módulos de visor de PDF. Los cubriré aquí, así como un par de otros que encontré al buscar. Empezaré con los candidatos que decidí saltarme.
Ahora vamos a profundizar en los detalles de por qué estos módulos funcionaron (o no funcionaron) para este proyecto.
Visor de archivos
File Viewer utiliza el BookReader del archivo de Internet, que me intrigó porque soy un adicto al archivo de Internet. Cada vez que voy allí, siento cosquillas de miedo y abrumado por las montañas de libros que puedo arrancar del éter.
Dicho esto, el sitio de demostración me pareció un poco feo. Podría vivir con eso, pero dudaba que mi cliente lo hiciera, cuandopdf.js
Se ve mucho más elegante.
Además, en un segundo vistazo a la página del proyecto, vi el gran anuncio en negrita en la parte superior:Este módulo ha sido trasladado formalmente al módulo PDF.. Lo suficientemente justo. Con menos de 400 instalaciones, fusionarse con el módulo PDF más popular (que veremos en un momento), parece una buena jugada. Nunca descargue un módulo que haya sido fusionado / movido / abandonado.
Formateador de archivos de Google Viewer
Google Viewer File Formatter es lo que parece: una forma de utilizar Google Docs para incrustar pantallas de archivos en su página web. Aunque me gustó la versatilidad de Google Docs, uno de mis objetivos era permanecer independiente de cualquier servicio de terceros.
Además, este módulo tenía menos de 100 instalaciones.
Visor de documentos Ajax
Aunque "AJAX" es un término general de Javascript, el Visor de documentos Ajax se basó en un servicio específico de terceros. Solo unas 100 instalaciones. Continuando …
Scald PDF
Scald PDF solo tenía 40 instalaciones, pero tuve que echarle un vistazo, ya que era claramente parte de un proyecto más grande llamado (sí) Scald. Como explicó la página del proyecto Scald: " Scald es una versión innovadora de cómo manejarÁtomos de los medios en drupal ".
Esa oración levantó dos enormes banderas rojas: "toma innovadora" y la palabra "Medios" emparejadas con "Atom". "Átomo" era obviamente una palabra reutilizada para "cosa", que la convertía en una bandera roja por sí sola. Drupal tiene una inclinación por estas palabras de tipo caja vacía: nodo , entidad , característica … Cuanto más general es la palabra, más amplios pueden ser los cambios.
Mientras me desplazaba hacia abajo, mis sospechas fueron confirmadas. Leí alegres afirmaciones de cómo Scald reinventaría básicamente la forma en que manejaba los medios en mi sitio.
Ahora, la verdad es que el manejo de Drupal's Media podría necesitar reinventarse. Scald no es el único proyecto ambicioso en este espacio.Sin embargo, con menos de 1000 instalaciones hasta ahora, no quería entrar a la planta baja.
Claro, para esta fecha el próximo año, Scald podría ser las siguientes Vistas. Eso sería rockero. Pero también podría ser abandware, con un (pequeño) rastro de sitios rotos que quedan por llorar.
Por ahora, quería seguir con una solución mucho menos ambiciosa y peligrosa. Solo muestra los archivos PDF, por favor. Eso es todo lo que estaba preguntando.
Caja de sombra
Shadowbox me sorprendió: afirmaba ser una solución única para mostrar todo tipo de medios, desde archivos PDF a imágenes y videos. Esto no fue tan radical como Scald, ya que solo se enfocaría en mostrando Medios sin introducir conceptos completamente nuevos como "Media Atoms". Pero ya me gusta Colorbox, como ya mencioné. No quería tener que repensar esa decisión.
Sin embargo, noté (con un gemido interno) que con más de16,000 Instala, Shadowbox podría ser una alternativa más poderosa en el mismo espacio. yo tenía echar un vistazo.
El módulo Shadowbox Drupal es básicamente un puente a una biblioteca de Javascript, Shadowbox.js, así que revisé el sitio web de la biblioteca. Allí, descubrí dos razones para seguir adelante:
- La biblioteca requiere una cuota de licencia para uso comercial. La tarifa era bastante razonable, pero trato de evitar el software de código abierto que no es gratuito.
- Una búsqueda cuidadosa de las Preguntas Frecuentes reveló que, a diferencia de la descripción en la página del módulo Drupal, los PDF son no 100% apoyado por la biblioteca de Shadowbox. Ups. Menos mal que lo comprobé.
Los dos contendientes: "PDF" y "PDF Reader"
Una vez eliminado el resto, llegué a los dos contendientes obvios: PDF y PDF Reader.
Estos dos proyectos tenían similitudes clave:
- Ambos tenían casi 3,000 instalaciones, mucho más que las alternativas (excepto Shadowbox).
- Ambos usaron la misma biblioteca externa de Javascript,
pdf.js
.
¿Qué hay de las diferencias?
Lector PDF También tenía la opción de integración de Google Docs. En este caso particular, pensé que a mi cliente le podría gustar eso, así que me gustó tener la opción.
Mientras tanto, PDF fue marcado comoBuscando co-mantenedor (es)
. Eso podría ser una señal de que el desarrollador pronto abandonaría el proyecto, pero, por otro lado, el compromiso más reciente fue hace una semana, por lo que al menos el desarrollador todavía estaba activo.
Por otra parte, Lector PDF fue marcado comoMantenido activamente
, pero el compromiso más reciente fue hace un año.
Sin un claro ganador, decidí probarlos a ambos.
Probando a los contendientes
Probé ambos módulos en una copia de mi sitio en vivo. (No importa cuán sólido e inocuo sea un módulo, nunca lo intentes primero en un sitio en vivo. Podrías romper todo tu sitio).
Yo estaba predispuesto hacia Lector PDF , porque parecía tener más opciones (como Google Docs) que PDF . Así que decidí intentarlo PDF Primero, para sacarlo del camino.
PDF Fail: Compilación requerida?
Sin embargo, cuando instalé PDF y leerREADME.txt
, Descubrí un problema que había visto pero que había ignorado en la página del proyecto. Por alguna razón, este módulo parece requerir que usted compilepdf.js
a mano. Aunque la página del proyecto sugería que esto no era necesariamente requerido,README.txt
sugirió que era.
Ya que Lector PDF usaría exactamente la misma biblioteca sin requerir este paso, decidí probarlo primero después de todo. Si no funcionara, siempre podría volver a PDF y tratar de compilar manualmentepdf.js
.
PDF Reader: ¡Éxito! Una especie de
Así que, por fin, lo intenté. Lector PDF . Este módulo proporciona un nuevo widget para mostrar unExpediente
campo. Agrega un campo de archivo a su tipo de contenido deseado y configura el tipo de widget enLector PDF
. Luego, crea un nodo de este tipo y carga su PDF. El PDF aparece incrustado en un "cuadro" en la página.
Puede probar diferentes opciones de visualización editando nuevamente el tipo de contenido y cambiando la configuración de visualización para el campo.
Encontré que cada opción de pantalla tenía pros y contras:
- losGoogle Docs el lector funcionó bien como incrustación, pero cuando hice clic para ir a pantalla completa, terminé en una página de Google Docs que se disculpaba por haber excedido el límite de velocidad. Ups. Quizás esto sería más confiable si conectara el módulo a una cuenta de pago de Google Apps, pero no me molesté en averiguarlo, ya que estaba bastante seguro de que a mi cliente no le gustaría la pantalla.
- lospdf.js Opción funcionó maravillosamente … en Firefox y Chrome. Pero cuando encendí Internet Explorer, la caja aparecía vacía. Al parecer, este es un problema con
pdf.js
sí, no el Lector PDF módulo. Supongo que debería haber esperado esto, dado quepdf.js
Está desarrollado por Mozilla e Internet Explorer es … en sí mismo. Aún así, me decepcionó que no hubiera pensado en confirmar quepdf.js
Trabajó confiablemente en todos los navegadores en primer lugar. - losempotrar La opción era la más confiable. Esto realmente corrió Adobe Reader en un cuadro en la página web. Mi Firefox todavía prefirió correr
pdf.js
, pero creo que esta fue una configuración de navegador. De cualquier manera, siempre que un visitante tenga Firefox o un visor de PDF como Adobe Reader, se mostrará el PDF.
Así, al final, mi solución fue utilizar el Lector PDF con elEmpotrar opción de visualización. Esta opción me permitiría adjuntar un PDF a un nodo de Drupal y mostrarlo de manera confiable en una página web de Drupal.
Desafortunadamente, a veces "confiable" no es suficiente. Después de toda esta búsqueda, tuve que considerar un servicio de terceros, después de todo.