Rails - 从 HTML 动态生成 PDF 并显示下载链接



我有一个rails应用程序,用户可以在其中单击页面上的链接,然后打开一个小弹出窗口,上面有一些HTML。我想在它旁边放另一个链接,称为"下载为 PDF",当有人点击这个链接时,我想从 HTML 动态生成一个 PDF,并允许用户将生成的 PDF 下载到他们的系统上。我在stackoverflow上看到过一些页面,其中谈到使用pdfkit从html生成pdf,但没有动态生成pdf然后使其可供下载。请帮忙!

最好的方法是使用宝石虾 这是如何将其上传到您的Ruby on rails网站的youtube https://www.youtube.com/watch?v=BW5zwqj37Lo&t=233s https://github.com/prawnpdf/prawn

这是如何添加宝石虾的示例 宝石"虾","~> 1.2.1" 宝石 '虾桌', '~> 0.1.0'

Mime::Type.register "application/pdf", :pdf
def index
@users = User.order("id DESC").all
respond_to do |format|
format.html
format.pdf do
pdf = Prawn::Document.new
pdf.text “hello
send_data pdf.render, filename: 'member.pdf', type: 'application/pdf', disposition: "inline"
end
end
end
<%= link_to 'PDF File', members_path(format: 'pdf') %>
def index
@users = User.order("id DESC").all
respond_to do |format|
format.html
format.pdf do
pdf = MemberPdf.new(@users)
send_data pdf.render, filename: 'member.pdf', type: 'application/pdf', disposition: "inline"
end
end
end

PDF 文件夹 member_pdf.rb

class MemberPdf < Prawn::Document
def initialize(users)
super(top_margin: 170)
@users=User.order("id DESC").all
user_id
end
def user_id
move_down 20
table user_id_row do
row(0).font_style = :bold
columns(1..3).align = :right
self.row_colors = ["DDDDDD","FFFFFF"]
self.header = true
end
end
def user_id_row
[["id","First","Middle","LastName","Email","Address","Address2","City","PostalCode","phone","Status","Child","Intrest"]] +
@users.map do |user| 
[user.id,user.first_name,user.middle_name,user.last_name,user.email,user.street_address,user.street_address2,user.city,user.postal_code,user.phone_number,user.status,user.child,user.interest]    
end
end
end

最新更新