【问题标题】:Preview of PDF while using Minimagick and Carrierwave in Rails在 Rails 中使用 Minimagick 和 Carrierwave 时预览 PDF
【发布时间】:2018-04-10 10:03:13
【问题描述】:

我一直在尝试开发一个网站,该网站允许上传各种类型的文档,包括 pdf。以下是我的上传者:

class PictureUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick

def store_dir
 "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end

version :jpg do
 process :convert_to_images
 process :set_content_type_jpg

def convert_to_images(*args)
 image = MiniMagick::Image.open(current_path)
 image.pages.each_with_index do |page, index|
  MiniMagick::Tool::Convert.new do |convert|
   convert.background 'white'
   convert.flatten
   convert.density 300
   convert.quality 95
   convert << page.path
   convert << "#{CarrierWave.root}/#{store_dir}/image-#{index}.jpg"
  end
 end
end
end        

def set_content_type_jpg(*args)
self.file.instance_variable_set(:@content_type, "image/jpg")
end

def extension_whitelist
  %w(jpg jpeg gif png pdf)
end

end

到目前为止,该站点将允许将所有列入白名单的文件类型上传到服务器,并且实际上会显示除 pdf 之外的所有文件。但是,Pdfs 只会显示损坏的图像,而不是该 pdf 的图像。我能做些什么来解决这个问题?

【问题讨论】:

标签: ruby-on-rails pdf carrierwave minimagick


【解决方案1】:

您应该首先将pdf转换为jpg或其他图像,如here所述,然后尝试通过上述代码运行转换后的文件

【讨论】:

  • 好的。我将该代码放在块中的所有其他内容之上,现在我收到“未定义的方法 `mime'”错误。
猜你喜欢
  • 2015-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-10
  • 1970-01-01
  • 2015-03-15
相关资源
最近更新 更多