html2pdf 0.1.6 → 0.1.7

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: 4890d94669f7ee299c9c75a8596d8c796b1e79db
4
- data.tar.gz: 5b36b98c6a042f47031688c535d952d01b5092ad
3
+ metadata.gz: d51f99366f1cdaef945c9e434fdc1a14647380c0
4
+ data.tar.gz: f4ebe2bc4f9d4fc410883cecce69227219e01e99
5
5
  SHA512:
6
- metadata.gz: a5bfa0b847188cd3bfe22821cb5d7e1e16fb958694961a00bc2e31c4687c44ae2c7c3706311d7dc4e02c9350aa89a5b91c231a031ba87f091ad23bb95b404f50
7
- data.tar.gz: 58157010f9e34b141244d6b31fd4406719beefccaebab78e33a21476a4160b6c02980945407bcdbfe936b38366c574df2780d316b18b0f99d7926e2d1cf20650
6
+ metadata.gz: 82969eb4ccba80407ff5438d3feb237884fbfbd686a8a5d442c76763d85564e41b36ae1393b190b2a78890c334dd53a81e78e7d7cb16098c390f990007caff0a
7
+ data.tar.gz: 8d7001ccc60907d7199a2959fba38e92efd970302fc23ed3fb0e253d90275717740d57e3caa66f3956cc2a41418798d4bfb23a6a8e7b65014e858362e99ec2c7
data/.rubocop.yml CHANGED
@@ -48,9 +48,9 @@ Documentation:
48
48
  HashSyntax:
49
49
  Enabled: true
50
50
 
51
- # No spaces inside hash literals
51
+ # spaces inside hash literals
52
52
  SpaceInsideHashLiteralBraces:
53
- EnforcedStyle: no_space
53
+ EnforcedStyle: space
54
54
 
55
55
  # Allow dots at the end of lines
56
56
  DotPosition:
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  ### Changelogs for html2pdf
2
2
 
3
+ #### 0.1.7
4
+
5
+ - Add `--disable-smart-shrinking` option in wkhtmltopdf
6
+ - Update `rubocop` to 0.23.x version
7
+ - Allow the customization through configuration
8
+
3
9
  #### 0.1.6
4
10
 
5
11
  - Make use of the starting directory in the output filename
data/README.md CHANGED
@@ -18,12 +18,7 @@ Note: starting from version `0.1.0` this gem will be release based on [Semantic
18
18
 
19
19
  - [wkhtmltopdf][] - please see [wkhtmltopdf installation][] for detail
20
20
 
21
- ### Dependencies
22
-
23
- - wkhtmltopdf (Linux/OSX)
24
- - OSX or Linux
25
-
26
- ## Usage
21
+ ### Usage
27
22
 
28
23
  ```sh
29
24
  gem install html2pdf
@@ -91,6 +86,80 @@ the pdf version of it.
91
86
 
92
87
  - Then combine the generated pdf files using [pdfs2pdf][] gem to produce one pdf file
93
88
 
89
+ ### Customization
90
+
91
+ If you like to adjust the output for pdf you can override the default settings by
92
+ set your own configuration in the file `config/initializers/html2pdf.rb`
93
+
94
+ For more customization please see the [wkhtmltopdf manual][] page for detail.
95
+
96
+ ```ruby
97
+ require_relative "../../lib/html2pdf/configuration"
98
+ module Html2Pdf
99
+ class << self
100
+ # rubocop:disable MethodLength
101
+ def update_config
102
+ Html2Pdf.configure do |config|
103
+ # Note: or add your own path here if `wkhtmltopdf` is not in the $PATH environment
104
+ config.options[:wkhtmltopdf] = (defined?(Bundler::GemfileError) ? `bundle exec which wkhtmltopdf` : `which wkhtmltopdf`).chomp
105
+ config.options[:page_settings] = [
106
+ "--margin-top 8",
107
+ "--margin-bottom 8",
108
+ "--margin-left 8",
109
+ "--margin-right 8",
110
+ '--header-center "[webpage] :: [page]/[topage]"',
111
+ "--header-spacing 1",
112
+ "--header-font-size 8",
113
+ "--header-line",
114
+ "--footer-spacing 1",
115
+ "--footer-font-size 8",
116
+ "--footer-line"
117
+ ]
118
+ end
119
+ end
120
+ # rubocop:enable All
121
+ end
122
+ end
123
+ ```
124
+
125
+ You can use the custom settings by loading it in the `bin/html2pdf` like:
126
+
127
+ ```ruby
128
+ #!/usr/bin/env ruby
129
+ require_relative "../lib/html2pdf"
130
+ # Note: if you like to customize the settings for `wkhtmltopdf` then
131
+ # uncomment the next two lines
132
+ # -----------------------------------------------------------------#
133
+ require_relative "../config/initializers/html2pdf"
134
+ Html2Pdf.update_config
135
+ # -----------------------------------------------------------------#
136
+ if ARGV.empty?
137
+ Html2Pdf::CLI.start(%w[usage])
138
+ else
139
+ Html2Pdf::CLI.start(%w[export].concat(ARGV))
140
+ end
141
+ ```
142
+
143
+ Note: by default the above configuration is configured in
144
+ the file `./lib/html2pdf/configuration.rb`. Which contain the following values
145
+
146
+ ```ruby
147
+ wkhtmltopdf = (defined?(Bundler::GemfileError) ? `bundle exec which wkhtmltopdf` : `which wkhtmltopdf`).chomp,
148
+ page_settings = [
149
+ "--margin-top 4",
150
+ "--margin-bottom 4",
151
+ "--margin-left 4",
152
+ "--margin-right 4",
153
+ '--header-center "[webpage] :: [page]/[topage]"',
154
+ "--header-spacing 1",
155
+ "--header-font-size 8",
156
+ "--header-line",
157
+ "--footer-spacing 1",
158
+ "--footer-font-size 8",
159
+ "--footer-line"
160
+ ]
161
+ ```
162
+
94
163
  ### Contributing
95
164
 
96
165
  1. Fork it ( http://github.com/agilecreativity/html2pdf/fork )
@@ -103,4 +172,5 @@ the pdf version of it.
103
172
  [pdfs2pdf]: https://github.com/agilecreativity/pdfs2pdf
104
173
  [wkhtmltopdf]: http://wkhtmltopdf.org/
105
174
  [wkhtmltopdf installation]: https://github.com/pdfkit/pdfkit/wiki/Installing-WKHTMLTOPDF
175
+ [wkhtmltopdf manual]: http://wkhtmltopdf.org/usage/wkhtmltopdf.txt
106
176
  [Semantic Versioning]: http://semver.org
data/Rakefile CHANGED
@@ -20,7 +20,7 @@ end
20
20
 
21
21
  require "rubocop/rake_task"
22
22
  desc "Run RuboCop on the lib directory"
23
- Rubocop::RakeTask.new(:rubocop) do |task|
23
+ RuboCop::RakeTask.new(:rubocop) do |task|
24
24
  task.patterns = ["lib/**/*.rb"]
25
25
  # only show the files with failures
26
26
  task.formatters = ["files"]
data/bin/html2pdf CHANGED
@@ -1,6 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
  require_relative "../lib/html2pdf"
3
- include Html2Pdf
3
+ # If you like to customize the settings for `wkhtmltopdf` then
4
+ # edit the file `config/initializers/html2pdf.rb` and enable it in the next 2 lines
5
+ # -----------------------------------------------------------------#
6
+ # require_relative "../config/initializers/html2pdf"
7
+ # Html2Pdf.update_config
8
+ # -----------------------------------------------------------------#
4
9
  if ARGV.empty?
5
10
  Html2Pdf::CLI.start(%w[usage])
6
11
  else
@@ -0,0 +1,28 @@
1
+ require_relative "../../lib/html2pdf/configuration"
2
+ module Html2Pdf
3
+ class << self
4
+ # Customize the configuration for specific system (Ubuntu/OSX/etc)
5
+ # See: ./lib/html2pdf/configuration.rb for available options
6
+ # rubocop:disable MethodLength
7
+ def update_config
8
+ Html2Pdf.configure do |config|
9
+ # Note: or add your own path here if `wkhtmltopdf` is not in the $PATH environment
10
+ config.options[:wkhtmltopdf] = (defined?(Bundler::GemfileError) ? `bundle exec which wkhtmltopdf` : `which wkhtmltopdf`).chomp
11
+ config.options[:page_settings] = [
12
+ "--margin-top 8",
13
+ "--margin-bottom 8",
14
+ "--margin-left 8",
15
+ "--margin-right 8",
16
+ '--header-center "[webpage] :: [page]/[topage]"',
17
+ "--header-spacing 1",
18
+ "--header-font-size 8",
19
+ "--header-line",
20
+ "--footer-spacing 1",
21
+ "--footer-font-size 8",
22
+ "--footer-line"
23
+ ]
24
+ end
25
+ end
26
+ # rubocop:enable All
27
+ end
28
+ end
data/html2pdf.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.description = %q(Export list of html or xhtml files to pdfs with 'wkhtmltopdf')
13
13
  spec.homepage = "https://github.com/agilecreativity/html2pdf"
14
14
  spec.license = "MIT"
15
- spec.files = Dir.glob("{bin,lib}/**/*") + %w[Gemfile
15
+ spec.files = Dir.glob("{bin,lib,config}/**/*") + %w[Gemfile
16
16
  Rakefile
17
17
  html2pdf.gemspec
18
18
  README.md
@@ -35,6 +35,6 @@ Gem::Specification.new do |spec|
35
35
  spec.add_development_dependency "minitest-spec-context", "~> 0.0.3"
36
36
  spec.add_development_dependency "pry", "~> 0.9"
37
37
  spec.add_development_dependency "rake", "~> 10.1"
38
- spec.add_development_dependency "rubocop", "~> 0.20"
38
+ spec.add_development_dependency "rubocop", "~> 0.23"
39
39
  spec.add_development_dependency "yard", "~> 0.8"
40
40
  end
data/lib/html2pdf/cli.rb CHANGED
@@ -4,6 +4,7 @@ require "fileutils"
4
4
  require_relative "../html2pdf"
5
5
  module Html2Pdf
6
6
  class CLI < Thor
7
+ # rubocop:disable AmbiguousOperator, MethodLength
7
8
  desc "export", "export multiple html files to pdfs"
8
9
  method_option *AgileUtils::Options::BASE_DIR
9
10
  method_option *AgileUtils::Options::RECURSIVE
@@ -38,6 +39,7 @@ module Html2Pdf
38
39
  puts "Convert files to pdfs took #{elapsed} ms"
39
40
  puts "Your final output is '#{File.absolute_path(output_file)}'"
40
41
  end
42
+ # rubocop:enable All
41
43
 
42
44
  desc "usage", "Display usage information"
43
45
  def usage
@@ -0,0 +1,49 @@
1
+ module Html2Pdf
2
+ class Configuration
3
+ attr_accessor :options
4
+ # rubocop:disable MethodLength
5
+ def initialize
6
+ # see: http://wkhtmltopdf.org/usage/wkhtmltopdf.txt
7
+ @options = {
8
+ wkhtmltopdf: (defined?(Bundler::GemfileError) ? `bundle exec which wkhtmltopdf` : `which wkhtmltopdf`).chomp,
9
+ page_settings: [
10
+ "--margin-top 4",
11
+ "--margin-bottom 4",
12
+ "--margin-left 4",
13
+ "--margin-right 4",
14
+ '--header-center "[webpage] :: [page]/[topage]"',
15
+ "--header-spacing 1",
16
+ "--header-font-size 8",
17
+ "--header-line",
18
+ "--footer-spacing 1",
19
+ "--footer-font-size 8",
20
+ "--footer-line"
21
+ ]
22
+ }
23
+ end
24
+ # rubocop:enable All
25
+ end
26
+
27
+ class << self
28
+ attr_accessor :configuration
29
+
30
+ # Configure Pdfs2Pdf someplace sensible, like
31
+ # config/initializers/html2pdf.rb
32
+ #
33
+ # Html2Pdf.configure do |config|
34
+ # # set appropriate options
35
+ # config.options[:wkhtmltopdf] = '/usr/bin/wkhtmltopdf'
36
+ # config.options[:page_settings] = [ "--margin-top 4",
37
+ # "--margin-bottom 4",
38
+ # ..
39
+ # ]
40
+ # end
41
+ def configuration
42
+ @configuration ||= Configuration.new
43
+ end
44
+
45
+ def configure
46
+ yield(configuration)
47
+ end
48
+ end
49
+ end
@@ -1,6 +1,7 @@
1
1
  require "open3"
2
2
  require "fileutils"
3
3
  require_relative "../html2pdf"
4
+ require_relative "./configuration"
4
5
  module Html2Pdf
5
6
  class << self
6
7
  # Batch convert to pdf using `wkhtmltopdf` tool
@@ -19,23 +20,15 @@ module Html2Pdf
19
20
  # @param filename input filename
20
21
  def to_pdf(filename)
21
22
  fail "Invalid input file #{filename}" unless File.exist?(filename)
22
- # TODO: allow custom configuration
23
+ wkhtmltopdf = Html2Pdf.configuration.options[:wkhtmltopdf]
24
+ page_settings = Html2Pdf.configuration.options[:page_settings]
23
25
  command = [
24
- "wkhtmltopdf",
25
- "--margin-top 4",
26
- "--margin-bottom 4",
27
- "--margin-left 4",
28
- "--margin-right 4",
29
- '--header-center "[webpage] :: [page]/[topage]"',
30
- "--header-spacing 1",
31
- "--header-font-size 8",
32
- "--header-line",
33
- "--footer-spacing 1",
34
- "--footer-font-size 8",
35
- "--footer-line",
36
- "#{filename}",
26
+ wkhtmltopdf,
27
+ *page_settings,
28
+ filename,
37
29
  "#{filename}.pdf",
38
- "> /dev/null"]
30
+ "> /dev/null"
31
+ ]
39
32
  _stdin, _stderr, status = Open3.capture3(command.join(" "))
40
33
  fail "Problem processing #{filename}" unless status.success?
41
34
  end
@@ -1,3 +1,3 @@
1
1
  module Html2Pdf
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: html2pdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Burin Choomnuan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-01 00:00:00.000000000 Z
11
+ date: 2014-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -184,14 +184,14 @@ dependencies:
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: '0.20'
187
+ version: '0.23'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: '0.20'
194
+ version: '0.23'
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: yard
197
197
  requirement: !ruby/object:Gem::Requirement
@@ -222,9 +222,11 @@ files:
222
222
  - README.md
223
223
  - Rakefile
224
224
  - bin/html2pdf
225
+ - config/initializers/html2pdf.rb
225
226
  - html2pdf.gemspec
226
227
  - lib/html2pdf.rb
227
228
  - lib/html2pdf/cli.rb
229
+ - lib/html2pdf/configuration.rb
228
230
  - lib/html2pdf/html2pdf.rb
229
231
  - lib/html2pdf/version.rb
230
232
  - test/fixtures/samples/demo1_xxx.rb