2012-09-06 10 views
5

Estoy intentando implementar una especie de combinación de correspondencia para documentos impresos en Ruby on Rails 3.2. Tengo alrededor de 8000 destinatarios y origen de plantilla en Microsoft Word. La plantilla incluye imágenes (fotos) y contiene alrededor de 10-20 páginas.Combinación de correspondencia en ruby ​​on rails, pero en grandes cantidades

La situación real es que reescribí la plantilla original en Textil (tela roja) y las imágenes se insertaron desde Internet (dirección http). Hice toda la personalización, etc. Así que genero un archivo HTML y debo dividirlo en muchos archivos pequeños de 1000 páginas cada uno. Total Necesito imprimir aproximadamente 8000 x 20 páginas = 160,000 páginas.

¿Alguien sabe cómo imprimirlo en PDF desde HTML? ¿O cómo insertar comandos para cambiar la bandeja de papel (para la primera y la última página) o para encuadernar después de cada 20 páginas, etc.?

Gracias por cualquier idea :-)

+0

Cuando dices "combinación de correspondencia", ¿realmente quieres decir "sustitución de plantilla", verdad? – tadman

+0

Sí, lo hago. En Word usamos la combinación de correspondencia ... – dominikform

+0

¿Se puede usar [wkhtmltopdf] (http://code.google.com/p/wkhtmltopdf/)? – PinnyM

Respuesta

0

Aquí está una idea: en su aplicación rieles, configurarlo para devolver uno html por usuario. Además, tenga un método nice/users/index que devuelva una lista de usuarios en algo conveniente, tal vez formato json.

Ahora, usted quiere un local de la escritura , escrita en Ruby, golpe, lo que sea conveniente, a:

  • obtener una lista de los usuarios de ese/usuarios/método, probablemente guardar en un archivo
  • bucle sobre la lista de usuarios (del archivo, para que no estén todos en la memoria), y busque el HTML del correo electrónico
  • genere el pdf de cada HTML descargado, ya sea dentro del bucle o bucle sobre archivos en un directorio donde guardó el HTML. Use wkhtmltopdf o similar.
  • envíe cada pdf a la impresora, nuevamente dentro del mismo bucle, o recorra los PDF guardados.

Si quieres ser elegante y un poco más eficiente, puedes usar un sistema de cola como resque y convertir cada uno de esos puntos en una cola, y ejecutar un trabajador por cola. Eso le permitirá comenzar a imprimir algunos archivos PDF, mientras que otros aún se están descargando y convirtiendo, por lo que debería ser menos tiempo en general. Pero si aún no está familiarizado con un sistema de colas así, un simple script debería hacerlo también.