#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. Путь к файлу указан после того, как он был загружен.