Construyendo poppler-utils para CentOS 6.5 (realmente)

Por varias razones, una de nuestras máquinas de producción está firmemente fijada en CentOS 6.5.

Este mismo servidor también maneja archivos PDF escaneados grandes por nosotros, procesándolos en archivos individuales y haciendo magia para registrar datos de cada página. Es una configuración divertida en la que no entraré aquí.

Recientemente, el paquete que estábamos usando para convertir PD F s a JPEG (sejda-console, que aparte de esto es una herramienta realmente agradable) comenzó a producir algunos extraños Resultados: todas las imágenes eran una extraña versión de detección de bordes en blanco sobre negro (algo así). Esto tenía algo que ver con el PDF original, pero no pudimos encontrar un hilo común.

En lugar de volver a procesar estos archivos PDF grandes para tal vez evitar esto, cambiamos a otro paquete: poppler. Específicamente el comando poppler-utils pdftoppm .

El cambio a poppler fue genial … hasta que intentamos implementarlo en producción.

Es hora de solucionar el problema

Cuando algo funciona en una máquina y no en otra, lo primero que hay que comparar es la versión instalada del paquete.

Como era de esperar, tuvimos un problema:


La versión 0.12.4 es de 2010 y es la última versión servida desde yum . Eso no es bueno. Y, por lo que pudimos averiguar, no existe una versión más reciente creada para CentOS 6.5.

Mirando el registro de cambios de poppler, realmente no necesitamos tener la versión 0.41.0 en producción, solo la que hace el trabajo por nosotros: pdftoppm con Soporte de salida JPEG. Eso se agregó en 0.13.0, por lo que elegimos la versión 0.13.4 como nuestro objetivo de compilación.

Compilación desde la fuente

Si está intentando crear poppler-utils para CentOS, o algo similar, estos son los pasos que tomamos para que funcione. (Estoy escribiendo esto mientras nuestro servidor de producción procesa 39 PDF atrasados ​​y los pocos miles de archivos JPEG creados por esta compilación, por lo que definitivamente está funcionando).

Paso 1: obtenga la fuente

Desde la línea de comando, comencemos por recuperar los archivos fuente. Puedes ponerlos en cualquier lugar; solo son buenos durante la compilación y se pueden eliminar de forma segura cuando hayamos terminado.

Nota: el indicador --no-check-certificate es asqueroso, pero wget no funcionará sin él a partir de este escrito. Si lo desea, puede usar otro método para llevar el tarball a su máquina, como curl .

Paso 2: descomprime la fuente

Paso 3: preparar & amp; configurar con libjpeg

Como dije antes, estábamos más interesados ​​en el comando pdftoppm que creaba un montón de archivos JPEG para nosotros. Esto requiere que incluyamos algunos pasos adicionales al instalar.

Deberá instalar libjpeg y libjpeg-devel desde yum :

Una vez hecho esto, podemos configurar la instalación de nuestro paquete:

El indicador --enable-foo le dice al script de configuración qué características adicionales incluir o no incluir, y hay muchas otras opciones. Lea el archivo INSTALL para obtener más información o sumérjase en el archivo de configuración con vim configure para ver la fuente.

Paso 4: cree e instale

Una vez configurado, hay dos comandos más para ejecutar:

Si obtiene un error al instalar, intente nuevamente usando sudo make install en su lugar.

Paso 5: ¿Funcionó?

Antes de que terminemos, verifique que todo haya funcionado como se esperaba.

Los comandos deben instalarse en / usr / local / bin / , y podemos verificarlos ejecutando:

Paso 6: ¡Úselo!

En el tiempo que nos llevó escribir esto, nuestro servidor ha procesado la mitad de nuestra acumulación de PDF. Esta herramienta ahora se utilizará para procesar alrededor de 200.000 conversiones de PDF a JPEG por año, todo gracias a la creación desde la fuente.

Si tiene algún problema con los pasos anteriores, o tiene sugerencias sobre cómo podríamos haberlo hecho un poco más fácil (además de actualizar desde CentOS 6.5), puede encontrarme en Twitter @jakebathman.