ben

OMÜ , Bilgisayar Mühendisliği, 13'

2 Mart 2015 Pazartesi

wicked_pdf

    wicked pdf , rails web üzerinde pdf dosyaları oluşturmamızı sağlayan gemdir. projeye ekleyebilmek için gem dosyasına aşağıdaki satırı ekleyelim ve bundle install ile kuralım
           gem 'wicked_pdf
Terminalden rails generate wicked_pdf komutu ile projemize entegre edelim.
Proje dizinizmizde config/initializers/mime_types.rb dosyası oluşacaktır. Bu dosyanın içine aşağıdaki satırı ekleyelim.

            Mime::Type.register "application/pdf", :pdf
Gerekli olan ikinci gem ise ;  
            gem 'wkhtmltopdf-binary
bundle install komutundan sonra config/initializers/wicked_pdf.rb dosyası oluşacaktır içerisine ;

            WickedPdf.config = {
               :exe_path => '/usr/local/bin/wkhtmltopdf'
            }

komutu yazalım.

Pdf formatında almak istediğimiz sayfanın(benim projemde rerport modelinin show sayfası) pdf.slim (.haml yada erb de olabilir) uzantılı kopyasını, views/layouts/ dizini içerisine alalım. views/layouts/show.pdf.slim içerisindeki komutlar views/reports/show.html.slim ile aynı olmalı.

report_controller.rb içerisindeki show metodunun içine;

def show
      @report=Report.find(params[:id])
       if(params[:format]=="pdf")
         respond_to do |format|
           format.pdf do
             render :pdf => "reports",
                    :template => '/reports/show.html.slim',
                    :layout => "/layouts/show.pdf.slim",
                    :encoding  => 'utf8'
           end
         end
       end
  end

encoding=>'utf8' pdf dosyasında türkçe karakterleri tanımasını sağlar.

daha bitmedi, projemizin index sayfasından görüntülemeye geldiğimiz için index sayfasındaki görüntüleme butonunu aşağıdaki şekilde güncelliyoruz;

    td=link_to "PDF" ,report_path(report,:format => 'pdf')  normal aldığı parametrenin yanına sadece :format=>"pdf" ekliyoruz

evet şimdi çalıştıralım..
Uppss hata ile karşılaştık


wkhtmltopdf exe'sinin yerini bulamıyor, terminalden which wkhtmltopdf yazıp yola bakalım.
       /home/esryrlmz/.rbenv/shims/wkhtmltopdf
Evvet bizim belirttiğimiz yerden farklı bir yere kurulmuş, wicked_pdf dosyasındaki exe yolunu değiştirelim
       WickedPdf.config = {
           :exe_path => '/home/esryrlmz/.rbenv/shims/wkhtmltopdf'
        } 
 
Tekrar çalıştıralım..
Sitemizdeki Show ekranımız:
Oluşturulan Pdf..


Kaynak: https://github.com/mileszs/wicked_pdf


Not 1: Eğer bootstrap görüntüsüyle almak isterseniz:

stylesheets/pdf.css.scss oluşturun ve içerisine

@import "bootstrap-sprockets";
@import "bootstrap";

@import "bootstrap/variables";
@import "bootstrap/mixins";

@include make-grid(sm);
@include make-grid(md);
@include make-grid(lg);



görüntüsünü almak istediğiniz pdf.erb uzantılı dosyanın içerisine;

<!DOCTYPE html>
<html>
<head>
  <%= wicked_pdf_stylesheet_link_tag "pdf.css" -%>
  <%= csrf_meta_tags %>
</head>

<body>

//rapor içeriği

</body>
</html>


Not:2 Eğer pdf  tek bir syaf değilde birden fazla sayfa olmasını isterseniz sayfayı ayırmak istediğiniz yere;
  
<p style="page-break-after: always"></p>