gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:48:47 28 4
gpt4 key购买 nike

我想上传 pdf 文件,并创建(作为一个单独的文件)pdf 前 3 页水平对齐的缩略图。我设法用 RMagick 做了一个回形针处理器来生成那个文件,但问题是:我想要单独的文件(带有缩略图样式的文件)有正确的扩展名(例如 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 文档,数组中的第二项应该强制格式,尽管它没有指定它是否也适用于自定义处理器。但值得一试。

关于ruby-on-rails - Paperclip & RMagick - PDF 的 3 页缩略图和重命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6919222/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com