2012-09-06 6 views
5

Sto cercando di implementare una sorta di stampa unione per documenti stampati in Ruby on Rails 3.2. Ho circa 8000 destinatari e origine del modello in Microsoft Word. Il modello include immagini (foto) e contiene circa 10-20 pagine.Stampa unione in ruby ​​su rotaie, ma in grandi numeri

La situazione attuale è che ho riscritto il modello originale in Textile (rosso) e le immagini vengono inserite da Internet (indirizzo http). Ho fatto tutte le personalizzazioni ecc. Così ho generato un file HTML e devo dividerlo in molti piccoli file ciascuno per 1000 pagine. Totale Ho bisogno di stampare circa 8000 x 20 pagine = 160.000 pagine.

Qualcuno sa come stamparlo in PDF da HTML? O come inserire i comandi per cambiare il vassoio della carta (per la prima e l'ultima pagina) o per rilegare dopo ogni 20 pagine, ecc.?

Grazie per qualsiasi idea :-)

+0

Quando si dice "stampa unione" si intende realmente "sostituzione modello", giusto? – tadman

+0

Sì, lo so. In Word abbiamo utilizzato la stampa unione ... – dominikform

+0

Puoi usare [wkhtmltopdf] (http://code.google.com/p/wkhtmltopdf/)? – PinnyM

risposta

0

Ecco un'idea: nella vostra applicazione Rails, l'eresse di tornare un html per utente. Inoltre, disponi di un metodo/user/index che restituisce un elenco di utenti in un formato conveniente, forse json.

Ora, si vuole un locale sceneggiatura , scritto in Ruby, bash, tutto ciò che è conveniente, a:

  • recuperare un elenco di utenti da quel/utenti/metodo, probabilmente salvarlo in un file
  • loop sull'elenco di utenti (dal file, quindi non sono tutti in memoria) e recupera il codice HTML dell'email
  • genera pdf da ogni HTML scaricato, sia all'interno del loop, o loop su file in una directory in cui hai salvato l'HTML. Utilizza wkhtmltopdf o simile.
  • invia ogni pdf alla stampante, di nuovo all'interno dello stesso ciclo, o loop sui PDF salvati.

Se si desidera essere eleganti e un po 'più efficienti, è possibile utilizzare un sistema di accodamento come resque e rendere ciascuno di quei punti elenco in una coda ed eseguire un worker per coda. Questo ti permetterebbe di iniziare a stampare alcuni pdf mentre altri erano ancora scaricati e convertiti, quindi dovrebbe essere meno tempo nel complesso. Ma se non hai già familiarità con un sistema di accodamento come questo, un semplice script dovrebbe farlo anche tu.