How to Install Shrimp for Rails 4

Hi, I am trying to implement the loading of a PDF receipt. I'm not sure how to integrate the Shrimp with Rails 4 application, and I could not find any tutorials on how to do this. Please see below what I have done. Can someone please offer me some articles or some tips.

1 Shrimp gem added and package installed

2 Added controller code for rendering PDF

respond_to do |format| format.html format.pdf do pdf = OrderPdf.new(@order, view_context) send_data pdf.render, filename: "order_#{@order.order_number}.pdf", type: "application/pdf", disposition: "inline" end end 

3 Take the link_to code in the view. View located App> PDF

 <%= link_to "Download PDF", order_path(@order, format: pdf) %> 
+7
ruby-on-rails pdf ruby-on-rails-4 pdf-generation prawn
source share
2 answers

I'm not sure which part you need help in, but here's how I did it. In the code below, I create a pdf receipt file and save it to the database. The result is as follows: Production Example

Perhaps this may help.

 class Omni::ReceiptWorksheet < Omni::Receipt def print(receipt) pdf = header receipt data = [] data[0] = ["PO Nbr","Carton Nbr","Sku Nbr","Sku Description","S/U Open","S/U per Pack","Packs Open", "Packs Received"] receipt.receipt_details.each_with_index do |detail,i| selling_units = detail.purchase_detail.selling_units_approved - detail.purchase_detail.selling_units_received - detail.purchase_detail.selling_units_cancelled data[i+1] = [detail.purchase.purchase_nbr,' ', detail.sku.sku_nbr, detail.sku.display, selling_units, detail.receipt_pack_size, selling_units / detail.receipt_pack_size, ' '] end pdf.move_down 110 pdf.table(data) do |t| t.style(t.row(0), :background_color => '0075C9') t.header = true end pdf.number_pages "page <page> of <total>", { :at => [pdf.bounds.right - 150, 0], width: 150, align: :right, page_filter: (1..50), start_count_at: 1, color: "002B82" } attach StringIO.new(pdf.render), "receiving_worksheet#{Date.today}.pdf", receipt end def header(receipt) pdf = Prawn::Document.new pdf.font_size = 12 pdf.draw_text "Printed on: #{Date.today}", at: [0, 670] pdf.draw_text "Receiving Worksheet", at: [220, 670] pdf.draw_text "Page 1", at: [480, 670] pdf.draw_text "Receipt #: #{receipt.receipt_nbr}", at: [0, 650] pdf.draw_text "Receipt Date: #{Date.today}", at: [400, 650] pdf.draw_text "Receiving Location: #{receipt.location_display}", at: [0, 640] pdf.draw_text "Carrier Name: #{receipt.carrier_supplier.display}", at: [0, 620] pdf.draw_text "Bill of Lading: #{receipt.bill_of_lading_number}", at: [450, 620] pdf end def attach(file, file_name, receipt) attachment = Buildit::Attachment.create( attachable_type: "Omni::Receipt", attachable_id: receipt.receipt_id, file_name: file_name, mime_type: 'application/pdf', byte_size: file.size, locale: 'en', is_enabled: true ) Buildit::Content.create( contentable_type: "Buildit::Attachment", contentable_id: attachment.attachment_id, data: file.read ) end end 

Below is my controller for downloading and downloading attachments.

 class ContentController < ActionController::Base def download content = Buildit::Content.find_by_content_id(params[:file_id]) contentable = content.contentable file_name = (contentable ? contentable.file_name : 'file') send_data content.data, :disposition => 'attachment', :filename => file_name end # def download def upload begin content = Buildit::Content.create( data: params[:file].read ) result = { success: true, content_id: content.content_id, file_name: params[:file].original_filename, mime_type: params[:file].content_type, byte_size: params[:file].size } rescue result = {success: false} end render text: result.to_json, status: 200 end # def upload end # class ContentController 

Good luck Let me know if you need something more specific.

+4
source share

I found a useful prawn_rails gem . Note that in your gemfile you need gem prawn_rails with underline, not dash

0
source share

All Articles