質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ImageMagick

ImageMagickとは、画像の表示や操作を行うオープンソースのソフトウェアです。プログラムはCで書かれており、GIFやJPEG、PDFなど画像ファイルフォーマット100種類以上に対応しています。

Q&A

解決済

1回答

1595閲覧

pdfの1ページ目だけを指定してPNG形式への変換を行う方法

denisov

総合スコア6

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ImageMagick

ImageMagickとは、画像の表示や操作を行うオープンソースのソフトウェアです。プログラムはCで書かれており、GIFやJPEG、PDFなど画像ファイルフォーマット100種類以上に対応しています。

0グッド

0クリップ

投稿2021/05/08 12:51

編集2021/05/15 10:09

□解決したいこと

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'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

version :thumb do process convert: ['png', 0] process resize_to_limit: [1000, 1000] end #cover は削除

とすることで解決できました。
みなさま、ご協力ありがとうございます。

投稿2021/05/17 22:10

denisov

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問