当前位置:  开发笔记 > 小程序 > 正文

如何使用回形针缩略图多页pdf

如何解决《如何使用回形针缩略图多页pdf》经验,为你挑选了1个好方法。

我想让Paperclip为上传的多页PDF文件的每个页面创建2个缩略图.

我正在运行Paperclip 2.3.1.1并在我的Asset模型中使用它:

    has_attached_file :asset,
                  :styles => { :medium => "800x600>", :thumb => "100x100>" }

所以,当我上传一个3页的pdf文件时,我希望每页创建2个大拇指(一个在800x600,一个小图像在100x100).相反,我得到了3个文件夹(拇指,中等,原始) - 原始文件夹包含origianl pdf文件,而拇指和媒体各包含一个pdf,只有pdf的第一页所有像素化.

我需要做些什么才能让回形针为pdf的每一页创建2个拇指?理想情况下,我想像这样每页一个图像(创建6个图像):


资产/ 1 /中/文件0.png

资产/ 1 /中/文件1.png

资产/ 1 /中/文件2.png

资产/ 1 /拇指/文件0.png

资产/ 1 /拇指/文件1.png

资产/ 1 /拇指/文件2.png

有谁知道如何做到这一点?我需要定制处理器吗?如果是这样,处理器会是什么样子?

谢谢.



1> taro..:

这是我如何实现类似的任务.

文件型号:

class Document < ActiveRecord::Base

  has_many :pages, :dependent => :destroy

  has_attached_file :asset

  after_asset_post_process :make_pages

  private

  def make_pages
    if valid?
      Paperclip.run('convert', "-quality #{Page::QUALITY} -density #{Page::DENSITY} #{asset.queued_for_write[:original].path} #{asset.queued_for_write[:original].path}%d.png")
      images = Dir.glob("#{asset.queued_for_write[:original].path}*.png").sort_by do |line|
        line.match(/(\d+)\.png$/)[1].to_i
      end

      images.each do |page_image|
        pages.build(:asset => File.open(page_image))
      end
      FileUtils.rm images
    end
  end
end

页面模型:

class Page < ActiveRecord::Base

  belongs_to :document

  has_attached_file :asset

  QUALITY = 100
  DENSITY = '80x80'

end

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有