Tuesday, March 26, 2013

PDFKit for ruby on rails

http://stackoverflow.com/questions/68569/text-watermark-on-website-how-to-do-it
<style type="text/css"> #watermark { color: #d0d0d0; font-size: 200pt; -webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); position: absolute; width: 100%; height: 100%; margin: 0; z-index: -1; left:-100px; top:-200px; } </style> <div id="watermark"> <p>This is the test version.</p> </div> http://stackoverflow.com/questions/5399458/render-to-string-does-not-find-partials-pdfkit-controller-response respond_to do |format| format.html format.pdf { html = render_to_string(:layout => false , :action => "constitution.pdf.haml") kit = PDFKit.new(html) kit.stylesheets << "#{Rails.root}/public/stylesheets/pdf.css" send_data(kit.to_pdf, :filename => "#{@organisation_name} Constitution.pdf", :type => 'application/pdf', :disposition => 'inline') return } end http://metaskills.net/2011/03/20/pdfkit-overview-and-advanced-usage/ /* Page Breaks */ .pb_before { page-break-before:always !important; } .pb_after { page-break-after:always !important; } .pbi_avoid { page-break-inside:avoid !important; } # My with authentication (sending session cookie name and value) kit = PDFKit.new(model_url(@model), 'margin-left' => '10mm', 'margin-right' => '10mm', page_size: 'A5', cookie: "#{Rails::Application.config.session_options[:key]} #{cookies[Rails::Application.config.session_options[:key]]}") file = kit.to_file("#{Rails.root}/tmp/invoices/#{@invoice.id}.pdf") # My way, rendering file # config/initializers/mime_types.rb Mime::Type.register 'application/pdf', :pdf #Controller def show @invoice = Model.find(params[:id]) respond_to do |format| format.html { render layout: 'invoice' } format.pdf { unless File.exist?("#{Rails.root}/tmp/model/#{@model.id}.pdf") file = pdf_kit.to_file("#{Rails.root}/tmp/model/#{@model.id}.pdf") end send_file "#{Rails.root}/tmp/model/#{@model.id}_pre.pdf", :type => 'application/pdf' } format.xml { render :xml => @invoice } end end private def pdf_kit html = render_to_string(action: :show, layout: 'invoice') kit = PDFKit.new(html, 'margin-left' => '10mm', 'margin-right' => '10mm', page_size: 'A5',) kit.stylesheets << "#{Rails.root}/public/stylesheets/model_pdf.css kit end