一、新建项目
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运行完成。
这样就可以用了。
PDF文挡的加密有两种方法,一种是口令加密,另一种是证书加密。口令加密可以用Advanced PDF Password Recovery软件进行破解,但需要花费很长时间,如果密码长度较长且比较复杂,可能要让计算机运行几十小时甚至更多,如果不是万分重要的文挡,谁会去做这种劳民伤财的事呢?如果是用证书加密,解密绝无可能,除非你能下载到证书。因此,我没有在此文里叙述解密的问题。在线解密
http://rubypdf.appspot.com/pdfdecrypt.html
ImageMagick是一套稳定的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个图片或图片序列进行改变大小、旋转、锐化、减色或增加特效,并将操作的结果以相同格式或其它格式保存。对图片的操作,可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程来完成。同时ImageMagick提供了一个高质量的2D工具包,部分地支持SVG。现在,ImageMagic的主要精力集中在性能、减少bug以及提供稳定的API和ABI上。ImageMagick功能强大,却免费的。
ImageMagick的功能
包括:
将图片从一个格式转换到另一个格式
改变尺寸、旋转、锐化(sharpen)、减色、图片特效
缩略图片的合成图( a montage of image thumbnails)
适于web的背景透明的图片
将一组图片做成gif动画
将几张图片做成一张组合图片
在一个图片上写字或画图形
给图片加边框或框架
取得一些图片的特性信息