ruby on rails 中使用pdfkit生成pdf

说是使用pdfkit,其实做工作的还是wkhtmltopdf。

一、新建项目

  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可以自己获取。

  这样就可以用了。  

  

时间: 2024-11-10 11:37:05

ruby on rails 中使用pdfkit生成pdf的相关文章

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.

理解ruby on rails中的ActiveRecord::Relation

ActiveRecord::Relation是rails3中添加的.rails2中的finders, named_scope, with_scope 等用法,在rails3统一为一种Relation用法. 以下是返回ActiveRecord::Relation的方法: bind create_with distinct eager_load extending from group having includes joins limit lock none offset order preloa

ruby on rails 中使用phantomjs,并使用cookie

一.新建项目 rails new app --skip-bundle 完成后修改Gemfile文件:vim Gemfile 把source 修改成taobao或者ruby-china的源. 在这个文件里加入:gem 'phantomjs' 然后运行:bundle install 这样项目就新建完成了. phantomjs需要单独下载,如果不下载,这个gem运行的时候会自动下载,可能会比较慢. 二.生成pdf 创建一个controller在头部加上require 'phantomjs' 在form

Ruby On Rails中REST API使用示例——基于云平台+云服务打造自己的在线翻译工具

做为一个程序员可能在学习技术,了解行业新动态,解决问题时经常需要阅读英文的内容:而像我这样的英文小白就只能借助翻译工具才能理解个大概:不禁经常感慨,英文对学习计算机相关知识太重要了!最近发现IBM的云平台Blumemix,并且提供语言翻译的服务,感觉不错,就拿来研究学习一下:这里就分享一下我的研究学习过程,如何使用Ruby On Rails调用REST API打造自己的在线翻译工具,并演示如何把它发布到云平台上,让每个人都可以通过网络访问使用它. 应用效果展示 您可以通过点击效果图片的链接访问它

使用webdriver + phantomjs + pdfkit 生成PDF文件

实例 #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on Dec 6, 2013 @author: Jay <[email protected]> @description: use PhantomJS to parse a web page to get the geo info of an IP ''' import datetime import urllib # from pyquery import PyQuery as

Elasticsearch 的_msearch介绍及在ruby on rails 中的使用

一.基本介绍 _msearch就是multi search API使用的末端,它可以在一个相同的api中去执行多个查询请求. 请求的格式类似于大部API的格式,它的请求格式如下: header\n body\n header\n body\n header可以包含要查询的索引(可以是多个索引),可选的映射类型,还有search_type, preference和routing. body可以包含指定的搜索请求(包括:query.aggregations.from.size等等). 例子见官网:h

在C#.NET中,如何生成PDF文件?主要有以下几个途径

1.使用.NET文件流技术:若通过.NET的文件流技术生成PDF文件,必须对PDF文件的语法很清楚,例如BT表示实体内容开始:ET表示实体内容结束:TD表示换行等等.我们可以从Adobe的官方网站上下载PDF的语法说明文档,但文档几乎有1000页.如果熟悉好语法以后再编程,花费的时间肯定很长,而且生成的PDF文档不一定能满足要求.有关C# 代码参见附件.有关PDF文件的语法详见:http://partners.adobe.com/public/developer/en/pdf/PDFRefere

在HTML中优雅的生成PDF

代码 Html代码 <html> <head> <meta charset="UTF-8"> <script type="text/javascript" src="http://myxdoc.sohuapps.com/xdoc.js"></script> </head> <body style="height:100%; margin:0; overflow

json格式在ruby和rails中的注意事项

#虚拟网络拓扑的json数据 def topodata #@vnic = Vnic.all #flash.now[:notice] = 'Message sent!' #flash.now[:alert] = 'Message sent!' simple_json = { nodes: [{ name: 'bob', age: "22", awesome: "true" }, { name: 'bob', age: 22, awesome:true }], link