未应用PDFkit * .css样式表

时间:2015-04-03 16:46:58

标签: ruby-on-rails-4 pdfkit

我正在尝试使用pdfkit将显示图像从facebook cdn转换为pdf的html页面。我使用rails 4.2,pdfkit 0.6.2和wkhtmltopdf-binary 0.9.9.3。

# Gemfile
gem 'pdfkit'
gem 'wkhtmltopdf-binary'

# controller
def generate_pdf
  @booklet = Booklet.find params[:id]
  @cover = Image.last
  @images = @booklet.images.sort_by(&:uploaded_at)
  respond_to do |format|
    format.html
    format.pdf do
      html = render_to_string(layout: true , action: "generate_pdf.html.haml")
      kit = PDFKit.new(html, page_size: 'A4', orientation: 'Landscape')
      `sass vendor/assets/stylesheets/bootstrap.scss tmp/bootstrap.css`
      `sass vendor/assets/stylesheets/custom.scss tmp/custom.css`
      kit.stylesheets << "#{Rails.root}/tmp/bootstrap.css"
      kit.stylesheets << "#{Rails.root}/tmp/custom.css"
      pdf = kit.to_pdf
      send_data pdf, filename: 'booklet.pdf', type: 'application/pdf'
    end
  end
end

# application.scss
@import 'bootstrap';                                                                                                                                           
@import 'custom';

# config/application.rb
require 'pdfkit'
config.middleware.use PDFKit::Middleware

# config/initializers/mime_types.rb
Mime::Type.register "application/pdf", :pdf unless Mime::Type.lookup_by_extension(:pdf)

生成pdf并显示facebook cdn图像,但样式表没有被应用。我错过了什么?

我已在此处为上述问题创建了一个示例存储库:https://github.com/prasadsurase/topdf

仅供参考,bootstrap.css和custom.css放在供应商/资产中,扩展名已重命名为scss。在sass中,资产(字体和图像)已经使用&#39; font-path&#39;和&#39; image-url&#39;铁路助手。资产已预编译,应用程序-.... css已复制到pdf.css,资产从根路径引用(/)

2 个答案:

答案 0 :(得分:0)

Bootstrap是否可以正常运行应用程序中的其他页面? - 目的是确保正确配置元标记以包含Bootstrap文件,并指向Bootstrap文件(似乎在/ tmp中?)

另外,你在编写什么操作系统?我可以建议将"#{Rails.root}/tmp/bootstrap.css"替换为Rails.root.join('tmp','bootstrap.css')

让我知道这些是否有帮助 - 或者不是。

答案 1 :(得分:0)

切换到wicked_pdf gem。包含的资产助手工作得很好,宝石实际上更好地组织和记录。