在本地开发环境(Windows)中,成功生成带有CSS样式的PDF文件。但是在托管于Linux服务器环境中生成的PDF文件没有应用CSS样式。以下是我的wkhtmltopdf(WickedPdf)配置:
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 Rails托管下的app\views\layouts中,布局内有pdf.html.erb、pdf_footer.html.erb和pdf_header.html.erb。以上内容在本地Windows开发环境中完美运行,但在生产环境中生成的PDF没有样式。请帮助我使用CSS样式生成PDF。
app/views/layouts/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 获取。因此,朋友们,请帮助我解决这个问题。
public
不是必需的。指定你的hostname
,然后跟着样式表路径,忽略public
方面,wkhtmltopdf
将为你获取这些 CSS。 - Virenwkhtmltopdf
是否记录了对CSS的请求。此外,我要求您在wkhtmltopdf
中进行测试,因为在过去,我曾经看到过不同版本的wkhtmltopdf
之间存在不相似之处,所以请确保您尝试实现的内容实际上受到该版本的wkhtmltopdf
支持。 - Viren