□解決したいこと
rmagicとcarrierwaveを用いて、投稿したpdfをPNGに変換して表示する機能を実装しております。
その際、複数ページのpdfを投稿した際は1ページ目をPNGに変換して表示しようと考えております。
image_uploader.rb
1class ImageUploader < CarrierWave::Uploader::Base 2 include CarrierWave::RMagick 3 include CarrierWave::MiniMagick 4 #省略 5 version :thumb do 6 process :cover 7 process resize_to_limit: [1000, 1000] 8 process convert: 'png' 9 end 10 11 # 1ページ目だけを指定して抜き出す 12 def cover 13 image = Magick::Image.read(filename) 14 image[0] 15 end 16#省略
以上のようにproessからcoverを呼び出し、1ページ目を指定して抜き出す処理を行おうと考えています。しかし、def cover~endの記述の方法がわからず、処理がうまくいきません。
carrierwave及びrmagicを使用することが初めてですので、ご意見いただきたく投稿いたしました。
以下ターミナルに表示されるエラー
Started POST "/tips" for ::1 at 2021-05-15 18:45:39 +0900 Processing by TipsController#create as HTML Parameters: {"authenticity_token"=>"ToPsPsImK/oGmEf6e6zY57nIMovfzD1OSfKnRaVs8uz1awjjXkrp0R1ud27qCDPlFSqrebSuyLo6bgqZ5xGgdw==", "tip"=>{"title"=>"テスト", "name"=>"", "category_id"=>"3", "image"=>#<ActionDispatch::Http::UploadedFile:0x00007fde8d1156c0 @tempfile=#<Tempfile:/var/folders/6_/7bw90k293ydglk72y4jh4vkc0000gn/T/RackMultipart20210515-36097-1q99ybo.pdf>, @original_filename="建築豆知識アプリ.pdf", @content_type="application/pdf", @headers="Content-Disposition: form-data; name=\"tip[image]\"; filename=\"\xE5\xBB\xBA\xE7\xAF\x89\xE8\xB1\x86\xE7\x9F\xA5\xE8\xAD\x98\xE3\x82\xA2\xE3\x83\x95\xE3\x82\x9A\xE3\x83\xAA.pdf\"\r\nContent-Type: application/pdf\r\n">, "description"=>"aa"}, "commit"=>"投稿する"} User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1 Completed 500 Internal Server Error in 743ms (ActiveRecord: 12.6ms | Allocations: 21791) Magick::ImageMagickError (unable to open image '建築豆知識アプリ.pdf': No such file or directory @ error/blob.c/OpenBlob/3537):
実装の際、参考にしたサイトのURL
https://lab.unicast.ne.jp/2013/11/28/railsrmagickcarrierwaveを使ってアップロードしたpdfの表紙からpng画/
###試したこと
prosess :coverをコメントアウトし、1ページのみのpdfを投稿したところ、投稿に成功し画像の変換にも成功しました。
参考URLの方の記述は
def cover manipulate! do |frame, index| frame if index.zero? end end
とありますが、当該記述ですとエラーが発生してしまします。
そのため、Magick::Image.read(filename)で引数を指定して変換を試みましたが、
引数の指示が無効なため、エラー内にNo such fileとなっております。
pdfの1ページ目を指定して抜き出す方法についてもあまり参考がなかったものですので、お分かりの方、ご助言いただけないでしょうか。
何卒、ご教示いただきたくお願い申し上げます。
####環境
'rails', '~> 6.0.0'
carrierwave (2.2.1)
rmagick (4.2.2)
ruby '2.6.5'
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。