dragonfly_pdf 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 39808b6176e5805a9bc82d359f9d427bc42e476c
4
- data.tar.gz: 60b458c14a7531d7a457f274b58ad4ce67a48ab8
3
+ metadata.gz: 5e969fb6354ce699bbdad681ffacfbfd465ad47a
4
+ data.tar.gz: 975403373d406f38f528fce2a0c411adf58c9d4b
5
5
  SHA512:
6
- metadata.gz: beee74901265a5e8f0c674f82d328140b5794385adb0f7d93514afc328df34a64e62210a86913ed3966c4fa0752e5e882c6b98c235e4b37ea371489516abac25
7
- data.tar.gz: 88c5d02b9e3eea8c8a59d128b8e3b0381197abbb28b9102712bcfb91cdde6094373f77291160e11706546de3a8cfe256fa5e1474e94a048734dfa4f4d8611db5
6
+ metadata.gz: a5a235d8b1bef8fad59fe522472f674c93636cddfff4b6f24dfbe4b40210aec31d2fa4ef674be22eff4c41153f3fa241b43a6f94c65f8ae9c936924ed2f9de5b
7
+ data.tar.gz: ec751387a15c6110c006c1680be1ecf255698865d1e5e6de8d5146b4e13549aee4714366e9da51041aeaedda0dc199d51ff02d253d0611ae0615f9fd5e1f1306
data/README.md CHANGED
@@ -4,6 +4,11 @@
4
4
 
5
5
  [Dragonfly](https://github.com/markevans/dragonfly) PDF analysers and processors.
6
6
 
7
+ ## Dependencies
8
+
9
+ * [ImageMagick](http://www.imagemagick.org)
10
+ * [GhostScript](http://www.ghostscript.com)
11
+
7
12
  ## Installation
8
13
 
9
14
  Add this line to your application's Gemfile:
@@ -34,7 +39,15 @@ end
34
39
  This processor has argument `spreads` (by default set to `false`). When `true`, the analyser assumes the PDF might contain 2 real pages per one PDF page (as when saving with the spreads option in InDesign) and recalculates the PDF properties accordingly (including situations when PDF starts or ends with single page).
35
40
 
36
41
  ```ruby
37
- pdf.pdf_properties(spreads=false)
42
+ pdf.pdf_properties(opts={})
43
+ ```
44
+
45
+ The available options and their default values are:
46
+
47
+ ```ruby
48
+ {
49
+ spreads: false
50
+ }
38
51
  ```
39
52
 
40
53
  Returns Hash of PDF properties:
@@ -55,12 +68,28 @@ When the `spreads` argument is set to true, all page arrays (page_numbers, width
55
68
 
56
69
  ## Processors
57
70
 
71
+ ### Page
72
+
73
+ Extracts page from PDF.
74
+
75
+ ```ruby
76
+ pdf.page(page_number=1, opts={})
77
+ ```
78
+
79
+ The available options and their default values are:
80
+
81
+ ```ruby
82
+ {
83
+ spreads: false
84
+ }
85
+ ```
86
+
58
87
  ### Page Thumb
59
88
 
60
89
  Generates thumbnail of a specified page, in defined density (dpi) and format.
61
90
 
62
91
  ```ruby
63
- pdf.page_thumb(page_number=0, opts={})
92
+ pdf.page_thumb(page_number=1, opts={})
64
93
  ```
65
94
 
66
95
  The available options and their default values are:
@@ -73,12 +102,6 @@ The available options and their default values are:
73
102
  }
74
103
  ```
75
104
 
76
- Similarly to the `#pdf_properties`, the `#page_thumb` processor takes into account the `spreads` option.
77
-
78
- ## TODO
79
-
80
- * Add more tests for `#page_thumb`
81
-
82
105
  ## Contributing
83
106
 
84
107
  1. Fork it ( https://github.com/tomasc/dragonfly_pdf/fork )
@@ -4,7 +4,9 @@ module DragonflyPdf
4
4
  module Analysers
5
5
  class PdfProperties
6
6
 
7
- def call content, spreads=false
7
+ def call content, opts={}
8
+ spreads = opts.fetch(:spreads, false)
9
+
8
10
  pdf = PDF::Reader.new(content.file)
9
11
 
10
12
  {
@@ -0,0 +1,3 @@
1
+ module DragonflyPdf
2
+ class PageNotFound < RuntimeError; end
3
+ end
@@ -1,4 +1,6 @@
1
1
  require 'dragonfly_pdf/analysers/pdf_properties'
2
+
3
+ require 'dragonfly_pdf/processors/page'
2
4
  require 'dragonfly_pdf/processors/page_thumb'
3
5
 
4
6
  module DragonflyPdf
@@ -38,6 +40,7 @@ module DragonflyPdf
38
40
  # ---------------------------------------------------------------------
39
41
 
40
42
  app.add_processor :page_thumb, DragonflyPdf::Processors::PageThumb.new
43
+ app.add_processor :page, DragonflyPdf::Processors::Page.new
41
44
  end
42
45
 
43
46
  end
@@ -0,0 +1,50 @@
1
+ require 'pdf-reader'
2
+ require_relative '../errors'
3
+ require_relative '../analysers/pdf_properties'
4
+
5
+ module DragonflyPdf
6
+ module Processors
7
+ class Page
8
+
9
+ def call content, page_number=1, opts={}
10
+ spreads = opts.fetch(:spreads, false)
11
+ pdf_page_number = page_number
12
+ crop_args = ''
13
+
14
+ pdf_properties = DragonflyPdf::Analysers::PdfProperties.new.call(content, spreads: spreads)
15
+
16
+ raise DragonflyPdf::PageNotFound unless pdf_properties[:page_numbers].flatten.include?(page_number)
17
+
18
+ if spreads
19
+ spread = pdf_properties[:page_numbers].detect{ |s| s.include?(page_number) }
20
+ spread_number = pdf_properties[:page_numbers].index(spread)
21
+ spread_side = spread.index(page_number)
22
+
23
+ pdf_page_number = spread_number+1
24
+
25
+ pdf = PDF::Reader.new(content.path)
26
+ box = pdf.pages[spread_number].attributes[:MediaBox] || pdf.pages[spread_number].attributes[:CropBox]
27
+
28
+ crop_box = box
29
+ crop_box[2] = crop_box[2]/2
30
+ crop_box[0] += crop_box[2] * spread_side
31
+ crop_box[2] += crop_box[2] * spread_side
32
+
33
+ crop_args = "-c '[/CropBox [#{crop_box.join(' ')}] /PAGES pdfmark'"
34
+ end
35
+
36
+ content.shell_update(ext: :pdf) do |old_path, new_path|
37
+ "#{gs_command} -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dFirstPage=#{pdf_page_number} -dLastPage=#{pdf_page_number} -o #{new_path} #{crop_args} -f #{old_path}"
38
+ end
39
+ end
40
+
41
+
42
+ private # =============================================================
43
+
44
+ def gs_command
45
+ 'gs'
46
+ end
47
+
48
+ end
49
+ end
50
+ end
@@ -4,19 +4,17 @@ module DragonflyPdf
4
4
  module Processors
5
5
  class PageThumb
6
6
 
7
- class UnsupportedFormat < RuntimeError; end
8
-
9
- def call content, page_number=0, opts={}
7
+ def call content, page_number=1, opts={}
10
8
  format = opts.fetch(:format, :png)
11
- # raise UnsupportedFormat unless %w(tif jpg jpeg png gif).include?(format.to_s)
12
-
13
9
  density = opts.fetch(:density, 600)
14
10
  spreads = opts.fetch(:spreads, false)
15
11
 
16
12
  args = "-alpha deactivate -background white -colorspace sRGB -density #{density}x#{density} -define pdf:use-cropbox=true -define pdf:use-trimbox=true"
17
13
  crop_args = ''
18
14
 
19
- pdf_properties = DragonflyPdf::Analysers::PdfProperties.new.call(content, spreads)
15
+ pdf_properties = DragonflyPdf::Analysers::PdfProperties.new.call(content, spreads: spreads)
16
+
17
+ raise DragonflyPdf::PageNotFound unless pdf_properties[:page_numbers].flatten.include?(page_number)
20
18
 
21
19
  if spreads
22
20
  spread = pdf_properties[:page_numbers].detect{ |s| s.include?(page_number) }
@@ -27,7 +25,7 @@ module DragonflyPdf
27
25
  pdf_page_number = spread_number
28
26
  crop_args = "-crop 50%x100% -delete #{page_to_delete}"
29
27
  else
30
- pdf_page_number = page_number
28
+ pdf_page_number = page_number-1
31
29
  end
32
30
 
33
31
  content.shell_update(ext: format) do |old_path, new_path|
@@ -1,3 +1,3 @@
1
1
  module DragonflyPdf
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
Binary file
Binary file
@@ -32,25 +32,25 @@ module DragonflyPdf
32
32
 
33
33
  describe 'for PDF with spreads' do
34
34
  it 'returns two-dimensional array' do
35
- analyser.call(spreads, true)[:page_numbers].must_equal [[1,2],[3,4],[5,6],[7,8]]
35
+ analyser.call(spreads, spreads: true)[:page_numbers].must_equal [[1,2],[3,4],[5,6],[7,8]]
36
36
  end
37
37
  end
38
38
 
39
39
  describe 'for PDF with spreads and a cover' do
40
40
  it 'returns two-dimensional array' do
41
- analyser.call(spreads_cover, true)[:page_numbers].must_equal [[1],[2,3],[4,5],[6,7],[8,9]]
41
+ analyser.call(spreads_cover, spreads: true)[:page_numbers].must_equal [[1],[2,3],[4,5],[6,7],[8,9]]
42
42
  end
43
43
  end
44
44
 
45
45
  describe 'for PDF with spreads and a back cover' do
46
46
  it 'returns two-dimensional array' do
47
- analyser.call(spreads_back, true)[:page_numbers].must_equal [[1,2],[3,4],[5,6],[7,8],[9]]
47
+ analyser.call(spreads_back, spreads: true)[:page_numbers].must_equal [[1,2],[3,4],[5,6],[7,8],[9]]
48
48
  end
49
49
  end
50
50
 
51
51
  describe 'for PDF with spreads and a front and a back cover' do
52
52
  it 'returns two-dimensional array' do
53
- analyser.call(spreads_cover_back, true)[:page_numbers].must_equal [[1],[2,3],[4,5],[6,7],[8,9],[10]]
53
+ analyser.call(spreads_cover_back, spreads: true)[:page_numbers].must_equal [[1],[2,3],[4,5],[6,7],[8,9],[10]]
54
54
  end
55
55
  end
56
56
  end
@@ -66,25 +66,25 @@ module DragonflyPdf
66
66
 
67
67
  describe 'for PDF with spreads' do
68
68
  it 'returns correct page count' do
69
- analyser.call(spreads, true)[:page_count].must_equal 8
69
+ analyser.call(spreads, spreads: true)[:page_count].must_equal 8
70
70
  end
71
71
  end
72
72
 
73
73
  describe 'for PDF with spreads and a cover' do
74
74
  it 'returns correct page count' do
75
- analyser.call(spreads_cover, true)[:page_count].must_equal 9
75
+ analyser.call(spreads_cover, spreads: true)[:page_count].must_equal 9
76
76
  end
77
77
  end
78
78
 
79
79
  describe 'for PDF with spreads and a back cover' do
80
80
  it 'returns correct page count' do
81
- analyser.call(spreads_back, true)[:page_count].must_equal 9
81
+ analyser.call(spreads_back, spreads: true)[:page_count].must_equal 9
82
82
  end
83
83
  end
84
84
 
85
85
  describe 'for PDF with spreads and a front and a back cover' do
86
86
  it 'returns correct page count' do
87
- analyser.call(spreads_cover_back, true)[:page_count].must_equal 10
87
+ analyser.call(spreads_cover_back, spreads: true)[:page_count].must_equal 10
88
88
  end
89
89
  end
90
90
  end
@@ -100,25 +100,25 @@ module DragonflyPdf
100
100
 
101
101
  describe 'for PDF with spreads' do
102
102
  it 'returns correct page count' do
103
- analyser.call(spreads, true)[:spread_count].must_equal 4
103
+ analyser.call(spreads, spreads: true)[:spread_count].must_equal 4
104
104
  end
105
105
  end
106
106
 
107
107
  describe 'for PDF with spreads and a cover' do
108
108
  it 'returns correct page count' do
109
- analyser.call(spreads_cover, true)[:spread_count].must_equal 5
109
+ analyser.call(spreads_cover, spreads: true)[:spread_count].must_equal 5
110
110
  end
111
111
  end
112
112
 
113
113
  describe 'for PDF with spreads and a back cover' do
114
114
  it 'returns correct page count' do
115
- analyser.call(spreads_back, true)[:spread_count].must_equal 5
115
+ analyser.call(spreads_back, spreads: true)[:spread_count].must_equal 5
116
116
  end
117
117
  end
118
118
 
119
119
  describe 'for PDF with spreads and a front and a back cover' do
120
120
  it 'returns correct page count' do
121
- analyser.call(spreads_cover_back, true)[:spread_count].must_equal 6
121
+ analyser.call(spreads_cover_back, spreads: true)[:spread_count].must_equal 6
122
122
  end
123
123
  end
124
124
  end
@@ -134,25 +134,25 @@ module DragonflyPdf
134
134
 
135
135
  describe 'for PDF with spreads' do
136
136
  it 'returns widths' do
137
- analyser.call(spreads, true)[:widths].must_equal [[210.0, 210.0], [210.0, 210.0], [210.0, 210.0], [210.0, 210.0]]
137
+ analyser.call(spreads, spreads: true)[:widths].must_equal [[210.0, 210.0], [210.0, 210.0], [210.0, 210.0], [210.0, 210.0]]
138
138
  end
139
139
  end
140
140
 
141
141
  describe 'for PDF with spreads and a cover' do
142
142
  it 'returns correct widths' do
143
- analyser.call(spreads_cover, true)[:widths].must_equal [[210.0], [210.0, 210.0], [210.0, 210.0], [210.0, 210.0], [210.0, 210.0]]
143
+ analyser.call(spreads_cover, spreads: true)[:widths].must_equal [[210.0], [210.0, 210.0], [210.0, 210.0], [210.0, 210.0], [210.0, 210.0]]
144
144
  end
145
145
  end
146
146
 
147
147
  describe 'for PDF with spreads and a back cover' do
148
148
  it 'returns correct widths' do
149
- analyser.call(spreads_back, true)[:widths].must_equal [[210.0, 210.0], [210.0, 210.0], [210.0, 210.0], [210.0, 210.0], [210.0]]
149
+ analyser.call(spreads_back, spreads: true)[:widths].must_equal [[210.0, 210.0], [210.0, 210.0], [210.0, 210.0], [210.0, 210.0], [210.0]]
150
150
  end
151
151
  end
152
152
 
153
153
  describe 'for PDF with spreads and a front and a back cover' do
154
154
  it 'returns correct widths' do
155
- analyser.call(spreads_cover_back, true)[:widths].must_equal [[210.0], [210.0, 210.0], [210.0, 210.0], [210.0, 210.0], [210.0, 210.0], [210.0]]
155
+ analyser.call(spreads_cover_back, spreads: true)[:widths].must_equal [[210.0], [210.0, 210.0], [210.0, 210.0], [210.0, 210.0], [210.0, 210.0], [210.0]]
156
156
  end
157
157
  end
158
158
  end
@@ -168,25 +168,25 @@ module DragonflyPdf
168
168
 
169
169
  describe 'for PDF with spreads' do
170
170
  it 'returns heights' do
171
- analyser.call(spreads, true)[:heights].must_equal [[297.0, 297.0], [297.0, 297.0], [297.0, 297.0], [297.0, 297.0]]
171
+ analyser.call(spreads, spreads: true)[:heights].must_equal [[297.0, 297.0], [297.0, 297.0], [297.0, 297.0], [297.0, 297.0]]
172
172
  end
173
173
  end
174
174
 
175
175
  describe 'for PDF with spreads and a cover' do
176
176
  it 'returns correct heights' do
177
- analyser.call(spreads_cover, true)[:heights].must_equal [[297.0], [297.0, 297.0], [297.0, 297.0], [297.0, 297.0], [297.0, 297.0]]
177
+ analyser.call(spreads_cover, spreads: true)[:heights].must_equal [[297.0], [297.0, 297.0], [297.0, 297.0], [297.0, 297.0], [297.0, 297.0]]
178
178
  end
179
179
  end
180
180
 
181
181
  describe 'for PDF with spreads and a back cover' do
182
182
  it 'returns correct heights' do
183
- analyser.call(spreads_back, true)[:heights].must_equal [[297.0, 297.0], [297.0, 297.0], [297.0, 297.0], [297.0, 297.0], [297.0]]
183
+ analyser.call(spreads_back, spreads: true)[:heights].must_equal [[297.0, 297.0], [297.0, 297.0], [297.0, 297.0], [297.0, 297.0], [297.0]]
184
184
  end
185
185
  end
186
186
 
187
187
  describe 'for PDF with spreads and a front and a back cover' do
188
188
  it 'returns correct heights' do
189
- analyser.call(spreads_cover_back, true)[:heights].must_equal [[297.0], [297.0, 297.0], [297.0, 297.0], [297.0, 297.0], [297.0, 297.0], [297.0]]
189
+ analyser.call(spreads_cover_back, spreads: true)[:heights].must_equal [[297.0], [297.0, 297.0], [297.0, 297.0], [297.0, 297.0], [297.0, 297.0], [297.0]]
190
190
  end
191
191
  end
192
192
  end
@@ -202,25 +202,25 @@ module DragonflyPdf
202
202
 
203
203
  describe 'for PDF with spreads' do
204
204
  it 'returns aspect ratios' do
205
- analyser.call(spreads, true)[:aspect_ratios].map{ |i| i.is_a?(Array) ? i.map{ |j| j.round(2) } : i.round(2) }.must_equal [[0.71, 0.71], [0.71, 0.71], [0.71, 0.71], [0.71, 0.71]]
205
+ analyser.call(spreads, spreads: true)[:aspect_ratios].map{ |i| i.is_a?(Array) ? i.map{ |j| j.round(2) } : i.round(2) }.must_equal [[0.71, 0.71], [0.71, 0.71], [0.71, 0.71], [0.71, 0.71]]
206
206
  end
207
207
  end
208
208
 
209
209
  describe 'for PDF with spreads and a cover' do
210
210
  it 'returns correct aspect ratios' do
211
- analyser.call(spreads_cover, true)[:aspect_ratios].map{ |i| i.is_a?(Array) ? i.map{ |j| j.round(2) } : i.round(2) }.must_equal [[0.71], [0.71, 0.71], [0.71, 0.71], [0.71, 0.71], [0.71, 0.71]]
211
+ analyser.call(spreads_cover, spreads: true)[:aspect_ratios].map{ |i| i.is_a?(Array) ? i.map{ |j| j.round(2) } : i.round(2) }.must_equal [[0.71], [0.71, 0.71], [0.71, 0.71], [0.71, 0.71], [0.71, 0.71]]
212
212
  end
213
213
  end
214
214
 
215
215
  describe 'for PDF with spreads and a back cover' do
216
216
  it 'returns correct aspect ratios' do
217
- analyser.call(spreads_back, true)[:aspect_ratios].map{ |i| i.is_a?(Array) ? i.map{ |j| j.round(2) } : i.round(2) }.must_equal [[0.71, 0.71], [0.71, 0.71], [0.71, 0.71], [0.71, 0.71], [0.71]]
217
+ analyser.call(spreads_back, spreads: true)[:aspect_ratios].map{ |i| i.is_a?(Array) ? i.map{ |j| j.round(2) } : i.round(2) }.must_equal [[0.71, 0.71], [0.71, 0.71], [0.71, 0.71], [0.71, 0.71], [0.71]]
218
218
  end
219
219
  end
220
220
 
221
221
  describe 'for PDF with spreads and a front and a back cover' do
222
222
  it 'returns correct aspect ratios' do
223
- analyser.call(spreads_cover_back, true)[:aspect_ratios].map{ |i| i.is_a?(Array) ? i.map{ |j| j.round(2) } : i.round(2) }.must_equal [[0.71], [0.71, 0.71], [0.71, 0.71], [0.71, 0.71], [0.71, 0.71], [0.71]]
223
+ analyser.call(spreads_cover_back, spreads: true)[:aspect_ratios].map{ |i| i.is_a?(Array) ? i.map{ |j| j.round(2) } : i.round(2) }.must_equal [[0.71], [0.71, 0.71], [0.71, 0.71], [0.71, 0.71], [0.71, 0.71], [0.71]]
224
224
  end
225
225
  end
226
226
  end
@@ -32,5 +32,17 @@ module DragonflyPdf
32
32
  end
33
33
  end
34
34
 
35
+
36
+ # ---------------------------------------------------------------------
37
+
38
+ describe 'processors' do
39
+ it 'adds #page' do
40
+ pdf.must_respond_to :page
41
+ end
42
+ it 'adds #page_thumb' do
43
+ pdf.must_respond_to :page_thumb
44
+ end
45
+ end
46
+
35
47
  end
36
48
  end
@@ -0,0 +1,84 @@
1
+ require 'test_helper'
2
+ require 'pdf-reader'
3
+
4
+ module DragonflyPdf
5
+ module Processors
6
+ describe Page do
7
+
8
+ let(:app) { test_app.configure_with(:pdf) }
9
+ let(:processor) { DragonflyPdf::Processors::Page.new }
10
+
11
+ let(:single_pages) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
12
+ let(:spreads) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_spreads.pdf')) }
13
+ let(:spreads_back) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_spreads_back.pdf')) }
14
+ let(:spreads_cover) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_spreads_cover.pdf')) }
15
+ let(:spreads_cover_back) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_spreads_cover_back.pdf')) }
16
+
17
+ # =====================================================================
18
+
19
+ it 'returns PDF by default' do
20
+ processor.call(single_pages, 1)
21
+ get_mime_type(single_pages.path).must_include "application/pdf"
22
+ end
23
+
24
+ it 'raises PageNotFound error' do
25
+ proc { processor.call(single_pages, 0) }.must_raise DragonflyPdf::PageNotFound
26
+ proc { processor.call(single_pages, 11) }.must_raise DragonflyPdf::PageNotFound
27
+ end
28
+
29
+ # ---------------------------------------------------------------------
30
+
31
+ describe 'single pages' do
32
+ it 'renders page' do
33
+ processor.call(single_pages, 1)
34
+ pdf = PDF::Reader.new(single_pages.path)
35
+ pdf.pages.count.must_equal 1
36
+ pdf.pages.first.text.must_equal '1'
37
+ end
38
+ end
39
+
40
+ describe 'spreads' do
41
+ it 'recalculates the page number correctly' do
42
+ processor.call(spreads, 8, spreads: true)
43
+ pdf = PDF::Reader.new(spreads.path)
44
+ pdf.pages.count.must_equal 1
45
+ pdf.pages.first.text.must_include '8'
46
+ end
47
+ end
48
+
49
+ describe 'spreads_back' do
50
+ it 'recalculates the page number correctly' do
51
+ processor.call(spreads_back, 9, spreads: true)
52
+ pdf = PDF::Reader.new(spreads_back.path)
53
+ pdf.pages.count.must_equal 1
54
+ pdf.pages.first.text.must_include '9'
55
+ end
56
+ end
57
+
58
+ describe 'spreads_cover' do
59
+ it 'recalculates the page number correctly' do
60
+ processor.call(spreads_cover, 9, spreads: true)
61
+ pdf = PDF::Reader.new(spreads_cover.path)
62
+ pdf.pages.count.must_equal 1
63
+ pdf.pages.first.text.must_include '9'
64
+ end
65
+ end
66
+
67
+ describe 'spreads_cover_back' do
68
+ it 'recalculates the page number correctly' do
69
+ processor.call(spreads_cover_back, 10, spreads: true)
70
+ pdf = PDF::Reader.new(spreads_cover_back.path)
71
+ pdf.pages.count.must_equal 1
72
+ pdf.pages.first.text.must_include '10'
73
+ end
74
+ end
75
+
76
+ # ---------------------------------------------------------------------
77
+
78
+ def get_mime_type file_path
79
+ `file --mime-type #{file_path}`.gsub(/\n/, "")
80
+ end
81
+
82
+ end
83
+ end
84
+ end
@@ -15,10 +15,15 @@ module DragonflyPdf
15
15
  let(:spreads_cover_back) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_spreads_cover_back.pdf')) }
16
16
 
17
17
  it 'returns PNG by default' do
18
- processor.call(single_pages, 0, density: 72)
18
+ processor.call(single_pages, 1, density: 72)
19
19
  get_mime_type(single_pages.path).must_include "image/png"
20
20
  end
21
21
 
22
+ it 'raises PageNotFound error' do
23
+ proc { processor.call(single_pages, 0) }.must_raise DragonflyPdf::PageNotFound
24
+ proc { processor.call(single_pages, 11) }.must_raise DragonflyPdf::PageNotFound
25
+ end
26
+
22
27
  # ---------------------------------------------------------------------
23
28
 
24
29
  describe 'single pages' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dragonfly_pdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomas Celizna
@@ -124,7 +124,9 @@ files:
124
124
  - dragonfly_pdf.gemspec
125
125
  - lib/dragonfly_pdf.rb
126
126
  - lib/dragonfly_pdf/analysers/pdf_properties.rb
127
+ - lib/dragonfly_pdf/errors.rb
127
128
  - lib/dragonfly_pdf/plugin.rb
129
+ - lib/dragonfly_pdf/processors/page.rb
128
130
  - lib/dragonfly_pdf/processors/page_thumb.rb
129
131
  - lib/dragonfly_pdf/version.rb
130
132
  - samples/sample_pages.pdf
@@ -134,6 +136,7 @@ files:
134
136
  - samples/sample_spreads_cover_back.pdf
135
137
  - test/dragonfly_pdf/analysers/pdf_properties_test.rb
136
138
  - test/dragonfly_pdf/plugin_test.rb
139
+ - test/dragonfly_pdf/processors/page_test.rb
137
140
  - test/dragonfly_pdf/processors/page_thumb_test.rb
138
141
  - test/test_helper.rb
139
142
  homepage: https://github.com/tomasc/dragonfly_pdf
@@ -163,5 +166,6 @@ summary: Dragonfly PDF analysers and processors.
163
166
  test_files:
164
167
  - test/dragonfly_pdf/analysers/pdf_properties_test.rb
165
168
  - test/dragonfly_pdf/plugin_test.rb
169
+ - test/dragonfly_pdf/processors/page_test.rb
166
170
  - test/dragonfly_pdf/processors/page_thumb_test.rb
167
171
  - test/test_helper.rb