一、新建项目
rails new mypdf --skip-bundle
进入项目:cd mypdf,打开Gemfile:vim Gemfile
修改source为https://ruby.taobao.com
添加:gem 'pdfkit'
运行bundle install
二、配置
在项目目录下的config/initializers里加上pdfkit.rb文件,修改内容为:
PDFKit.configure do |config|
config.wkhtmltopdf = '/path/wkhtmltopdf'
end
config.wkhtmltopdf配置的是wkhtmltopdf的路径,要确保pdfkit能找到它。
其它的配置请参考:http://wkhtmltopdf.org/usage/wkhtmltopdf.txt,里面的横杠用下划线代替。
三、使用
在controller里的相应位置加入:
用渲染的模版内容生pdf:
html = render_to_string(:template =>"pdf_template.erb",:layout =>false)
kit = PDFKit.new(html)
kit.stylesheets <<"#{Rails.root}/app/assets/assets/stylesheets/pdf.css"
#kit.to_pdf # inline PDF
#kit.to_file('/path/pdf.pdf')
send_data(kit.to_pdf, :filename =>"mypdf.pdf", :type =>"application/pdf")
#render :text =>kit.to_pdf
用url的内容生成pdf:
url = "http://www.baidu.com"
kit = PDFKit.new(url)
# kit.stylesheets <<"#{Rails.root}/app/assets/assets/stylesheets/pdf.css" # 用url时就不可以用css样式了。
#kit.to_pdf # inline PDF
#kit.to_file('/path/pdf.pdf')
send_data(kit.to_pdf, :filename =>"mypdf.pdf", :type =>"application/pdf")
注: kit = PDFKit.new(url, cookie: {"cookie_name"=>"cookie_content"}),如果需要登录的话,可以用cookie。cookie可以自己获取。
另外,如果你的页面里有js需要运行,最好在设置文件里设置如下:
javascript_delay: 1000
它的默认值是200毫秒。把加大一些,以便让js运行完成。
这样就可以用了。
《Ruby程序员修炼之道第2版》百度网盘pdf最新全集下载:
链接:https://pan.baidu.com/s/1k6hnORSDF2YmcCA6y1OiLA
?pwd=tlco 提取码:tlco简介:这是一本深受好评的书。它不仅是一本纯Ruby的书,也不仅是一本纯Rails的书,而是一本为Rails程序员“优化”过的Ruby书。
首先告诉你,这个是一个相当深层次的问题."标记",这个词在PDF标准的英文原文是"Name",是一种PDF的标准数据对象.通常用于对某一特定数据的命名,以方便在别处调用.
好比人的姓名来代表一个确定的人."发现无法识别的标记‘n1’"的意思就相当于,程序在pdf里看到一个人名,但不知道这个名字指的是谁,人不知道跑哪里去了.
由于pdf本身是一个非常精密的文档格式,任何随意改动都会是之不再可用(这也是PDF安全性的保障).同时修复也是非常困难的事情.所以一般情况下,我们只能跳过这个出错的pdf文档.或者从原始数据文件重新生成这个PDF文档.
你可以碰碰运气,如果这个问题PDF文档可以正常打印,可以用PDF虚拟打印机去重新生成一个pdf.运气好的话能忽略那个没用标记.如果不行,修改的难度就太大了.不值得再浪费时间了.