【问题标题】:Rails PDFKit - Errno::ENOENT (No such file or directory) when using to_fileRails PDFKit - 使用 to_file 时 Errno::ENOENT (没有这样的文件或目录)
【发布时间】:2017-10-27 17:02:24
【问题描述】:

每当我尝试使用 to_file 生成 pdf 时,进程就会挂起,当我停止开发服务器时,我会得到 Errno::ENOENT(没有这样的文件或目录 - 路径/to/pdf)。但是,我可以使用 to_pdf 内联呈现 pdf。我还能够从命令行在我尝试使用 to_file 生成 PDF 的文件夹中生成 PDF。

我正在使用 Rails 3.2.12 和 pdfkit 0.8.2。我试过使用 wkhtmltopdf 版本 0.9.6 到 0.12.4。我在 Ubuntu 14.04 上。

控制器示例:

html = render_to_string(:action => "show.html.erb", :formats => :html)
kit.stylesheets << "{Rails.root}/app/assets/stylesheets/stylesheet1.css"
kit.stylesheets << "#{Rails.root}/vendor/assets/stylesheets/stylesheet2.css"
kit.to_file("#{Rails.root}/folder_to_write_to/generated_pdf.pdf")

【问题讨论】:

  • pdf的文件名(子文件夹)的完整路径是否存在?
  • 是的。我可以使用 wkhtmltopdf 在控制器中引用的同一文件夹中从命令行生成 PDF。

标签: ruby-on-rails pdf ruby-on-rails-3.2


【解决方案1】:

原来问题是资产管道与 wkhtmltopdf 冲突。添加了 config.threadsafe!到 development.rb 并开始工作。

【讨论】:

  • 当我将它添加到 development.rb 时,我得到未定义的方法,显然这在 Rails 中不再需要?
【解决方案2】:

另一个问题可能是传递的默认选项。例如,当我保留默认的 print_media_type 选项时,在日志中发现此消息:

The switch --print-media-type, is not support using unpatched qt, and will be ignored."

只有当我重写它时它才对我有用,无论是在初始化器中还是像这样:
PDFKit.new(html, {print_media_type: false})

消息说它会被忽略,但事实并非如此。它导致文件无法生成。

【讨论】:

    猜你喜欢
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    相关资源
    最近更新 更多