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

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=

Bài 1 – React Native DevOps các khái niệm và các cài đặt căn bản

Hướng dẫn setup jenkins agent để bắt đầu build mobile bằng jenkins cho devloper an t

Chuyển đổi từ monolith sang microservices qua ví dụ

1. Why microservices? Microservices là kiến trúc hệ thống phần mềm hướng dịch vụ,