我有一个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)图像中间的一个小块。
答案 0 :(得分:4)
我正在使用的方法是通过Dragonfly的ImageMagick插件中的thumb
方法动态生成缩略图PNG:
<%= image_tag rails_model.file.thumb('100x100#', format: 'png', frame: 0).url %>
只要安装了Ghostscript,ImageMagick / Dragonfly就会尊重格式/框架(即PDF的页面)设置。如果file
是图像而不是PDF,则会将其转换为PNG,并忽略帧编号(除非它是GIF)。
答案 1 :(得分: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
问题是你可能会把转换一个参数换成两个
答案 2 :(得分:0)
不转换依赖于扩展来确定类型?你确定临时文件有适当的扩展吗?