Ruby on rails 在浏览器中呈现PDF(而不是下载默认值)
我将PDF收据存储在S3中。我使用WickedPDF生成PDF文件。通过我们应用程序的管理区域,有一个“下载”链接,这只是到S3路径的直接链接: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
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”,
处置:“内联”
请不要只提供链接答案。互联网上的链接很快就会消失,然后这个答案就一文不值了。包括你想在答案中表达的相关部分