安装了wkhtmltopdf的Windows 7
#/config/initializers/pdfkit.rb
require 'rbconfig'
PDFKit.configure do |config|
if !((Config::CONFIG['host_os'] =~ /mswin|mingw/).nil?)#if windows environment this is the path to wkhtmltopdf otherwise use gem binaries
config.wkhtmltopdf = "C:/Program\ Files\ (x86)/wkhtmltopdf/wkhtmltopdf.exe"
end
end
#show action I am working with
def show
@work_order = WorkOrder.find_by_id(params[:id])
respond_to do |format|
format.pdf #pdfkit handles this
format.html { render :partial => "show" } if request.xhr?
end
end
#config/initializers/mime_types.rb
Mime::Type.register "application/pdf", :pdf
所有这些我得到一个空白的Pdf发送到浏览器并且日志输出说明了
Started GET "/work_orders/6.pdf" for 127.0.0.1 at 2011-05-17 15:51:31 -0400
Processing by WorkOrdersController#show as HTML
Parameters: {"id"=>"6"}
User Load (3.0ms) SELECT `users`.* FROM `users` WHERE (`users`.`id` = 1) LIMIT 1
SQL (6.0ms) describe `roles_users`
Role Load (3.0ms) SELECT `roles`.* FROM `roles` WHERE (`roles`.`id` = 980190962) LIMIT 1
WorkOrder Load (4.0ms) SELECT `work_orders`.* FROM `work_orders` WHERE (`work_orders`.`id` = 6) LIMIT 1
Completed 406 Not Acceptable in 265ms
我希望你能帮助我
编辑:我删除了从show动作到
的所有内容def show
@work_order = WorkOrder.find_by_id(params[:id])
end
现在我得到200但页面仍然呈现空白
Started GET "/work_orders/6.pdf" for 127.0.0.1 at 2011-05-17 17:15:26 -0400
Processing by WorkOrdersController#show as HTML
Parameters: {"id"=>"6"}
User Load (19.0ms) SELECT `users`.* FROM `users` WHERE (`users`.`id` = 1) LIMIT 1
SQL (34.0ms) describe `roles_users`
Role Load (17.0ms) SELECT `roles`.* FROM `roles` WHERE (`roles`.`id` = 980190962) LIMIT 1
WorkOrder Load (9.0ms) SELECT `work_orders`.* FROM `work_orders` WHERE (`work_orders`.`id` = 6) LIMIT 1
Rendered work_orders/show.html.erb within layouts/application (10.0ms)
Completed 200 OK in 741ms (Views: 58.0ms | ActiveRecord: 79.0ms)
EDIT2: 我现在没有布局渲染,页面不再是空白,但字符都是搞乱的
答案 0 :(得分:1)
如果您希望PDFKit在网址以.pdf
结尾时自动处理所有内容,您还需要配置PDFKit middleware
。
来源:https://github.com/jdpace/PDFKit
<强>中间件强>
PDFKit附带一个中间件,允许用户通过将.pdf附加到URL来获取您网站上任何页面的PDF视图。 中间件设置
Rails应用
# in application.rb(Rails3) or environment.rb(Rails2)
require 'pdfkit'
config.middleware.use PDFKit::Middleware
使用PDFKit选项
# options will be passed to PDFKit.new
config.middleware.use PDFKit::Middleware, :print_media_type => true