ghtml2pdf 0.3.0 → 0.5.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
  SHA256:
3
- metadata.gz: 123b03968a78ec83823e0938eb1a749bc16561bc9a2e59252bd828b92a97b260
4
- data.tar.gz: 7d9bddb02ff8616deb9d6ac3861b5aab946e1fadab146dda3a5322a6bdbbcb5e
3
+ metadata.gz: 6c5f3b9c7d46fcd011e28e5e0805b563b947effff5fa9d15543e22ca7b36b766
4
+ data.tar.gz: c4f4540b3a702fdc11f8d9570a258cdf82e1c4ace088619161318d04f392f9fe
5
5
  SHA512:
6
- metadata.gz: 14fc0733668d042b41379f3fc9b1cf34aec2af3c0aa6a8d3efc7bdadcb1d02374c24f1fccbe8a43f1d29a5e3b67b2f1d933cc812efa0b4faba2377f76a3af17c
7
- data.tar.gz: be73db65d725b3605375d26d41437aafc04da48e9e5415ff1747d12c47f76e0d748465d0fdf830c768dc8b5da1e5f945d91e4ae1f6028190f0881d1936b8e41b
6
+ metadata.gz: b056de7f7942d60b259206308fc3d2064a2f560904f62c1fd34a16511c3b1ad757b9f495fabbbc679abcabd05d8042dfd32143720417a97d4e3ca2d1b72ab1d5
7
+ data.tar.gz: 2d2829181b0b9d879ab9855d9934e03b81ce97f9bf797470e432ad5214293146dbafd087e1d0de7012817e148d76c0c330e3f20407646395079d0165d08b78c0
data/Changelog.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.5.0 / 2022-04-10
4
+
5
+ * Set output file from input file if not provided
6
+ * Abort if input and output file names are identical
7
+ * Drop support for Ruby 2.5
8
+ * Add support for Ruby 3.1
9
+
10
+ ## 0.4.0 / 2021-08-11
11
+
12
+ * Target Ruby 2.5 and up
13
+ * Update dependency on GirFFI-Gtk and GirFFI
14
+ * Stop using Headless; This gem now needs an active graphical session to run
15
+
16
+ ## 0.3.1 / 2019-02-13
17
+
18
+ * Update dependency on GirFFI-Gtk
19
+
3
20
  ## 0.3.0 / 2017-03-25
4
21
 
5
22
  * Update dependency on GirFFI-Gtk
data/README.md CHANGED
@@ -44,12 +44,13 @@ Or install it yourself as:
44
44
 
45
45
  $ gem install ghtml2pdf
46
46
 
47
- You will also need to install the WebKit2GTK+, the Gtk+ bindings for WebKit2,
48
- and gobject-introspection.
47
+ You will also need to install WebKit2GTK+, the Gtk+ bindings for WebKit2,
48
+ and GObject Introspection. You should probably also install AT-Spi 2 to
49
+ avoid some annoying warning messages.
49
50
 
50
51
  On Debian and Ubuntu, this can be accomplished by installing the packages
51
- `libgirepository1.0-dev`, `gobject-introspection` should be enough to get
52
- `rake test` working.
52
+ `libgirepository-1.0-1`, `gir1.2-gtk-3.0`, `gir1.2-webkit2-3.0` or
53
+ `gir1.2-webkit2-4.0`, and `at-spi2-core`. You may also need to install ...
53
54
 
54
55
  ## Usage
55
56
 
data/bin/ghtml2pdf CHANGED
@@ -1,9 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'ghtml2pdf'
5
- require 'headless'
4
+ require "ghtml2pdf"
6
5
 
7
- Headless.ly do
8
- GHtml2Pdf.run(ARGV)
9
- end
6
+ GHtml2Pdf.run(ARGV)
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi-gtk3'
4
- require_relative 'argument_parser'
5
- require_relative 'print_settings'
3
+ require "gir_ffi-gtk3"
4
+ require "ghtml2pdf/argument_parser"
5
+ require "ghtml2pdf/print_settings"
6
6
 
7
7
  GirFFI.setup :WebKit2
8
8
 
@@ -16,7 +16,7 @@ module GHtml2Pdf
16
16
  end
17
17
 
18
18
  def run
19
- setup_load_handler
19
+ setup_signal_handlers
20
20
  load_uri
21
21
  Gtk.main
22
22
  destroy_view
@@ -26,15 +26,17 @@ module GHtml2Pdf
26
26
 
27
27
  attr_reader :argument_parser
28
28
 
29
- def setup_load_handler
30
- web_view.signal_connect 'load-changed' do |_, event, _|
29
+ def setup_signal_handlers
30
+ web_view.signal_connect "load-changed" do |_, event, _|
31
31
  case event
32
32
  when :finished
33
33
  print_operation.print
34
- sleep 2
35
- Gtk.main_quit
36
34
  end
37
35
  end
36
+
37
+ print_operation.signal_connect "finished" do |*_args|
38
+ Gtk.main_quit
39
+ end
38
40
  end
39
41
 
40
42
  def load_uri
@@ -46,23 +48,23 @@ module GHtml2Pdf
46
48
  end
47
49
 
48
50
  def top_margin
49
- @top_margin ||= argument_parser.top_margin || Unit.new('2cm')
51
+ @top_margin ||= argument_parser.top_margin || Unit.new("2cm")
50
52
  end
51
53
 
52
54
  def bottom_margin
53
- @bottom_margin ||= argument_parser.bottom_margin || Unit.new('3cm')
55
+ @bottom_margin ||= argument_parser.bottom_margin || Unit.new("3cm")
54
56
  end
55
57
 
56
58
  def left_margin
57
- @left_margin ||= argument_parser.left_margin || Unit.new('2cm')
59
+ @left_margin ||= argument_parser.left_margin || Unit.new("2cm")
58
60
  end
59
61
 
60
62
  def right_margin
61
- @right_margin ||= argument_parser.right_margin || Unit.new('2cm')
63
+ @right_margin ||= argument_parser.right_margin || Unit.new("2cm")
62
64
  end
63
65
 
64
66
  def print_operation
65
- WebKit2::PrintOperation.new(web_view).tap do |operation|
67
+ @print_operation ||= WebKit2::PrintOperation.new(web_view).tap do |operation|
66
68
  operation.page_setup = page_setup
67
69
  operation.print_settings = print_settings
68
70
  end
@@ -79,19 +81,19 @@ module GHtml2Pdf
79
81
  end
80
82
 
81
83
  def top_margin_in_mm
82
- top_margin.convert_to('mm').scalar
84
+ top_margin.convert_to("mm").scalar
83
85
  end
84
86
 
85
87
  def bottom_margin_in_mm
86
- bottom_margin.convert_to('mm').scalar
88
+ bottom_margin.convert_to("mm").scalar
87
89
  end
88
90
 
89
91
  def left_margin_in_mm
90
- left_margin.convert_to('mm').scalar
92
+ left_margin.convert_to("mm").scalar
91
93
  end
92
94
 
93
95
  def right_margin_in_mm
94
- right_margin.convert_to('mm').scalar
96
+ right_margin.convert_to("mm").scalar
95
97
  end
96
98
 
97
99
  def default_web_context
@@ -1,16 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'optparse'
4
- require 'ruby-units'
3
+ require "optparse"
4
+ require "ruby-units"
5
5
 
6
6
  module GHtml2Pdf
7
- # Error class raised for missing arguments
8
- class MissingArgument < StandardError; end
7
+ # Error class raised for argument errors
8
+ class ArgumentError < StandardError; end
9
9
 
10
10
  # Parses the command line arguments
11
11
  class ArgumentParser
12
- attr_reader :input, :output
13
- attr_reader :top_margin, :bottom_margin, :left_margin, :right_margin
12
+ attr_reader :input, :output, :top_margin, :bottom_margin, :left_margin, :right_margin
14
13
 
15
14
  def initialize(argv)
16
15
  setup_banner
@@ -18,8 +17,10 @@ module GHtml2Pdf
18
17
  setup_help_message
19
18
  parser.parse! argv
20
19
  @input, @output, = argv
21
- raise MissingArgument, 'An input filename is required' unless @input
22
- raise MissingArgument, 'An output filename is required' unless @output
20
+ raise ArgumentError, "An input filename is required" unless @input
21
+
22
+ @output ||= "#{File.basename(@input, ".*")}.pdf"
23
+ raise ArgumentError, "Input and output files cannot be the same" if @input == @output
23
24
  end
24
25
 
25
26
  private
@@ -33,14 +34,18 @@ module GHtml2Pdf
33
34
  end
34
35
 
35
36
  def setup_margin_options
36
- parser.on('--top-margin MARGIN', 'Set top margin') { |val| self.top_margin = val }
37
- parser.on('--bottom-margin MARGIN', 'Set bottom margin') { |val| self.bottom_margin = val }
38
- parser.on('--left-margin MARGIN', 'Set left margin') { |val| self.left_margin = val }
39
- parser.on('--right-margin MARGIN', 'Set right margin') { |val| self.right_margin = val }
37
+ parser.on("--top-margin MARGIN", "Set top margin") { |val| self.top_margin = val }
38
+ parser.on("--bottom-margin MARGIN", "Set bottom margin") do |val|
39
+ self.bottom_margin = val
40
+ end
41
+ parser.on("--left-margin MARGIN", "Set left margin") { |val| self.left_margin = val }
42
+ parser.on("--right-margin MARGIN", "Set right margin") do |val|
43
+ self.right_margin = val
44
+ end
40
45
  end
41
46
 
42
47
  def setup_help_message
43
- parser.on_tail('-h', '--help', 'Show this message') do
48
+ parser.on_tail("-h", "--help", "Show this message") do
44
49
  puts parser
45
50
  exit
46
51
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi-gtk3'
3
+ require "gir_ffi-gtk3"
4
4
 
5
5
  module GHtml2Pdf
6
6
  # Specialized PrintSettings class for printing to a file.
@@ -10,16 +10,16 @@ module GHtml2Pdf
10
10
  set_number_up 1
11
11
  set_reverse false
12
12
  set_print_pages :all
13
- set 'output-file-format', 'pdf'
13
+ set "output-file-format", "pdf"
14
14
  set_collate false
15
15
  set_n_copies 1
16
- set_printer 'Print to File'
16
+ set_printer "Print to File"
17
17
  set_page_set :all
18
18
  set_scale 100.0
19
19
  end
20
20
 
21
21
  def output_uri=(uri)
22
- set 'output-uri', uri
22
+ set "output-uri", uri
23
23
  end
24
24
  end
25
25
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GHtml2Pdf
4
- VERSION = '0.3.0'
4
+ VERSION = "0.5.0"
5
5
  end
data/lib/ghtml2pdf.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ghtml2pdf/version'
4
- require 'ghtml2pdf/application'
3
+ require "ghtml2pdf/version"
4
+ require "ghtml2pdf/application"
5
5
 
6
6
  # Main entry point for GHtml2Pdf.
7
7
  module GHtml2Pdf
@@ -11,7 +11,7 @@ module GHtml2Pdf
11
11
  def self.run(argv)
12
12
  Gtk.init
13
13
  GHtml2Pdf::Application.new(argv).run
14
- rescue GHtml2Pdf::MissingArgument => e
14
+ rescue GHtml2Pdf::ArgumentError => e
15
15
  warn e.message
16
16
  exit 1
17
17
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ghtml2pdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matijs van Zuijlen
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-25 00:00:00.000000000 Z
11
+ date: 2022-04-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: gir_ffi-gtk
14
+ name: gir_ffi
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.12.0
19
+ version: 0.15.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.12.0
26
+ version: 0.15.2
27
27
  - !ruby/object:Gem::Dependency
28
- name: headless
28
+ name: gir_ffi-gtk
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 2.3.0
33
+ version: 0.15.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 2.3.0
40
+ version: 0.15.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: ruby-units
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,70 +58,70 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.14.0
61
+ version: '2.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.14.0
68
+ version: '2.0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: bundler
70
+ name: cucumber
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.7'
75
+ version: '7.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.7'
82
+ version: '7.0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: cucumber
84
+ name: pdf-reader
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '3.0'
89
+ version: '2.9'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '3.0'
96
+ version: '2.9'
97
97
  - !ruby/object:Gem::Dependency
98
- name: pdf-reader
98
+ name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 2.1.0
103
+ version: '13.0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 2.1.0
110
+ version: '13.0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: rake
112
+ name: rake-manifest
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '12.0'
117
+ version: 0.2.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '12.0'
124
+ version: 0.2.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rspec
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -136,8 +136,64 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '3.3'
139
- description: "\n Clean Ruby implemenentation of a HTML to PDF\n converter based
140
- on WebKit, WebKit2GTK+ and GirFFI\n "
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '1.25'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.25'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubocop-packaging
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: 0.5.0
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: 0.5.0
167
+ - !ruby/object:Gem::Dependency
168
+ name: rubocop-performance
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '1.13'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '1.13'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rubocop-rspec
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '2.9'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '2.9'
195
+ description: Clean Ruby implemenentation of a HTML to PDF converter based on WebKit,
196
+ WebKit2GTK+ and GirFFI
141
197
  email:
142
198
  - matijs@matijs.net
143
199
  executables:
@@ -157,8 +213,12 @@ files:
157
213
  homepage: https://github.com/mvz/ghtml2pdf
158
214
  licenses:
159
215
  - MIT
160
- metadata: {}
161
- post_install_message:
216
+ metadata:
217
+ homepage_uri: https://github.com/mvz/ghtml2pdf
218
+ source_code_uri: https://github.com/mvz/ghtml2pdf
219
+ changelog_uri: https://github.com/mvz/ghtml2pdf/blob/master/Changelog.md
220
+ rubygems_mfa_required: 'true'
221
+ post_install_message:
162
222
  rdoc_options: []
163
223
  require_paths:
164
224
  - lib
@@ -166,16 +226,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
166
226
  requirements:
167
227
  - - ">="
168
228
  - !ruby/object:Gem::Version
169
- version: 2.3.0
229
+ version: 2.6.0
170
230
  required_rubygems_version: !ruby/object:Gem::Requirement
171
231
  requirements:
172
232
  - - ">="
173
233
  - !ruby/object:Gem::Version
174
234
  version: '0'
175
235
  requirements: []
176
- rubyforge_project:
177
- rubygems_version: 2.7.6
178
- signing_key:
236
+ rubygems_version: 3.3.7
237
+ signing_key:
179
238
  specification_version: 4
180
239
  summary: HTML to PDF converter based on WebKit2GTK+
181
240
  test_files: []