grim 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -0
- data/lib/grim.rb +16 -1
- data/lib/grim/image_magick_processor.rb +15 -3
- data/lib/grim/null_logger.rb +9 -0
- data/lib/grim/page.rb +4 -1
- data/lib/grim/version.rb +1 -1
- data/spec/lib/grim/null_logger_spec.rb +11 -0
- data/spec/lib/grim_spec.rb +19 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 351b803d58cd1849dbe87c987f23fe3bff91bdc1
|
4
|
+
data.tar.gz: 79a712dd44dee6e7f9e7dcb562242ed4b26d0652
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0eb570ca92b151dd08c0cc27481a7e8e56d87c65dcfd29d10ead8ec8b29b42f36568091bb6e781024c6ee14c14a0154591e55968582b112eca943d8e2c20a48
|
7
|
+
data.tar.gz: 3620c88137845bb798e4874a41ecc537d41982b988298fad9cd2c4caa4e5d9ce0ce0887a967fede7577acf229197321aeb3038ea5c381aa9bfd03d68cc35bf18
|
data/README.md
CHANGED
@@ -86,6 +86,19 @@ pdf[0].save('/path/to/image.png', {
|
|
86
86
|
})
|
87
87
|
```
|
88
88
|
|
89
|
+
Grim has limited logging abilities. The default logger is `Grim::NullLogger` but you can also set your own logger.
|
90
|
+
|
91
|
+
```ruby
|
92
|
+
require "logger"
|
93
|
+
Grim.logger = Logger.new($stdout).tap { |logger| logger.progname = 'Grim' }
|
94
|
+
Grim.processor = Grim::ImageMagickProcessor.new({:ghostscript_path => "/path/to/bin/gs"})
|
95
|
+
pdf = Grim.reap("/path/to/pdf")
|
96
|
+
pdf[3].save('/path/to/image.png')
|
97
|
+
# D, [2016-06-09T22:43:07.046532 #69344] DEBUG -- grim: Running imagemagick command
|
98
|
+
# D, [2016-06-09T22:43:07.046626 #69344] DEBUG -- grim: PATH=/path/to/bin:/usr/local/bin:/usr/bin
|
99
|
+
# D, [2016-06-09T22:43:07.046787 #69344] DEBUG -- grim: convert -resize 1024 -antialias -render -quality 90 -colorspace RGB -interlace none -density 300 /path/to/pdf /path/to/image.png
|
100
|
+
```
|
101
|
+
|
89
102
|
## Reference
|
90
103
|
|
91
104
|
* [jonmagic.com: Grim](http://jonmagic.com/blog/archives/2011/09/06/grim/)
|
data/lib/grim.rb
CHANGED
@@ -50,11 +50,26 @@ module Grim
|
|
50
50
|
def self.reap(path)
|
51
51
|
Grim::Pdf.new(path)
|
52
52
|
end
|
53
|
+
|
54
|
+
# Set a Logger compatible logger for Grim.
|
55
|
+
#
|
56
|
+
# logger - Object with same interface as Logger.new
|
57
|
+
def self.logger=(logger)
|
58
|
+
@logger = logger
|
59
|
+
end
|
60
|
+
|
61
|
+
# Logger to use internally. Defaults to Grim::NullLogger.
|
62
|
+
#
|
63
|
+
# Returns a Logger compatible logger.
|
64
|
+
def self.logger
|
65
|
+
@logger ||= Grim::NullLogger.new
|
66
|
+
end
|
53
67
|
end
|
54
68
|
|
55
69
|
require 'grim/pdf'
|
56
70
|
require 'grim/page'
|
57
71
|
require 'grim/image_magick_processor'
|
58
72
|
require 'grim/multi_processor'
|
73
|
+
require 'grim/null_logger'
|
59
74
|
|
60
|
-
Grim.processor = Grim::ImageMagickProcessor.new
|
75
|
+
Grim.processor = Grim::ImageMagickProcessor.new
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'open3'
|
2
|
+
|
1
3
|
module Grim
|
2
4
|
class ImageMagickProcessor
|
3
5
|
|
@@ -40,11 +42,21 @@ module Grim
|
|
40
42
|
command << "#{Shellwords.shellescape(pdf.path)}[#{index}]"
|
41
43
|
command << path
|
42
44
|
|
43
|
-
|
45
|
+
command_env = {}
|
44
46
|
|
45
|
-
|
47
|
+
if @ghostscript_path && @ghostscript_path != DefaultGhostScriptPath
|
48
|
+
command_env['PATH'] = "#{File.dirname(@ghostscript_path)}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
|
49
|
+
end
|
50
|
+
|
51
|
+
Grim.logger.debug { "Running imagemagick command" }
|
52
|
+
if command_env.any?
|
53
|
+
Grim.logger.debug { command_env.map {|k,v| "#{k}=#{v}" }.join(" ") }
|
54
|
+
end
|
55
|
+
Grim.logger.debug { command.join(" ") }
|
56
|
+
|
57
|
+
result, status = Open3.capture2e(command_env, command.join(" "))
|
46
58
|
|
47
|
-
|
59
|
+
status.success? || raise(UnprocessablePage, result)
|
48
60
|
end
|
49
61
|
end
|
50
62
|
end
|
data/lib/grim/page.rb
CHANGED
@@ -50,7 +50,10 @@ module Grim
|
|
50
50
|
# Returns a String.
|
51
51
|
#
|
52
52
|
def text
|
53
|
-
|
53
|
+
command = [@pdftotext_path, "-enc", "UTF-8", "-f", @number, "-l", @number, Shellwords.escape(@pdf.path), "-"].join(' ')
|
54
|
+
Grim.logger.debug { "Running pdftotext command" }
|
55
|
+
Grim.logger.debug { command }
|
56
|
+
`#{command}`
|
54
57
|
end
|
55
58
|
end
|
56
59
|
end
|
data/lib/grim/version.rb
CHANGED
data/spec/lib/grim_spec.rb
CHANGED
@@ -26,9 +26,27 @@ describe Grim do
|
|
26
26
|
expect(Grim::COLORSPACE).to eq('RGB')
|
27
27
|
end
|
28
28
|
|
29
|
-
describe "
|
29
|
+
describe ".reap" do
|
30
30
|
it "should return an instance of Grim::Pdf" do
|
31
31
|
expect(Grim.reap(fixture_path("smoker.pdf")).class).to eq(Grim::Pdf)
|
32
32
|
end
|
33
33
|
end
|
34
|
+
|
35
|
+
describe ".logger=" do
|
36
|
+
it "sets Grim.logger" do
|
37
|
+
original_logger = Grim.logger
|
38
|
+
begin
|
39
|
+
Grim.logger = "foo"
|
40
|
+
expect(Grim.logger).to eq("foo")
|
41
|
+
ensure
|
42
|
+
Grim.logger = original_logger
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe ".logger" do
|
48
|
+
it "returns a Grim::NullLogger by default" do
|
49
|
+
expect(Grim.logger).to be_instance_of(Grim::NullLogger)
|
50
|
+
end
|
51
|
+
end
|
34
52
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grim
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Hoyt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Grim is a simple gem for extracting a page from a pdf and converting
|
14
14
|
it to an image as well as extract the text from the page as a string. It basically
|
@@ -29,6 +29,7 @@ files:
|
|
29
29
|
- lib/grim.rb
|
30
30
|
- lib/grim/image_magick_processor.rb
|
31
31
|
- lib/grim/multi_processor.rb
|
32
|
+
- lib/grim/null_logger.rb
|
32
33
|
- lib/grim/page.rb
|
33
34
|
- lib/grim/pdf.rb
|
34
35
|
- lib/grim/version.rb
|
@@ -38,6 +39,7 @@ files:
|
|
38
39
|
- spec/fixtures/unprocessable.pdf
|
39
40
|
- spec/lib/grim/image_magick_processor_spec.rb
|
40
41
|
- spec/lib/grim/multi_processor_spec.rb
|
42
|
+
- spec/lib/grim/null_logger_spec.rb
|
41
43
|
- spec/lib/grim/page_spec.rb
|
42
44
|
- spec/lib/grim/pdf_spec.rb
|
43
45
|
- spec/lib/grim_spec.rb
|
@@ -61,7 +63,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
61
63
|
version: '0'
|
62
64
|
requirements: []
|
63
65
|
rubyforge_project: grim
|
64
|
-
rubygems_version: 2.
|
66
|
+
rubygems_version: 2.4.5.1
|
65
67
|
signing_key:
|
66
68
|
specification_version: 4
|
67
69
|
summary: Extract slides and text from a PDF.
|
@@ -71,6 +73,7 @@ test_files:
|
|
71
73
|
- spec/fixtures/unprocessable.pdf
|
72
74
|
- spec/lib/grim/image_magick_processor_spec.rb
|
73
75
|
- spec/lib/grim/multi_processor_spec.rb
|
76
|
+
- spec/lib/grim/null_logger_spec.rb
|
74
77
|
- spec/lib/grim/page_spec.rb
|
75
78
|
- spec/lib/grim/pdf_spec.rb
|
76
79
|
- spec/lib/grim_spec.rb
|