3

在本地开发环境(Windows)中,已成功生成Css样式的pdf。但在没有托管应用CSS styles.Below产生的Linux服务器环境的PDF是我wkhtmltopdf(WickedPdf)配置Ruby on rails wkhtmltopdf css样式表在生产(linux)服务器上不呈现

WickedPdf.config = { 
#:wkhtmltopdf => "#{RAILS_ROOT}/pdfbin/wkhtmltopdf-amd64", 
:exe_path => "/home/software/.gems/bin/wkhtmltopdf", 
:layout => "layouts/pdf.html.erb", 
:margin => { :top=> 40, 
       :bottom => 20, 
       :left=> 30, 
       :right => 30}, 
:header => {:html => { :template=> 'layouts/pdf_header.html.erb'}}, 
:footer => {:html => { :template=> 'layouts/pdf_footer.html.erb'}} 
#:exe_path => '/usr/bin/wkhtmltopdf' 

}

,了解更多信息:

,这是我的目录结构,我是在Linux的轨道上托管应用程序\视图\布局,内部布局我有pdf.html.erb,pdf_footer.html.erb,pdf_header.html.erb上述东西完美的作品在我的本地Windows开发环境,但在生产PDF格式没有生成styles.so大家请帮助我用CSS st生成pdf yles

应用程序/视图/布局/ pdf.html.erb

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html dir="<%= (rtl?) ? 'rtl' : 'ltr' %>"> 
    <head> 
    <% @direction = (rtl?) ? 'rtl/' : '' %> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <%= stylesheet_link_tag([@direction+'application', @direction+'_styles/ui.all'])%> 
    <%= stylesheet_link_tag(*get_stylesheets) %> 
    <%= stylesheet_link_tag @direction+"_layouts/pdf" %> 
    <link rel="stylesheet" type="text/css" href="<%="#{RAILS_ROOT}/public/stylesheets/#{@direction}_layouts/pdf.css" %>" media="all" /> 
    <link rel="stylesheet" type="text/css" href="<%="#{RAILS_ROOT}/public/stylesheets/#{get_stylesheets}.css"%>" media="all" /> 
    <link rel="stylesheet" type="text/css" href="<%= "#{RAILS_ROOT}/public/stylesheets/#{@direction}_styles/ui.all.css"%>" media="all" /> 


    </head> 
    <body> 

    <%= yield %> 

    </body> 
</html> 

pdf.html.erb包含渲染PDF,在托管环境这些样式不被wkhtmltopdf获取所有样式信息。所以,请大家帮我

+0

什么都你请检查wkthtmltopdf库首先这将确保你在哪里出错了生产,并且我觉得样式表声明中的'public'不需要指定你的'hostname'后跟样式表路径忽略'public'方面' wkhtmltopdf'会为你取得这些CSS – Viren

+0

嗨Viren,我按照你的建议做了,但是输出pdf没有css样式,有没有其他的方式来跟踪这个bug。在商发展环境wkhtmltopdf lib目录信息存在自己的Rails应用程序中,为前应用程序/ pdfbin/wkhtmltopdf.exe,但在生产中我用wkhtmltopdf provied蒲式耳托管服务提供商(/home/software/.gems/bin/wkhtmltopdf)这是我为本地和生产环境做的唯一改变。 – Sam

+0

生成pdf时请检查您的日志请查看'wkhtmltopdf'是否记录了css的请求。此外,我问你过去做了测试,'wkhtmltopdf' bcoz我已经看到了各种版本的'wkhtmltopdf'所以只是检查是否你正在努力实现在该版本的实际支持联合国相似'wkhtmltopdf' – Viren

回答

2

当我在Heroku上部署我的应用程序时,我遇到了类似PDFKit的问题。 现在,它工作正常(我已经包括二进制到项目)。

在我的布局:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
    <title>Page title</title> 
    <meta http-equiv="X-UA-Compatible" content="IE=8" /> 
    <%= csrf_meta_tags %> 
    <style type="text/css" media="all"> 
    <%= Rails.application.assets['my_css'].to_s.gsub(/\/assets/,"#{root_url}assets") %> 
    </style> 
</head> 
<body> 
    <%= yield %> 
</body> 
</html> 

在初始化:

# config/initializers/pdfkit.rb 
PDFKit.configure do |config| 
    if Rails.env.staging? || Rails.env.production? 
    config.wkhtmltopdf = Rails.root.join('bin', 'wkhtmltopdf-amd64').to_s 
    else 
    config.wkhtmltopdf = '/Users/my_user_name/.rvm/gems/[email protected]_project/bin/wkhtmltopdf' 
    end 
    config.default_options = { 
    :page_size => 'A4', 
    :margin_top => '0in', 
    :margin_right => '0in', 
    :margin_bottom => '0in', 
    :margin_left => '0in', 
    :orientation => 'Portrait' 
    } 
    # Use only if your external hostname is unavailable on the server. 
    config.root_url = "http://localhost:3000" unless Rails.env.staging? || Rails.env.production? 
end 

也许这可以帮助你......还是别人......

+0

config.root_url = ....行是我的CSS和图像显示出来的魔力酱。原因是我的生产服务器是一个unix套接字,手动指定一个http位置帮助它找到其他资源。 –

+0

很高兴我可以帮助...以某种我无法想到的方式;-) –

相关问题