How to render a PDF in the browser that is retrieve via rails controller

久未见 提交于 2019-11-29 13:25:35

Assuming the PDF is saved in memory, use the send_data to send the data stream back in the browser.

def get_invoice
  @pdf = Recurly::Invoice.find(params[:number], :format => 'pdf')
  send_data @pdf, filename: "#{params[:number]}.pdf", type: :pdf
end

If the file is stored somewhere (but this doesn't seem to be your case), use send_file.

You don't render the PDF to the browser, you send it as a file. Like so:

# GET /something/:id[.type]
def show
  # .. set @pdf variable
  respond_to do |format|
    format.html { # html page }
    format.pdf do
      send_file(@pdf, filename: 'my-awesome-pdf.pdf', type: 'application/pdf')
    end
  end
end

The HTML response isn't needed if you aren't supporting multiple formats.

If you want to show the PDF in the browser instead of starting a download, add disposition: :inline to the send_file call.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!