rails项目(七)——实现PDF文档导出功能

文章目录


在所有的控制器中都可以使用 send_data 和 send_file 方法,把文件发送给用户。这两个方法都会以数据流的方式发送数据。

1.send_data

先引入:prawn gem 'prawn',利用prawn生成了pdf后,再进行数据发送

  • controller
def download_pdf
   user = User.find(params[:id])
   send_data generate_pdf(user),
             filename: "#{user.username}.pdf",
             type: "application/pdf"
 end
 private

 def generate_pdf(user)
   Prawn::Document.new do
     text user.username, align: :center
     text "password: #{user.password}"
   end.render
 end
  • view
<%= link_to '下载个人信息', download_pdf_user_path(current_user), method: "get" %>
  • routes
resources :users do
   member do
     get :download_pdf
   end 

2.send_file

send_file只要提供磁盘中文件的名称,就会用数据流发送文件内容。
项目目录/files/users下引入 1.pdf文件

  • controller
def download_exist_pdf
    user = User.find(params[:id])
    send_file("#{Rails.root}/files/users/#{user.id}.pdf",
              filename: "#{user.username}.send.pdf",
              type: "application/pdf")
  end
  • view
<%= link_to '下载磁盘中已经存在的文件', download_exist_pdf_user_path(current_user), method: "get" %>
  • routes
resources :users do
   member do
     get :download_exist_pdf
   end 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值