我有一个 Dragonfly 处理器,它应该获取给定的 PDF 并返回文档第一页的 PNG。
当我通过控制台运行该处理器时,我会按预期返回 PNG,但是,在 Rails 上下文中,我会以 PDF 形式获取它。
我的代码大致与此类似:
def to_pdf_thumbnail(temp_object)
tempfile = new_tempfile('png')
args = "'#{temp_object.path}[0]' '#{tempfile.path}'"
full_command = "convert #{args}"
result = `#{full_command}`
tempfile
end
def new_tempfile(ext=nil)
tempfile = ext ? Tempfile.new(['dragonfly', ".#{ext}"]) : Tempfile.new('dragonfly')
tempfile.binmode
tempfile.close
tempfile
end
现在,tempfile 肯定会创建一个 .png 文件,但转换程序会生成一个 PDF(在 Rails 3 中运行时)。
对于这里可能出现的问题有什么想法吗?内容类型是否有些令人困惑?
我应该补充一点,此转换和标准转换 (asset.png.url
) 都会生成一个 PDF,其中 PDF 内容作为 (A4) 图像中间的一个小块。
最佳答案
我为此使用的一种方法是通过 Dragonfly 的 ImageMagick 插件中的 thumb
方法动态生成缩略图 PNG:
<%= image_tag rails_model.file.thumb('100x100#', format: 'png', frame: 0).url %>
只要安装了 Ghostscript,ImageMagick/Dragonfly 就会遵循格式/框架(即 PDF 的页面)设置。如果file
是图像而不是PDF,它将被转换为PNG,并且帧号被忽略(除非它是GIF)。
关于ruby-on-rails - 使用 Dragonfly 将 PDF 转换为 PNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9977829/