ruby on rails 中使用phantomjs 生成pdf
一、新建项目
rails new app --skip-bundle
完成后修改Gemfile文件:vim Gemfile
把source 修改成taobao或者ruby-china的源。
在这个文件里加入:gem 'phantomjs'
然后运行:bundle install
这样项目就新建完成了。
二、生成pdf
创建一个controller在头部加上require 'phantomjs',在里面加入一个获取pdf的get方法:get_pdf
在这个方法里加入如下代码:
Phantomjs.base_dir = "/path/project_name/bin/phantomjs/" #phantomjs将要安装的目录
Phantomjs.run('/path/project_name/public/generate_pdf.js')
send_file("public/mypdf.pdf", :filename => "mypdf.pdf", :type => "application/pdf")
在generate_pdf.js加入如下代码:
var page = require('webpage').create();
page.open('http://www.baidu.com');
page.onLoadFinished = function() {
page.render('public/mypdf.pdf');
phantom.exit();
}
三、运行
启动服务:rails s
在地址栏里输入http://localhost:3000/controller/get_pdf
第一次请求这个方法,会安装phantomjs到/path/project_name/bin/phantomjs/这个目录。
等安装完成后,就可以看到保存要下的pdf了:
这样这成功了。
注意:这样导出的pdf不包含css样式里的背景和背景图片。