PDF-Writer per creare pdf in rails
Ho provato pdf-writer per generare file pdf con rails, se vi interessa provarlo di seguito vi posto un estratto di codice per inserire testo, immagini, settare le codifiche ed inserire tabelle.
Chiaramente prima di cominciare è necessario installare la gemma pdf-writer:
1 sudo gem install pdf-writer
installate anche le dipendenze: color-tools, transaction-simple.
1 2 3 ... 4 ... 5 6 pdf = PDF::Writer.new() 7 #Per impostare i margini del documento in (mm) 8 pdf.margins_mm(20) 9 pdf.select_font("Helvetica", :encoding => nil) 10 pdf.fill_color Color::RGB::Black 11 #Per Aggiungere una immagine e posizionarla a 50 punti da sinistra e 12 #a 700 punti dal basso di 60x60 punti di dimensione 13 pdf.add_image_from_file("images/logo.jpg", 50, 700, 60, 60) 14 pdf.add_text(120, 745, "Testo di prova") 15 #Per generare una linea lunga 510 punti 16 pdf.line(50, 690, 560, 690).stroke 17 pdf.move_pointer(180, true) 18 #Un esempio per generare una tabella 19 PDF::SimpleTable.new do |tab| 20 tab.bold_headings = true 21 tab.column_order.push(*%w(desc imp)) 22 tab.columns["desc"] = PDF::SimpleTable::Column.new("desc") {|col| 23 col.width = 350 24 col.heading = "Descrizione" 25 } 26 tab.columns["imp"] = PDF::SimpleTable::Column.new("imp") {|col| 27 col.heading = "Importo" 28 } 29 tab.show_lines = :all 30 tab.show_headings = true 31 tab.orientation = :right 32 tab.position = 80 33 data = [] 34 #Se avete un oggetto su cui ciclare per tirare fuori i valori 35 object.each do |i, index| 36 data << {"desc" => "", "imp" => ""} 37 end 38 tab.data.replace data 39 #Renderizza la tabella sul pdf partendo dalla y precedentemente 40 #impostata con pdf.move_pointer(180, true) 41 tab.render_on(pdf) 42 43 pdf.y = pdf.y - 50 44 pdf.add_text(120, pdf.y, "Fine pdf") 45 end 46 #Per salvare il file con il nome che vi serve: 47 pdf.save_as("../pdf-invoices/prova.pdf}") 48 #Per renderezzare il file sul browser 49 send_data pdf.render, :filename => "prova.pdf", :type => "application/pdf"
Alla linea 17:
17 pdf.move_pointer(180, true)
Viene spostato il cursore per fare in modo che la tabella venga renderizzata al punto giusto sul pdf; senza spostare il cursore la tabella verrebbe renderizzata in cima alla pagina.
E LA CODIFICA?
Quando viene scelto il tipo di carattere si può specificare anche la codifica se non vi interessa specificarla allora:
1 pdf.select_font("Helvetica", :encoding => nil)
Può accadere che vi siano problemi nel riconoscimento di caratteri speciali o nel simbolo dell’euro, per questo motivo è necessario specificare il carattere ASCII del simbolo che vi interessa utilizzare. Ad esempio se vi interessa inserire il simbolo dell’euro dovete inserire 33.chr nel vostro codice ruby.


Non riesco ad inserire l’immagine nel pdf.
L’errore è “Errno::ENOENT in PublicController#pdf
No such file or directory - images/intestazione.gif”