【问题标题】:Rails wicked_pdf (wkhtmltopdf) small images and bugs in production environmentRails wicked_pdf (wkhtmltopdf) 生产环境中的小图和bug
【发布时间】:2014-12-05 23:49:21
【问题描述】:

由于某种原因,我使用 wicked_pdf gem 生成 PDF 文件的 Rails 应用程序(使用软件 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

我很迷茫,有什么建议吗?

【问题讨论】:

  • 第 13 行应该有一个完全限定的路径,包括域,但最好有一个完整的文件系统路径。也许您可以将其拉入您的应用程序?与第 34 行相同,您能否将其放入您的应用程序中,并使服务器不必每次都进行远程 HTTP 调用来下载它(它可能会超时)。
  • 相同的 wkhtmltopdf 版本?有时版本在不同的仓库中是不同的。

标签: ruby-on-rails pdf ubuntu wkhtmltopdf wicked-pdf


【解决方案1】:

您的问题可能已经解决了。但是这个答案对其他人有帮助。

作为您的 pdf 示例,问题在于外部 css 和背景图像。我遇到了同样的问题,我在 pdf 模板中添加了如下内部 css 行。 (请看这个 issue)

background-image: url('file://<%= Rails.root.join('app/assets/images/colorful-triangles.jpg') %>');

此方法适用于开发和生产环境。

最好为 pdf 使用单独的 css 文件。这将加快您的 pdf 生成速度并降低服务器成本。并且,避免将不需要的 css 文件和图像加载到 pdf 布局中。

【讨论】:

    猜你喜欢
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    相关资源
    最近更新 更多