Report abuse


			
#

this is how looked my old pdf-action in the controler... ugh!


			
# --comments are in italian, for italian I am, of course that's not the point!--

  # in the controller with PDF::Writer
  # PDF-WRITING
  def export_pdf
    @estimate = Estimate.find params[:id], :include=>[:estimate_items, :project, :company]
    render(:update) {|p| p.alert "non si può stampare un preventivo senza articoli, totale o cliente"} if @estimate.estimate_items.empty?
    
    pdf = PDF::Writer.new :paper=>"A4" #A4 595.28 pts � 841.89 pts
    
    #Per impostare i margini del documento in (mm)
    #A4 595.28 pts � 841.89 pts
    pdf.margins_pt 51.89, 47.64, 40, 47.64
    #area disponibile: 500 � 750
    
    pdf.select_font("Helvetica", :encoding => nil)
    pdf.fill_color Color::RGB::Black 
    
#    pdf.add_image(RAILS_ROOT+"/public/images/logo_mdm.png", 47.64, 741.89, 60, 25 )#:resize => 0.40
    pdf.image RAILS_ROOT+"/public/images/logo_mdm.png", :resize => 0.40
    pdf.move_pointer(-52, true)
    
    pdf.text "mdm s.r.l.", :justification=>:right, :font_size=>14
    
    text = <<-EOS
sede operativa: via pollini 3 20125 MILANO
tel +39/02/45470638  fax +39/02/45470641
www.mdmsrl.it
EOS
    pdf.text text, :justification=>:right, :font_size=>8
    
    pdf.move_pointer(20, true)
    pdf.text "Preventivo n.#{@estimate.id.to_s} per #{@estimate.company.full_name}", :justification=>:left, :font_size=>20
    
    pdf.move_pointer(10, true)
    pdf.text "OGGETTO:", :font_size=>8
    pdf.text @estimate.subject, :font_size=>11
    
    if @estimate.notes
      pdf.move_pointer(10, true)
      pdf.text "NOTE:", :font_size=>8
      pdf.text @estimate.notes, :font_size=>11
    end
    
    pdf.move_pointer(10, true)
    pdf.text "ELENCO ARTICOLI", :font_size=>8, :justification=>:center
    
    pdf.move_pointer(10, true)
    PDF::SimpleTable.new do |tab|
      tab.width = 500
      tab.orientation   = :center
      tab.bold_headings = true
      
      tab.column_order= ["description", "unit_price", "quantity", "partial"]
      tab.columns["description"] = PDF::SimpleTable::Column.new(:description) do |col| 
        col.heading = "DESCRIZIONE"
      end
      tab.columns["unit_price"] = PDF::SimpleTable::Column.new(:unit_price) do |col|
        col.justification = :right
        col.heading = PDF::SimpleTable::Column::Heading.new( "PREZZO UNITARIO Euro" ){|h| h.justification = :center }
      end
      tab.columns["quantity"] = PDF::SimpleTable::Column.new(:quantity) do |col| 
        col.justification = :right
        col.heading = PDF::SimpleTable::Column::Heading.new( "QUANTITA'" ){|h| h.justification = :center }
      end
      tab.columns["partial"] = PDF::SimpleTable::Column.new(:partial) do |col| 
        col.justification = :right
        col.heading = PDF::SimpleTable::Column::Heading.new( "TOTALE Euro" ){|h| h.justification = :center }
      end
      
      tab.heading_font_size = 8
      tab.show_lines    = :all
      tab.show_headings = true
      tab.line_color = Color::RGB::Grey50
      tab.outer_line_style = PDF::Writer::StrokeStyle.new(0.5)
      tab.inner_line_style = PDF::Writer::StrokeStyle.new(0.5)
      tab.shade_color = Color::RGB::Grey90
      @estimate.estimate_items.each_with_index do |item, index|
#        tab.data<< item.attributes.update(:partial => item.quantity*item.unit_price)
        row = { "partial"=> item.quantity*item.unit_price,
                "quantity"=> item.quantity.to_s + " " + item.item_type,
                "unit_price"=> item.unit_price,
                "description"=> item.description    }
        tab.data<< row
      end
      #riga totale
      tab.data<< {} if @estimate.estimate_items.length.even?
#      tab.data<< {} if @estimate.estimate_items.length.odd?
      tab.data<< {"partial"=> "Totale:"}
      tab.data<< {}
      tab.data<< { "partial"=> @estimate.total }
      
      tab.render_on(pdf)
    end
    pdf.save_as(RAILS_ROOT+"/public/pdf_documents/prova.pdf")  
    send_data pdf.render, :filename => "Preventivo #{@estimate.project_name} del #{@estimate.updated_at.to_date.to_s}.pdf", :type => "application/pdf"
  end