dragonfly_pdf 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +2 -1
- data/CHANGELOG.md +6 -0
- data/lib/dragonfly_pdf/plugin.rb +2 -18
- data/lib/dragonfly_pdf/processors/convert.rb +4 -2
- data/lib/dragonfly_pdf/processors/page_thumb.rb +40 -0
- data/lib/dragonfly_pdf/version.rb +1 -1
- data/test/dragonfly_pdf/plugin_test.rb +3 -16
- data/test/dragonfly_pdf/processors/convert_test.rb +46 -0
- data/test/dragonfly_pdf/processors/page_thumb_test.rb +29 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f49e3cad532a597767fe058ac6fd8097baf69ff
|
4
|
+
data.tar.gz: 765bdcc44c3b5ba7a708476e01548d79d485fcae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 839040f86f9322c1c190802584eddd8d82ac7ab21d33728f3df8c28290542eb486144bed9ad4f029a5e29412ee5fd85766a8be3657e22725b07b7d475dd9b06e
|
7
|
+
data.tar.gz: c3c5b7294bccb265a948e34ad04f1ee66455a7edf0cc20feae4b459f7a777aaec47316f1c47a39a24d1477534c51255ae259032999d07af6a449b95f7ceba491
|
data/.travis.yml
CHANGED
@@ -12,7 +12,8 @@ before_install:
|
|
12
12
|
- sudo apt-get update
|
13
13
|
- sudo apt-get install -y pdftk
|
14
14
|
- sudo apt-get install -y ghostscript
|
15
|
-
-
|
15
|
+
- curl -OL https://mupdf.com/downloads/mupdf-1.12.0-source.tar.gz
|
16
|
+
- tar zvxf mupdf-1.12.0-source.tar.gz && cd mupdf-1.12.0-source && sudo make HAVE_X11=no HAVE_GLUT=no prefix=/usr/local install
|
16
17
|
- sudo apt-get install -y gobject-introspection libgirepository1.0-dev libglib2.0-dev libpoppler-glib-dev
|
17
18
|
- curl -OL https://github.com/jcupitt/libvips/releases/download/v8.5.8/vips-8.5.8.tar.gz
|
18
19
|
- tar zvxf vips-8.5.8.tar.gz && cd vips-8.5.8 && ./configure && sudo make && sudo make install
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## 2.0.1
|
4
|
+
|
5
|
+
* fixed: a bug in Convert and Page Thumb Processors which caused the url to not include file extension
|
6
|
+
* refactored: Page Thumb Processor is now a class
|
7
|
+
* added: tests for Convert and Page Thumb Processor
|
8
|
+
|
3
9
|
## 2.0.0
|
4
10
|
|
5
11
|
* PDF rendering to use `mupdf` which results in siginificant performance boost
|
data/lib/dragonfly_pdf/plugin.rb
CHANGED
@@ -4,6 +4,7 @@ require 'dragonfly_pdf/analysers/pdf_properties'
|
|
4
4
|
|
5
5
|
require 'dragonfly_pdf/processors/append'
|
6
6
|
require 'dragonfly_pdf/processors/convert'
|
7
|
+
require 'dragonfly_pdf/processors/page_thumb'
|
7
8
|
require 'dragonfly_pdf/processors/page'
|
8
9
|
require 'dragonfly_pdf/processors/remove_password'
|
9
10
|
require 'dragonfly_pdf/processors/rotate'
|
@@ -49,25 +50,8 @@ module DragonflyPdf
|
|
49
50
|
app.add_processor :rotate, DragonflyPdf::Processors::Rotate.new
|
50
51
|
app.add_processor :stamp, DragonflyPdf::Processors::Stamp.new
|
51
52
|
app.add_processor :subset_fonts, DragonflyPdf::Processors::SubsetFonts.new
|
52
|
-
|
53
53
|
app.add_processor :thumb, DragonflyLibvips::Processors::Thumb.new
|
54
|
-
|
55
|
-
app.add_processor :page_thumb do |content, page, geometry = nil, options = {}|
|
56
|
-
options = options.deep_symbolize_keys
|
57
|
-
options[:format] = options.fetch(:format, :jpg)
|
58
|
-
|
59
|
-
convert_options = {}
|
60
|
-
convert_options[:format] = case options[:format]
|
61
|
-
when :pdf, :svg then options[:format]
|
62
|
-
else :png
|
63
|
-
end
|
64
|
-
|
65
|
-
content.process!(:convert, page, geometry, convert_options)
|
66
|
-
|
67
|
-
unless %i[pdf png svg].include?(options[:format].to_sym)
|
68
|
-
content.process!(:thumb, geometry, options)
|
69
|
-
end
|
70
|
-
end
|
54
|
+
app.add_processor :page_thumb, DragonflyPdf::Processors::PageThumb.new
|
71
55
|
end
|
72
56
|
end
|
73
57
|
end
|
@@ -50,14 +50,16 @@ module DragonflyPdf
|
|
50
50
|
`mv #{content.path.sub(".#{format}", "1.#{format}")} #{content.path}`
|
51
51
|
end
|
52
52
|
|
53
|
+
content.meta['format'] = format.to_s
|
53
54
|
content.ext = format
|
55
|
+
content.meta['mime_type'] = nil # don't need it as we have ext now
|
54
56
|
end
|
55
57
|
|
56
|
-
def update_url(
|
58
|
+
def update_url(attrs, page, geometry=nil, options = {})
|
57
59
|
options = options.deep_symbolize_keys
|
58
60
|
format = options.fetch(:format, :png)
|
59
61
|
|
60
|
-
|
62
|
+
attrs.ext = format.to_s
|
61
63
|
end
|
62
64
|
|
63
65
|
private
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module DragonflyPdf
|
2
|
+
module Processors
|
3
|
+
class PageThumb
|
4
|
+
def call(content, page, geometry = nil, options = {})
|
5
|
+
options = options.deep_symbolize_keys
|
6
|
+
format = options.delete(:format) { :jpg }
|
7
|
+
|
8
|
+
convert(content, page, geometry, format)
|
9
|
+
|
10
|
+
unless %i[pdf png svg].include?(format.to_sym)
|
11
|
+
thumb(content, geometry, format, options)
|
12
|
+
end
|
13
|
+
|
14
|
+
content.meta['format'] = format.to_s
|
15
|
+
content.ext = format
|
16
|
+
content.meta['mime_type'] = nil # don't need it as we have ext now
|
17
|
+
end
|
18
|
+
|
19
|
+
def update_url(attrs, page, geometry=nil, options = {})
|
20
|
+
options = options.deep_symbolize_keys
|
21
|
+
format = options.fetch(:format, :jpg)
|
22
|
+
attrs.ext = format.to_s
|
23
|
+
end
|
24
|
+
|
25
|
+
private # =============================================================
|
26
|
+
|
27
|
+
def convert(content, page, geometry, format)
|
28
|
+
convert_format = case format
|
29
|
+
when :pdf, :svg then format
|
30
|
+
else :png
|
31
|
+
end
|
32
|
+
content.process!(:convert, page, geometry, { format: convert_format })
|
33
|
+
end
|
34
|
+
|
35
|
+
def thumb(content, geometry, format, options)
|
36
|
+
content.process!(:thumb, geometry, options.merge(format: format))
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -63,22 +63,9 @@ module DragonflyPdf
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
describe '
|
67
|
-
|
68
|
-
|
69
|
-
pdf.page_thumb!(1, '600x')
|
70
|
-
`file --mime-type #{pdf.path}`.must_include 'image/jpeg'
|
71
|
-
end
|
72
|
-
|
73
|
-
# it 'converts PDF page to SVG format' do
|
74
|
-
# pdf.page_thumb!(1, nil, format: :svg)
|
75
|
-
# `file --mime-type #{pdf.path}`.must_include 'image/svg+xml'
|
76
|
-
# end
|
77
|
-
#
|
78
|
-
# it 'converts PDF page to PDF format' do
|
79
|
-
# pdf.page_thumb!(1, nil, format: :pdf)
|
80
|
-
# `file --mime-type #{pdf.path}`.must_include 'application/pdf'
|
81
|
-
# end
|
66
|
+
describe '#convert' do
|
67
|
+
it 'adds the correct extension to resulting url' do
|
68
|
+
pdf.convert(1, '600x').url.must_match /\.png/
|
82
69
|
end
|
83
70
|
end
|
84
71
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe DragonflyPdf::Processors::Convert do
|
4
|
+
let(:app) { test_app.configure_with(:pdf) }
|
5
|
+
let(:sample) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
|
6
|
+
|
7
|
+
let(:processor) { DragonflyPdf::Processors::Convert.new }
|
8
|
+
|
9
|
+
describe 'formats' do
|
10
|
+
let (:url_attributes) { OpenStruct.new }
|
11
|
+
|
12
|
+
describe 'default' do
|
13
|
+
before { processor.call(sample, 1, '600x') }
|
14
|
+
|
15
|
+
it 'converts the PDF to a PNG by default' do
|
16
|
+
sample.ext.must_equal 'png'
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'updates the file meta format to PNG by default' do
|
20
|
+
sample.meta['format'].must_equal 'png'
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'updates the url extension to PNG by default' do
|
24
|
+
processor.update_url(url_attributes, 1)
|
25
|
+
url_attributes.ext.must_equal 'png'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'svg' do
|
30
|
+
before { processor.call(sample, 1, '600x', format: :svg) }
|
31
|
+
|
32
|
+
it 'converts the PDF to an SVG' do
|
33
|
+
sample.ext.must_equal 'svg'
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'updates the file meta format to SVG' do
|
37
|
+
sample.meta['format'].must_equal 'svg'
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'updates the url extension to SVG' do
|
41
|
+
processor.update_url(url_attributes, 1, '', format: :svg)
|
42
|
+
url_attributes.ext.must_equal 'svg'
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe DragonflyPdf::Processors::PageThumb do
|
4
|
+
let(:app) { test_app.configure_with(:pdf) }
|
5
|
+
let(:sample) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
|
6
|
+
|
7
|
+
let(:processor) { DragonflyPdf::Processors::PageThumb.new }
|
8
|
+
|
9
|
+
describe 'formats' do
|
10
|
+
let (:url_attributes) { OpenStruct.new }
|
11
|
+
|
12
|
+
describe 'default' do
|
13
|
+
before { processor.call(sample, 1, '600x') }
|
14
|
+
|
15
|
+
it 'converts the PDF to a JPG by default' do
|
16
|
+
sample.ext.must_equal 'jpg'
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'updates the file meta format to JPG by default' do
|
20
|
+
sample.meta['format'].must_equal 'jpg'
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'updates the url extension to JPG by default' do
|
24
|
+
processor.update_url(url_attributes, 1)
|
25
|
+
url_attributes.ext.must_equal 'jpg'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dragonfly_pdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomas Celizna
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-02-
|
11
|
+
date: 2018-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dragonfly
|
@@ -159,6 +159,7 @@ files:
|
|
159
159
|
- lib/dragonfly_pdf/processors/append.rb
|
160
160
|
- lib/dragonfly_pdf/processors/convert.rb
|
161
161
|
- lib/dragonfly_pdf/processors/page.rb
|
162
|
+
- lib/dragonfly_pdf/processors/page_thumb.rb
|
162
163
|
- lib/dragonfly_pdf/processors/remove_password.rb
|
163
164
|
- lib/dragonfly_pdf/processors/rotate.rb
|
164
165
|
- lib/dragonfly_pdf/processors/stamp.rb
|
@@ -172,7 +173,9 @@ files:
|
|
172
173
|
- test/dragonfly_pdf/analysers/pdf_properties_test.rb
|
173
174
|
- test/dragonfly_pdf/plugin_test.rb
|
174
175
|
- test/dragonfly_pdf/processors/append_test.rb
|
176
|
+
- test/dragonfly_pdf/processors/convert_test.rb
|
175
177
|
- test/dragonfly_pdf/processors/page_test.rb
|
178
|
+
- test/dragonfly_pdf/processors/page_thumb_test.rb
|
176
179
|
- test/dragonfly_pdf/processors/remove_password_test.rb
|
177
180
|
- test/dragonfly_pdf/processors/rotate_test.rb
|
178
181
|
- test/dragonfly_pdf/processors/stamp_test.rb
|
@@ -206,7 +209,9 @@ test_files:
|
|
206
209
|
- test/dragonfly_pdf/analysers/pdf_properties_test.rb
|
207
210
|
- test/dragonfly_pdf/plugin_test.rb
|
208
211
|
- test/dragonfly_pdf/processors/append_test.rb
|
212
|
+
- test/dragonfly_pdf/processors/convert_test.rb
|
209
213
|
- test/dragonfly_pdf/processors/page_test.rb
|
214
|
+
- test/dragonfly_pdf/processors/page_thumb_test.rb
|
210
215
|
- test/dragonfly_pdf/processors/remove_password_test.rb
|
211
216
|
- test/dragonfly_pdf/processors/rotate_test.rb
|
212
217
|
- test/dragonfly_pdf/processors/stamp_test.rb
|