【问题标题】:How to work with Dragonfly's before_serve block to watermark pdf files如何使用 Dragonfly 的 before_serve 块为 pdf 文件添加水印
【发布时间】:2013-04-02 12:56:00
【问题描述】:

我正在尝试在使用蜻蜓 gem 下载文件时提供带有用户电子邮件地址和时间戳水印的 PDF 文件,但我在使用 before_serve 块时遇到了一些麻烦。我无法解决的是如何使用蜻蜓传递给块的作业对象以及如何应用自定义处理器。直接在作业对象上调用进程似乎不会运行处理器

app.configure do |config|
  config.server.before_serve do |job, env|
    user = # user record grabbed from database
    job.process(:watermark, user: user)
  end
end

但是,如果我对 rails 模型返回的蜻蜓对象调用 process,则 pdf 会被正确处理,但我不确定如何实际指示蜻蜓发送到浏览器的内容

app.configure do |config|
  config.server.before_serve do |job, env|
    user = # user record grabbed from database
    report = # report grabbed from database
    report.pdf.process(:watermark, user: user)
  end
end

因此,在这两种情况下,浏览器都会返回相同的文件,即原始的无水印版本。也许我想让蜻蜓做一些它在 before_serve 块中不应该做的事情?我的替代实现是阻止对直接文件下载的访问,并在 Rails 控制器中执行所有这些操作。如果可能,我想使用蜻蜓的 before_serve 块,因为我已经在块中添加了所有身份验证,以确保允许用户下载文件。

谢谢

【问题讨论】:

    标签: ruby-on-rails-3 dragonfly-gem


    【解决方案1】:

    经过进一步调查,似乎最好的解决方案是在 before_serve 块中阻止所有直接文件访问,并使用标准 Rails 控制器为文件添加水印并呈现以供下载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多