grim 1.2.0 → 1.3.0
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/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
|