- vừa được xem lúc

Tạo file PDF với gem wicked_pdf

0 0 21

Người đăng: Phuc Dang Xuan

Theo Viblo Asia

Giới thiệu

Trước đây, mình đã từng tạo CV bằng HTML, nhưng lại không biết làm thế nào để generate ra file PDF cho đến khi biết đến gem này wicked_pdf, nó sử dụng wkhtmltopdf để generate PDF từ file HTML.

Vậy làm thế nào để tích hợp nó vào trong dự án Ruby on Rails?

Cài đặt

Do wicked_pdf là dùng wkhtmltopdf để tạo ra file pdf nên bạn cũng cần phải thêm nó vào Gemfile

gem "wicked_pdf"
gem "wkhtmltopdf-binary", group: :development
gem "wkhtmltopdf-heroku", group: :production

Trường hợp wkhtmltopdf-binary không nằm trên đường dẫn của máy chủ web, bạn có thể config nó.

WickedPdf.config = { exe_path: '/usr/local/bin/wkhtmltopdf', enable_local_file_access: true
}

Tiếp theo chạy bundlerails g wicked_pdf khởi tạo wicked_pdf

Nếu bạn sử dụng Rails 4 trở xuống thì phải config thêm file sau:

Mime::Type.register "application/pdf", :pdf

Cách dùng

Do wkhtmltopdf binary được chạy bên ngoài ứng dụng Rails nên những layout bình thường sẽ không hoạt động. Nếu bạn muốn sử dụng CSS, JS hay hình ảnh nào đó thì bạn cần phải sửa file layouts của mình như sau:

<!DOCTYPE html>
<html> <head> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/> <%= wicked_pdf_stylesheet_link_tag "pdf" %> <%= wicked_pdf_javascript_include_tag "number_pages" %> </head> <body> <div id="header"> <%= wicked_pdf_image_tag 'thumbnail.png', height: "30", width: "auto %> </div> <div id="content"> <%= yield %> </div> </body>
</html>

Tạo controller để xử lý việc export pdf

def index @posts = Post.all respond_to do |format| format.html format.pdf do render template: "posts/index.html.erb", pdf: "Posts: #{@posts.count}", disposition: "attachment" # default inline end end
end

disposition: "attachment" cho phép bạn có thể tải pdf về máy thay vì mở nó trên trình duyệt.

Thêm đường link để tải pdf

<%= link_to "PDF", posts_path(format: :pdf) %>

Trên đây mình đã giới thiệu sơ qua về gem wicked_pdf. Nếu bạn muốn tìm hiểu sâu hơn thì có thể truy cập vào đây. Cảm ơn các bạn đã theo dõi!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tôi cá là bạn không biết những điều này - Ruby on rails ( Phần 2)

Các bạn có thể theo dõi phần 1 ở đây :. https://viblo.asia/p/toi-ca-la-ban-khong-biet-nhung-dieu-nay-ruby-on-rails-phan-1-WAyK8DDeKxX. 5.

0 0 222

- vừa được xem lúc

Rails Memoization

Memoization is a process that can be used to speed up rails methods. It caches the results of methods that do time-consuming work, work that only needs to be done once. Here is an example. Example.

0 0 48

- vừa được xem lúc

Tại sao Rails lại dùng cả Webpack lẫn Sprocket?

Khi Rails 6 được ra mắt, có thể bạn đã từng tự hỏi. WTF, sao Webpack đã được add vào rồi, mà Sprocket vẫn tồn tại thế kia . Chẳng phải Webpack và Sprocket được dùng để giải quyết chung một công việc hay sao. Hoặc cả đây:.

0 0 59

- vừa được xem lúc

Bạn nên sử dụng Elasticsearch trong ứng dụng Ruby On Rails như thế nào?

Elasticsearch là một công cụ phân tích và mã nguồn mở mạnh mẽ và linh hoạt, phân tán, theo thời gian thực. Đó là tiêu chuẩn vàng trong công nghệ tìm kiếm.

0 0 80

- vừa được xem lúc

Form object pattern trong rails

1.Mở đầu.

0 0 111

- vừa được xem lúc

Sử dụng Twilio để gửi SMS trong ứng dụng Ruby on Rails

Ngoài cách xác nhận tài khoản hay gửi thông báo bằng email thì hôm nay mình sẽ hướng dẫn các bạn 1 cách nữa là thông qua SMS/Voice. Công cụ sử dụng sẽ là gem Twilio. Installation. Để cài đặt bằng Bundler, hãy lấy phiên bản mới nhất:.

0 0 67