gpt4 book ai didi

ruby-on-rails-3.1 - 无法使用 Ruby on Rails 的 Prawn PDF 将 PDF 呈现到浏览器

转载 作者:行者123 更新时间:2023-12-04 00:39:56 25 4
gpt4 key购买 nike

我正在 Rails (3.1.1) 的最新版本的 Prawn 库 (v1.0.1rc) 中创建一个 pdf 文件,当我运行我的代码时,它会将 PDF 生成到应用程序的根目录中。

我不要这个。我希望它将输出呈现到用户的浏览器窗口中,而不将其本地保存到服务器。

请告诉我如何实现这一目标。这是我的文件:

View /foo/show.pdf.erb :

<%=

require 'prawn'

pdf = Prawn::Document.new(:page_size => 'LETTER', :page_layout => :landscape, :margin => 50, :top_margin => 20, :bottom_margin => 50)

.....

render_file("foo.pdf")

%>

Controller /foo_controller :
class AuditsController < ApplicationController
before_filter :authenticate_user!
layout 'application'
can_edit_on_the_spot
respond_to :html, :xml, :js, :pdf

def index
@audits = Audit.all
respond_with @audits
end

def show
@audit = Audit.find(params[:id])
respond_with @audit do |format|
format.pdf { render :layour => false }
end
end

最佳答案

Gemfile

gem 'prawn'

/config/initializers/mime_types.rb
Mime::Type.register "application/pdf", :pdf

审计 Controller
def show
@audit = Audit.find(params[:id])
respond_to do |format|
format.html
format.pdf do
pdf = Prawn::Document.new
pdf.text "This is an audit."
# Use whatever prawn methods you need on the pdf object to generate the PDF file right here.

send_data pdf.render, type: "application/pdf", disposition: "inline"
# send_data renders the pdf on the client side rather than saving it on the server filesystem.
# Inline disposition renders it in the browser rather than making it a file download.
end
end
end

我以前用的 prawnto在 Rails 3.1 之前是 gem,但如果没有一点黑客攻击,它就无法工作了。这是通过直接访问 Prawn 来实例化和显示 3.1 中 PDF 对象的更简洁的方法。

我直接从 Ryan Bates 的一个人那里得到了这项技术 Railscasts .从那以后一直在使用它。您可以查看该特定剧集 here .他更详细地介绍了 Prawn 的子类化和将 PDF 生成代码移出 Controller 。还展示了许多有用的 Prawn 方法来帮助您入门。强烈推荐。

许多剧集都是免费的,但修订后的《 Prawn 》剧集是只有付费订阅才能获得的剧集之一。不过,每月 9 美元,订阅很快就会收回成本。

关于ruby-on-rails-3.1 - 无法使用 Ruby on Rails 的 Prawn PDF 将 PDF 呈现到浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8658302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com