Gem wicked_pdf

1. Introduction Gem wicked_pdf được dùng để generate file PDF từ HTML. Thay vì dùng DSL để generate PDF, bạn chỉ cần viết 1 file HTML và wicked_pdf sẽ lo phần còn lại. 2. Install Thêm gem wicked_pdf vào Gemfile. # Gemfile gem "wicked_pdf" gem "wkhtmltopdf-binary" Chạy bundle install để install gem vào source code.

1. Introduction

  • Gem wicked_pdf được dùng để generate file PDF từ HTML.
  • Thay vì dùng DSL để generate PDF, bạn chỉ cần viết 1 file HTML và wicked_pdf sẽ lo phần còn lại.

2. Install

  • Thêm gem wicked_pdf vào Gemfile.
    # Gemfile
    gem "wicked_pdf"
    gem "wkhtmltopdf-binary"
  • Chạy bundle install để install gem vào source code.
    bundle install
    
  • wicked_pdf là wrapper của wkhtmltopdf, để sử dụng gem wicked_pdf thì bạn phải install thêm gem wkhtmltopdf-binary vào source code.
  • Chạy rails generate wicked_pdf để generate initializer của gem wicked_pdf.
    rails generate wicked_pdf
    
  • Sau khi chạy, ta nhận đc file wicked_pdf.rb với nội dung như sau
    # config/initializers/wicked_pdf.rbWickedPdf.config ={}
  • File này dùng để config gem wicked_pdf.
  • Thêm pdf vào mime_types.rb.
    # config/initializers/mime_types.rbMime::Type.register "application/pdf",:pdf

3. Basic usage

  • Để hiển thị file PDF, trong controller ra sử dụng method render
    # app/controllers/welcome_controller.rbclassWelcomeController<ApplicationControllerdefindex
        respond_to do|format|
          format.pdf do
            render pdf:"welcome"endendendend
  • Tạo thêm file app/views/welcome/index.pdf.erb cho phần view
    # app/views/welcome/index.pdf.erb<h1>Welcome#index</h1><p>Find me in app/views/welcome/index.pdf.erb</p>
  • Kết quả thu được khi access localhost:3000/welcome.pdf

4. Asssets (CSS, JS)

  • wkhtmltopdf được chạy bên ngoài Rails app, nên các helper mặc định cho assets pipeline như stylesheet_link_tagjavascript_include_tag sẽ không hoạt động với file pdf được geneate bởi gem wicked_pdf
  • Để sử dụng assets pipeline với gem wicked_pdf, ra sử dụng các helper được cung cấp bởi gem wicked_pdf như wicked_pdf_stylesheet_link_tag, wicked_pdf_image_tag, wicked_pdf_javascript_include_tag
  • Config layout cho wicked_pdf
    # config/initializers/wicked_pdf.rbWickedPdf.config ={
     layout:"wicked_pdf_application.html.erb"}
  • Tạo file layout cho wicked_pdf
    # app/views/layouts/wicked_pdf_application.html.erb<!DOCTYPE html><html><head><title>VibloWickedPdf</title><%= csrf_meta_tags %>
        <%= csp_meta_tag %>
    
        <%= wicked_pdf_stylesheet_link_tag "application", media: "all", "data-turbolinks-track": "reload" %><%= wicked_pdf_javascript_include_tag "application", "data-turbolinks-track": "reload" %>
      </head>
    
      <body>
        <%=yield%>
      </body></html>

5. Render pdf options

  • Với method render được sử dụng ở controller, ngoài option pfd để config filename khi download file pdf, ra còn có các options khác.
  • disposition: inline (hiển thị file PDF, vẫn có thể download file PDF manual), attachment (download file PDF khi access link).
  • template: nội dung file PDF, default trùng với template HTML của action.
  • inline: nội dung file PDF dưới dạng string, override lại template option.
  • show_as_html: trả về true thì sẽ hiển thị HTML thay vì PDF.
  • orientation: default là Portrait (hướng dọc), hoặc Landscape (hướng ngang).
  • Bạn có thể tham khảo các option đầy đủ tại đây.

5. Reference

Nguồn: viblo.asia

Bài viết liên quan

Sự Khác Nhau Giữa Domain và Hosting Là Gì?

Sự khác nhau giữa domain và hosting là gì? Bài này giải thích ngắn và dễ hiểu nh

Shared Hosting hay VPS Hosting: Lựa chọn nào dành cho bạn?

Bài viết giải thích rõ shared hosting và vps hosting là gì và hướng dẫn chọn lựa

Thay đổi Package Name của Android Studio dể dàng với plugin APR

Nếu bạn đang gặp khó khăn hoặc bế tắc trong việc thay đổi package name trong And

Lỗi không Update Meta_Value Khi thay thế hình ảnh cũ bằng hình ảnh mới trong WordPress

Mã dưới đây hoạt động tốt có 1 lỗi không update được postmeta ” meta_key=