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 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