【问题标题】:rails 3 and PDFkitrails 3 和 PDFkit
【发布时间】:2011-09-23 14:56:52
【问题描述】:

我正在尝试关注这个tutorial

当我将.pdf 添加到我的网址时,它什么也不做。我的控制器有:

respond_to :html, :pdf.

我的 mime 类型已声明。

我也试过这个:

respond_to do |format|
  format.html
  format.pdf {
    html = render_to_string(:layout => false , :action => "www.google.fr")
    kit = PDFKit.new(html)
    send_data(kit.to_pdf, :filename => "candidats.pdf", :type => 'application/pdf')
    return # to avoid double render call
  }
end

但它不起作用,我没有收到错误。我的浏览器一直在等待 localhost,但没有任何反应。

那么我应该如何尝试使用 pdfkit 呢?

编辑 2:

根据我的 rails 日志,rails 成功渲染了 HTML。我在 .log 中看到了这一点,rails 不会将其发送到 webrick 或我的浏览器。我的浏览器一直在等待,等待,什么也没有发生。我这里只有小图。

编辑 3:我的 webrick 服务器似乎无法响应其他请求,一旦他开始获得我的网址的 .pdf 版本,有什么想法吗?

编辑 4:

我正在使用 rails 3.1、wkhtmltopdf 0.9.5(Windows 安装程序)和 pdfkit 0.5.2

【问题讨论】:

  • 抱歉,无法帮助您解决问题,但感谢您向我介绍 pdfkit!一直认为对虾很“好”。
  • 您发布的代码与您链接到的教程中显示的代码之间存在相当大的不匹配。你确定你在按照教程进行操作吗?

标签: ruby-on-rails wkhtmltopdf


【解决方案1】:

我找到了一种更好的方式来访问我的 .pdf 网址,即使在开发模式下也是如此。

# Enable threaded mode
config.threadsafe!

# Code is not reloaded between requests
#config.cache_classes = true

Config.cache_classes 是一个注释,因为我在没有注释时遇到了一些问题。这种方式 pdfkit 即使使用 rails 3.1 也能很好地工作。但是,您不会在请求之间重新加载代码。

这不是一个真正的问题,因为您首先处理您的 html,然后切换配置,以便检查 pdf 结果。这样您就不必担心生产数据库。

【讨论】:

  • 把这个设置放在开发模式下就可以了,但是你如何让它在生产中工作(你使用heroku吗?)。如果我在生产中设置 config.threadsafe! 标志,我的工作就会超时。
  • 我没有使用 Heroku。它在生产中非常适合我。 (但我还在当地)。这可能会对您有所帮助:jguimont.com/post/2627758108/…。我没试过。
【解决方案2】:

感谢另一个堆栈溢出答案,我得到了部分解决方案。

这行得通:

html = '<html><body>Toto de combats</body></html>'
@pdf = PDFKit.new(html)

send_data @pdf.to_pdf, :filename => "whatever.pdf",
                  :type => "application/pdf",
                  :disposition  => "attachement"

您可以将attachement 替换为inline,,这样pdf 就会显示在您的浏览器中。

在我谈到的堆栈溢出答案中(我不记得链接了),.to_pdf 丢失了,但它是强制性的。否则 PDF 阅读器无法识别。

我正在尝试使用 .pdf 网址完成这项工作。

编辑 3:

我的 .pdf 网址问题已解决。 rails 3.1 的已知问题,但谷歌无法找到它们。

解释:explanation

解决方法(尚未尝试)。 workaround

【讨论】:

    猜你喜欢
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    相关资源
    最近更新 更多