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

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ