Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在浏览器中呈现PDF(而不是下载默认值)_Ruby On Rails_Pdf_Amazon S3_Wicked Pdf - Fatal编程技术网

Ruby on rails 在浏览器中呈现PDF(而不是下载默认值)

Ruby on rails 在浏览器中呈现PDF(而不是下载默认值),ruby-on-rails,pdf,amazon-s3,wicked-pdf,Ruby On Rails,Pdf,Amazon S3,Wicked Pdf,我将PDF收据存储在S3中。我使用WickedPDF生成PDF文件。通过我们应用程序的管理区域,有一个“下载”链接,这只是到S3路径的直接链接: link_to "Download", order.receipt.url unless order.receipt.blank? 你知道如何让它默认在浏览器窗口中打开而不是直接下载吗?呈现pdf: render pdf: "Invoice", orientation: 'Portrait', template: "Inv

我将PDF收据存储在S3中。我使用WickedPDF生成PDF文件。通过我们应用程序的管理区域,有一个“下载”链接,这只是到S3路径的直接链接:

link_to "Download", order.receipt.url unless order.receipt.blank?

你知道如何让它默认在浏览器窗口中打开而不是直接下载吗?

呈现pdf:

render pdf: "Invoice",
       orientation: 'Portrait',
       template: "Invoice/download",
       page_size:  'Letter'

诀窍是更改标题,如果您链接到静态文件,您的Web服务器(S3)将添加标题
内容处置:附件;filename=“name.pdf”
如果没有此标题,浏览器将尝试呈现此内联(同一窗口)

要解决此问题,您可以在控制器上执行一个操作,该操作会关闭文件本身并将其传送给用户

require "open-uri"

class OrderController
  def  receipt
    @order=Order.find(....)

    render text: open(@order.receipt.url).read, content_type=>'application/pdf'
  end
end

显然,向其中添加一个路由,标识该操作的顺序和链接,这将使rails下载的pdf不带“附件”标题。

使用send\u file方法。这是一个可以帮助你的链接。

如果PDF应该显示在页面的一部分,您可以在页面上使用以下代码


设备上没有PDF渲染功能

如果您只想将PDF显示为整页文件,请在控制器中使用它(动态创建PDF)

pdf=@sales\u invoice.pdf
发送数据pdf.render,文件名:“sales\u invoice.pdf”,
键入:“application/pdf”,
处置:“内联”

请不要只提供链接答案。互联网上的链接很快就会消失,然后这个答案就一文不值了。包括你想在答案中表达的相关部分