ruby-on-rails 下载PDF而不是在浏览器中显示

zte4gxcn  于 2023-05-02  发布在  Ruby
关注(0)|答案(3)|浏览(118)

我在我的rails应用程序上使用pdfkit(我根据Ryan Bates railscast这样做)目前它在浏览器中显示pdf。
如何下载PDF?
谢谢
编辑:
感谢您的回复!
但是我如何在控制器中创建pdf的数据呢?
当url包含.pdf时,pdf会自动显示。例如,当转到此链接时:

http://localhost:3000/home/index.pdf

它会在浏览器上自动打开页面的pdf版本(这是一个rails中间件设置)。

k5ifujac

k5ifujac1#

尝试使用所有rails控制器都具有的send_data方法。
就像这样:

# Generate a PDF document with information on the client and return it.
# The user will get the PDF as a file download.
def download_pdf
  send_data(generate_pdf, :filename => "my_file.pdf", :type => "application/pdf")
end
euoag5mw

euoag5mw2#

假设它是一个简单的机架终点:

class PdfEndpoint
  def call(env)
    [200, {"Content-Type" => "application/pdf", "Content-Disposition" => "attachment", "filename" => "filename.pdf"}, pdf_data]
  end
end

下面的Railscast可能会有所帮助:
http://railscasts.com/episodes/151-rack-middleware

6qftjkof

6qftjkof3#

如果控制器操作使用send_data,则选项:disposition应等于**“attachment”**(而不是“inline”)。
举个例子

def show
  client = Client.find(params[:id])
  respond_to do |format|
    format.pdf do
      send_data(generate_pdf(client), filename: "#{client.name}.pdf", type: 'application/pdf', disposition: 'attachement')
    end
  end
end

要生成PDF,可以使用Prawn

相关问题