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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 75e501e9b8b7daf4549a07bf29f3e34baa5099f1
4
- data.tar.gz: 1a96dc37be69e9474305329c74b4a556b20d2a1d
3
+ metadata.gz: 351b803d58cd1849dbe87c987f23fe3bff91bdc1
4
+ data.tar.gz: 79a712dd44dee6e7f9e7dcb562242ed4b26d0652
5
5
  SHA512:
6
- metadata.gz: 82ee2f6442b015ccd7716467ac18d8f0081e6741e72a36fb3ee48032287b9915785dbae78ff4e74a182bc0b801b55228f462f2898839a45d9b6f73683b9b8f3a
7
- data.tar.gz: 54356b62ff9d386dedf2107d70efbba276d4be24c7168c190b8f9bddcf04b0dcc9b36186de49e3804e53ae0fa0832eed26cc4cbe48b103837f50dbed00211ecf
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/)
@@ -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
- command.unshift("PATH=#{File.dirname(@ghostscript_path)}:#{ENV['PATH']}") if @ghostscript_path && @ghostscript_path != DefaultGhostScriptPath
45
+ command_env = {}
44
46
 
45
- result = `#{command.join(' ')}`
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
- $? == 0 || raise(UnprocessablePage, result)
59
+ status.success? || raise(UnprocessablePage, result)
48
60
  end
49
61
  end
50
62
  end
@@ -0,0 +1,9 @@
1
+ require "logger"
2
+
3
+ module Grim
4
+ class NullLogger
5
+ def initialize(*args); end
6
+ def debug(*args); end
7
+ def info(*args); end
8
+ end
9
+ end
@@ -50,7 +50,10 @@ module Grim
50
50
  # Returns a String.
51
51
  #
52
52
  def text
53
- `#{[@pdftotext_path, "-enc", "UTF-8", "-f", @number, "-l", @number, Shellwords.escape(@pdf.path), "-"].join(' ')}`
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
@@ -1,4 +1,4 @@
1
1
  # encoding: UTF-8
2
2
  module Grim
3
- VERSION = "1.2.0" unless defined?(::Grim::VERSION)
3
+ VERSION = "1.3.0" unless defined?(::Grim::VERSION)
4
4
  end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+ require "stringio"
3
+
4
+ describe Grim::NullLogger do
5
+ it "acts like Logger but doesn't log anything" do
6
+ io = StringIO.new
7
+ logger = Grim::NullLogger.new(io)
8
+ logger.debug "hello world"
9
+ expect(io.string).to eq("")
10
+ end
11
+ end
@@ -26,9 +26,27 @@ describe Grim do
26
26
  expect(Grim::COLORSPACE).to eq('RGB')
27
27
  end
28
28
 
29
- describe "#reap" do
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.2.0
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: 2015-02-19 00:00:00.000000000 Z
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.2.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