Преобразование PDF в изображения с помощью Imagemagick RMagic

#ruby-on-rails #imagemagick #rmagick

#ruby-on-rails #imagemagick #rmagick

Вопрос:

В данный момент я использую paperclip для преобразования PDF-файлов в изображения.

Мой код выглядит примерно так

   def convert_keynote_to_slides
    system('convert -size 640x300 '    keynote.queued_for_write[:original].path   ' '   KEYNOTE_PATH   '/'   File.basename( self.keynote_file_name ) "d.png")

    slide_basename = File.basename( self.keynote_file_name )

    files = Dir.entries(KEYNOTE_PATH).sort
    for file in files
      #puts file if file.include?(slide_basename  '-')
      self.slides.build("slide" => "#{file}") if file.include?(slide_basename)
    end

  end
  

Я уверен, что это можно переработать, чтобы работать лучше.

Мои вопросы:

Есть ли способ выяснить ход ImageMagick, если нет, то как бы я поместил это в отложенное задание, поскольку я беспокоюсь, что это не будет хорошо масштабироваться.

Кто-нибудь может указать мне направление относительно того, как сделать этот код лучше / эффективнее. KEYNOTE_PATH указывает на общедоступный каталог, где все изображения хранятся в одной папке, я не уверен, нравится мне это или нет. Вероятно, было бы лучше присвоить каждому файлу случайное имя.

Ответ №1:

Я надеюсь, что вы выполняете обширную фильтрацию keynote.queued_for_write[:original].path и File.basename( self.keynote_file_name ) входных переменных, поэтому вы не подвержены атакам с внедрением метасимволов в оболочку.

Комментарии:

1. Я почти уверен, что это сделала моя Скрепка, однако я могу ошибаться. Я проверяю, чтобы убедиться, что файл является только PDF. Путь к файлу указан после того, как он был загружен.