出于某种原因,我的Rails应用程序使用wicked_pdf gem生成PDF文件(使用软件wkhtmltopdf的gem)在开发和生产中生成不同的PDF。
这就是它在开发中输出的方式,几乎没问题:Click here to view 这就是生产中的输出,有很多错误:Click here to view。
系统的真正区别在于,在开发中我使用OSX中的wkhtmltopdf 0.9.9。在生产中我在Ubuntu中使用wkhtmltopdf 0.9.9。一旦Ubuntu Server 14.04不使用X Server(并且wkhtmltopdf需要它),我安装了Xorg并制作了以下包装器:
/usr/bin/wkhtmltopdf.sh
xvfb-run -a -s "-screen 0 1024x768x32" wkhtmltopdf "$@"
Rails初始化程序中的以下代码:
/config/initializers/wicked_pdf.rb
if Rails.env.production?
WickedPdf.config = {
:exe_path => '/usr/bin/wkhtmltopdf.sh'
}
else
WickedPdf.config = {
:exe_path => '/usr/local/bin/wkhtmltopdf'
}
end
这是我呈现PDF的控制器代码:
render :pdf => "curriculum",
:template => 'kurrics/kurrics.pdf.erb',
:margin => { :top => 4, :bottom => 4, :left => 0, :right => 0 },
:encoding => "utf8",
:print_media_type => true
如果需要,PDF模板布局:
https://gist.github.com/fschuindt/e173c05d0cc7378df105
我很丢失,任何提示?
答案 0 :(得分:0)
您的问题可能已经解决了。但这个答案对其他人有帮助。
作为您的pdf样本,问题在于外部css和背景图像。我遇到了同样的问题,我在pdf模板中添加了内部css行,如下所示。 (请看这个 issue)
background-image: url('file://<%= Rails.root.join('app/assets/images/colorful-triangles.jpg') %>');
此方法适用于开发和生产环境。
最佳做法是为pdf使用单独的css文件。这将加速您的pdf生成,并降低服务器成本。并且,避免将不需要的css文件和图像加载到pdf布局。