Bet*_*min 12 prawn ruby-on-rails-3.1
我正在Rails(3.1.1)中的最新版本的Prawn库(v1.0.1rc)中创建一个pdf文件,当我运行我的代码时,它会将PDF生成到应用程序的根目录中.
我不想要这个.我希望它将输出呈现到用户的浏览器窗口中,而不将其本地保存到服务器.
请告诉我如何实现这一目标.这是我的文件:
views/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")
%>
Run Code Online (Sandbox Code Playgroud)
controllers/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
Run Code Online (Sandbox Code Playgroud)
Vic*_*ash 20
的Gemfile
gem 'prawn'
Run Code Online (Sandbox Code Playgroud)
/config/initializers/mime_types.rb
Mime::Type.register "application/pdf", :pdf
Run Code Online (Sandbox Code Playgroud)
AuditsController
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
Run Code Online (Sandbox Code Playgroud)
我曾经prawnto在Rails 3.1之前使用过gem,但是如果没有一点黑客攻击它就行不通.通过直接访问Prawn,这是一种更简洁的方法来实例化和显示3.1中的PDF对象.
我直接从Ryan Bates的Railscasts中获得了这项技术.从那以后一直在使用它.您可以在此处查看该特定剧集.他详细介绍了如何对Prawn进行子类化并将PDF生成代码移出控制器.还展示了许多有用的Prawn方法来帮助您入门.强烈推荐.
很多剧集都是免费的,但修改过的Prawn剧集只是付费订阅的一部分.虽然每月9美元,订阅很快就能收回成本.
| 归档时间: |
|
| 查看次数: |
8407 次 |
| 最近记录: |