回形针RMagick - PDF 的 3 页缩略图和重命名 [英] Paperclip & RMagick - 3-page thumbnail of PDF and renaming

查看:60
本文介绍了回形针RMagick - PDF 的 3 页缩略图和重命名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想上传 pdf 文件,并创建(作为单独的文件)一个缩略图图像,其中 pdf 的前 3 页水平对齐.我设法用 RMagick 制作了一个 Paperclip Processor 来生成该文件,但问题是:我希望单独的文件(带有缩略图样式的文件)具有正确的扩展名(例如 jpg)而不是原始 pdf.如果我仍然可以通过使用带有样式的 url 方法获得正确的路径,那就太好了,例如:

I want to upload pdf file, and create (as a separate file) a thumbnail image with first 3 pages of the pdf aligned horizontally. I managed to do a Paperclip Processor with RMagick to generate that file, but the problem is: I want the seperate file (the one with style for thumbnail) have the right extension (ex. jpg) not original pdf. It would be great if I could still get the correct path by using the url method with style, for ex.:

>> 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 样式的不同扩展名.

So files are good, but I want a different extension for pdf_thumbnail style.

有什么帮助吗?或者也许是另一种方式/更干净的代码?

Any help? Or maybe another way/cleaner code?

推荐答案

我没有测试这个,但是怎么样:

I didn't test this, but how about:

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

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

According to the Paperclip docs the second item in the array should force the format, although it does not specify if it works with custom processors also. But worth a shot.

这篇关于回形针RMagick - PDF 的 3 页缩略图和重命名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆