質問編集履歴

3

表題:変更、環境追記、試したこと、変更・追記

2021/05/15 10:09

投稿

denisov
denisov

スコア6

test CHANGED
@@ -1 +1 @@
1
- 複数ページpdfをPNG変換時のエラー
1
+ pdfの1ページ目だけ指定してPNG形式への変換を行う方法
test CHANGED
@@ -6,95 +6,97 @@
6
6
 
7
7
 
8
8
 
9
- その際、複数ページのpdfを投稿した際は1ページ目をPNGに変換して表示しようと考えておりますが、複数ページのpdfを実投稿した際に以下URLのエラーが生じました
9
+ その際、複数ページのpdfを投稿した際は1ページ目をPNGに変換して表示しようと考えております。
10
10
 
11
11
 
12
12
 
13
- ```html
13
+ ```image_uploader.rb
14
+
15
+ class ImageUploader < CarrierWave::Uploader::Base
16
+
17
+ include CarrierWave::RMagick
18
+
19
+ include CarrierWave::MiniMagick
20
+
21
+  #省略
22
+
23
+ version :thumb do
24
+
25
+ process :cover
26
+
27
+ process resize_to_limit: [1000, 1000]
28
+
29
+ process convert: 'png'
30
+
31
+ end
14
32
 
15
33
 
16
34
 
17
- NoMethodError in TipsController#create
35
+ # 1ページ目だけを指定して抜き出す
18
36
 
19
- undefined method `zero?' for nil:NilClass
37
+ def cover
38
+
39
+ image = Magick::Image.read(filename)
40
+
41
+ image[0]
42
+
43
+ end
44
+
45
+ #省略
46
+
47
+ ```
48
+
49
+ 以上のようにproessからcoverを呼び出し、1ページ目を指定して抜き出す処理を行おうと考えています。しかし、def cover~endの記述の方法がわからず、処理がうまくいきません。
50
+
51
+ carrierwave及びrmagicを使用することが初めてですので、ご意見いただきたく投稿いたしました。
52
+
53
+
54
+
55
+
56
+
57
+ 以下ターミナルに表示されるエラー
58
+
59
+ ```
60
+
61
+ Started POST "/tips" for ::1 at 2021-05-15 18:45:39 +0900
62
+
63
+ Processing by TipsController#create as HTML
64
+
65
+ 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"=>"投稿する"}
66
+
67
+ User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1
68
+
69
+ Completed 500 Internal Server Error in 743ms (ActiveRecord: 12.6ms | Allocations: 21791)
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+ Magick::ImageMagickError (unable to open image '建築豆知識アプリ.pdf': No such file or directory @ error/blob.c/OpenBlob/3537):
20
78
 
21
79
  ```
22
80
 
23
81
 
24
82
 
25
- エラーのスクショ
26
83
 
27
84
 
28
85
 
29
- [https://gyazo.com/1b72cb198571d7eca74bd98d1e6a686a](https://gyazo.com/1b72cb198571d7eca74bd98d1e6a686a)
86
+
87
+ 実装の際、参考にしたサイトのURL
88
+
89
+ [https://lab.unicast.ne.jp/2013/11/28/railsrmagickcarrierwaveを使ってアップロードしたpdfの表紙からpng画/](https://lab.unicast.ne.jp/2013/11/28/railsrmagickcarrierwave%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%97%E3%81%9Fpdf%E3%81%AE%E8%A1%A8%E7%B4%99%E3%81%8B%E3%82%89png%E7%94%BB/)
30
90
 
31
91
 
32
92
 
33
- 上記エラーを解決したいのですが、carrierwave及びrmagicを使用することが初めてですので、ご意見いただきたく投稿いたしました。
93
+ ###試したこと
34
94
 
95
+ prosess :coverをコメントアウトし、1ページのみのpdfを投稿したところ、投稿に成功し画像の変換にも成功しました。
35
96
 
97
+ 参考URLの方の記述は
36
98
 
37
- 問題のエラーのコード
38
-
39
-
40
-
41
- image_uploader.rb
42
-
43
-
44
-
45
- ```ruby
99
+ ```
46
-
47
- class ImageUploader < CarrierWave::Uploader::Base
48
-
49
- # Include RMagick or MiniMagick support:
50
-
51
- include CarrierWave::RMagick
52
-
53
- include CarrierWave::MiniMagick
54
-
55
- process resize_to_fit: [800, 800]
56
-
57
-
58
-
59
- 省略
60
-
61
-
62
-
63
- def store_dir
64
-
65
- # "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
66
-
67
- if Rails.env.test?
68
-
69
- "uploads_#{Rails.env}/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
70
-
71
- else
72
-
73
- "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
74
-
75
- end
76
-
77
- end
78
-
79
-
80
-
81
- 省略
82
-
83
-
84
-
85
- version :thumb do
86
-
87
- process :cover
88
-
89
- process :resize_to_limit => [500, 500]
90
-
91
- process :convert => 'png'
92
-
93
- end
94
-
95
-
96
-
97
- #1ページ目だけを指定してPNG形式への変換を行う
98
100
 
99
101
  def cover
100
102
 
@@ -106,164 +108,34 @@
106
108
 
107
109
  end
108
110
 
111
+ ```
109
112
 
113
+ とありますが、当該記述ですとエラーが発生してしまします。
110
114
 
115
+ そのため、Magick::Image.read(filename)で引数を指定して変換を試みましたが、
116
+
111
-  省略
117
+ 引数の指示が無効なため、エラー内にNo such fileとなっております。
112
118
 
113
119
 
114
120
 
115
- end
121
+ pdfの1ページ目を指定して抜き出す方法についてもあまり参考がなかったものですので、お分かりの方、ご助言いただけないでしょうか。
116
-
117
- ```
118
122
 
119
123
 
120
-
121
- _*new_edit.html.erb(new.html の render)*
122
-
123
-
124
-
125
- ```html
126
-
127
- 省略
128
-
129
- <div class="tip-images">
130
-
131
- <div class="tip-image-main">
132
-
133
- <p class="tip-image-main-text">画像(メイン)</p>
134
-
135
- <div id="image-list">
136
-
137
- <%= form.file_field :image, class: 'tip-image-main-img', id: 'tip-image-main-img' %>
138
-
139
- </div>
140
-
141
- </div>
142
-
143
- </div>
144
-
145
- 省略
146
-
147
- ```
148
-
149
-
150
-
151
- *main_*search_area.htmlerb(index.html の render)
152
-
153
-
154
-
155
- ```html
156
-
157
- <% if @tips.present? %>
158
-
159
- <% @tips.each do |f| %>
160
-
161
- <div class="tiped">
162
-
163
- <div class="tiped-contents">
164
-
165
- <div class="tiped-title">
166
-
167
- <%= link_to f.title, tip_path(f.id, method: :get) %>
168
-
169
- </div>
170
-
171
- <p class="tiped-title-contents">投稿時間 : <%= l f.updated_at%></p>
172
-
173
- <p class="tiped-title-contents">タグ : <% f.tags.each do |tag| %> <%=tag.name%> <% end %> </p>
174
-
175
- <p class="tiped-title-contents">カテゴリー : <%= Category.data[f.category_id - 1][:name] %></p>
176
-
177
- <p class="tiped-title-contents">投稿者 : <%= link_to f.user.nickname, "/users/#{f.user.id}" %> </p>
178
-
179
- <p class="tiped-title-contents">説明 : <br> <%= f.description%></p>
180
-
181
- </div>
182
-
183
- <div class="tiped-image-field">
184
-
185
- <div class="main-image", id="main-image">
186
-
187
- <% if f.image.present? && f.image.content_type == 'application/pdf' %>
188
-
189
- #↓投稿した画像を表示
190
-
191
- <%= link_to image_tag(f.image_url(:thumb).to_s, class: 'uped-image-main', id:'uped-image-main'), tip_path(f.id, method: :get) %>
192
-
193
- <% elsif f.image.present? %>
194
-
195
- <%= link_to image_tag(f.image.url, class: 'uped-image-main', id:'uped-image-main'), tip_path(f.id, method: :get) %>
196
-
197
- <% else %>
198
-
199
- <%= link_to image_tag("noimage.jpg", class:"no-image-main"), tip_path(f.id, method: :get) %>
200
-
201
- <% end %>
202
-
203
- </div>
204
-
205
- </div>
206
-
207
- </div>
208
-
209
- <% end %>
210
-
211
- <% else %>
212
-
213
- <p class="search-nil">投稿はありません</p>
214
-
215
- <div class="search-to-top">
216
-
217
- <a href="/">ーーートップページへーーー</a>
218
-
219
- </div>
220
-
221
- <% end %>
222
-
223
- ```
224
-
225
-
226
-
227
- 実装の際、参考にしたサイトのURL
228
-
229
- [https://lab.unicast.ne.jp/2013/11/28/railsrmagickcarrierwaveを使ってアップロードしたpdfの表紙からpng画/](https://lab.unicast.ne.jp/2013/11/28/railsrmagickcarrierwave%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%97%E3%81%9Fpdf%E3%81%AE%E8%A1%A8%E7%B4%99%E3%81%8B%E3%82%89png%E7%94%BB/)
230
-
231
-
232
-
233
- ### □仮説及び調べたこと
234
-
235
-
236
-
237
- prosess :coverをコメントアウトし、1ページのみのpdfを投稿したところ、投稿に成功し画像の変換にも成功しました。
238
-
239
-
240
-
241
- ```html
242
-
243
- version :thumb do
244
-
245
- #process :cover
246
-
247
- process :resize_to_limit => [500, 500]
248
-
249
- process :convert => 'png'
250
-
251
- end
252
-
253
- ```
254
-
255
-
256
-
257
- おそらくversion :thmb do 〜end  の記述方法に誤りが
258
-
259
-
260
-
261
- あると思います。
262
-
263
-
264
-
265
- しかし、複数ページの投稿の際に最初の1ページ目を選択してpdfにするという処理の記述方法が検索等行いましたがわかりませんでした。
266
124
 
267
125
 
268
126
 
269
127
  何卒、ご教示いただきたくお願い申し上げます。
128
+
129
+
130
+
131
+ ####環境
132
+
133
+
134
+
135
+ 'rails', '~> 6.0.0'
136
+
137
+ carrierwave (2.2.1)
138
+
139
+ rmagick (4.2.2)
140
+
141
+ ruby '2.6.5'

2

誤字 返還 → 変換

2021/05/15 10:09

投稿

denisov
denisov

スコア6

test CHANGED
@@ -1 +1 @@
1
- 複数ページpdfをPNGに返還時のエラー
1
+ 複数ページpdfをPNGに変換時のエラー
test CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- rmagicとcarrierwaveを用いて、投稿したpdfをPNGに返還して表示する機能を実装しております。
5
+ rmagicとcarrierwaveを用いて、投稿したpdfをPNGに変換して表示する機能を実装しております。
6
-
7
-
8
-
6
+
7
+
8
+
9
- その際、複数ページのpdfを投稿した際は1ページ目をPNGに返還して表示しようと考えておりますが、複数ページのpdfを実投稿した際に以下URLのエラーが生じました。
9
+ その際、複数ページのpdfを投稿した際は1ページ目をPNGに変換して表示しようと考えておりますが、複数ページのpdfを実投稿した際に以下URLのエラーが生じました。
10
10
 
11
11
 
12
12
 

1

タグ HTML 追加

2021/05/09 09:38

投稿

denisov
denisov

スコア6

test CHANGED
File without changes
test CHANGED
File without changes