加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Paperclip&RMagick – PDF和重命名的3页缩

发布时间:2020-12-17 01:28:40 所属栏目:百科 来源:网络整理
导读:我想上传pdf文件,并创建(作为单独的文件)缩略图图像,其中PDF的前3页水平对齐. 我设法用RMagick做一个Paperclip处理器来生成该文件,但问题是:我希望单独的文件(带有缩略图样式的文件)具有正确的扩展名(例如jpg)而不是原始的pdf. 如果我仍然可以通过使用带样
我想上传pdf文件,并创建(作为单独的文件)缩略图图像,其中PDF的前3页水平对齐.
我设法用RMagick做一个Paperclip处理器来生成该文件,但问题是:我希望单独的文件(带有缩略图样式的文件)具有正确的扩展名(例如jpg)而不是原始的pdf.
如果我仍然可以通过使用带样式的url方法获得正确的路径,那将是很好的,例如:

>> attachment.url
=> "/some/path/id/original/test.pdf" # original file
>> attachment.url(:pdf_thumbnail)
=> "/some/path/id/pdf_thumbnail/test.jpg" # jpg file,not pdf

一些代码:

处理器

module Paperclip
  class PdfThumbnail < Processor

    def initialize(file,options = {},attachment = nil)
      super
      @file = file
      @instance = options[:instance]
      @current_format   = File.extname(@file.path)
      @basename         = File.basename(@file.path,@current_format)
    end

    def make
      dst = Tempfile.new([@basename,'jpg'].compact.join("."))
      dst.binmode
      pdf = ::Magick::ImageList.new(File.expand_path(@file.path))
      image = pdf[0..2].append(false)
      image.format = 'JPG'
      image.write(File.expand_path(dst.path))
      dst.flush
      return dst
    end
  end
end

型号(提取)

has_attached_file :file,:styles => {:pdf_thumbnail => ""},:processors => [:pdf_thumbnail]

它结束于:

$tree .
.
`-- 46
    |-- original
    |   `-- test.pdf
    `-- pdf_thumbnail
        `-- test.pdf

和:

$file 46/original/test.pdf
46/original/test.pdf: PDF document,version 1.4
$file 46/pdf_thumbnail/test.pdf 
46/pdf_thumbnail/test.pdf: JPEG image data,JFIF standard 1.01

所以文件很好,但我想要pdf_thumbnail样式的不同扩展名.

有帮助吗?或者也许是另一种方式/清洁代码?

解决方法

我没试过这个,但怎么样:

has_attached_file :file,:styles => { :pdf_thumbnail => ["",:jpg] } ...

根据Paperclip文档,数组中的第二项应该强制格式化,尽管它没有指定它是否也适用于自定义处理器.但值得一试.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读