2

我有一个 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) 图像中间的一个小块。

4

3 回答 3

4

我为此使用的一种方法是通过thumbDragonfly 的 ImageMagick 插件中的方法即时生成缩略图 PNG:

<%= image_tag rails_model.file.thumb('100x100#', format: 'png', frame: 0).url %>

只要安装了 Ghostscript,ImageMagick/Dragonfly 就会支持格式/框架(即 PDF 的页面)设置。如果file是图像而不是 PDF,它将被转换为 PNG,并且忽略帧号(除非它是 GIF)。

于 2014-07-04T14:47:41.557 回答
0

尝试这个

def to_pdf_thumbnail(temp_object)
  ret = ''
  tempfile = new_tempfile('png')
  system("convert",tmp_object.path[0],tmpfile.path)
  tempfile.open {|f| ret = f.read }
  ret
end

问题是您可能会处理转换一个参数而不是两个

于 2012-04-02T14:32:03.040 回答
0

不转换依赖扩展来确定类型吗?您确定临时文件具有正确的扩展名吗?

于 2012-04-02T17:28:15.493 回答