ghtml2pdf 0.2.0 → 0.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
- SHA1:
3
- metadata.gz: cdfdbe8ab1a2b00b5cf66b27b99be41beb18303f
4
- data.tar.gz: 7bd1589a4c06e5fb32955d50ec3d95901438e58d
2
+ SHA256:
3
+ metadata.gz: 123b03968a78ec83823e0938eb1a749bc16561bc9a2e59252bd828b92a97b260
4
+ data.tar.gz: 7d9bddb02ff8616deb9d6ac3861b5aab946e1fadab146dda3a5322a6bdbbcb5e
5
5
  SHA512:
6
- metadata.gz: 2844420dbfd5e88d9929c2b5f9abe3ce98add53ec90ba0f551d4a78a0b992f6632c3caad62ddc79b4f7fef9318636f2197ca03d7e59ca3c2660b2e3acc3ae311
7
- data.tar.gz: 300d570641270b7975b195a5ff7c6e63088a04536f16300f8891d9bc873584b5442d93a7d839ebe88b89377f59435cd533089691849f432b0963fa017c085c08
6
+ metadata.gz: 14fc0733668d042b41379f3fc9b1cf34aec2af3c0aa6a8d3efc7bdadcb1d02374c24f1fccbe8a43f1d29a5e3b67b2f1d933cc812efa0b4faba2377f76a3af17c
7
+ data.tar.gz: be73db65d725b3605375d26d41437aafc04da48e9e5415ff1747d12c47f76e0d748465d0fdf830c768dc8b5da1e5f945d91e4ae1f6028190f0881d1936b8e41b
data/Changelog.md CHANGED
@@ -1,4 +1,9 @@
1
- # Change log
1
+ # Changelog
2
+
3
+ ## 0.3.0 / 2017-03-25
4
+
5
+ * Update dependency on GirFFI-Gtk
6
+ * Target Ruby 2.3 and up
2
7
 
3
8
  ## 0.2.0 / 2016-02-06
4
9
 
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2015 Matijs van Zuijlen
3
+ Copyright (c) 2015-2018 Matijs van Zuijlen
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/bin/ghtml2pdf CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'ghtml2pdf'
4
5
  require 'headless'
@@ -1,5 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'gir_ffi-gtk3'
2
4
  require_relative 'argument_parser'
5
+ require_relative 'print_settings'
3
6
 
4
7
  GirFFI.setup :WebKit2
5
8
 
@@ -9,9 +12,21 @@ module GHtml2Pdf
9
12
  class Application
10
13
  def initialize(argv)
11
14
  @argument_parser = ArgumentParser.new(argv)
15
+ default_web_context.set_process_model :multiple_secondary_processes
12
16
  end
13
17
 
14
18
  def run
19
+ setup_load_handler
20
+ load_uri
21
+ Gtk.main
22
+ destroy_view
23
+ end
24
+
25
+ private
26
+
27
+ attr_reader :argument_parser
28
+
29
+ def setup_load_handler
15
30
  web_view.signal_connect 'load-changed' do |_, event, _|
16
31
  case event
17
32
  when :finished
@@ -20,18 +35,16 @@ module GHtml2Pdf
20
35
  Gtk.main_quit
21
36
  end
22
37
  end
38
+ end
23
39
 
40
+ def load_uri
24
41
  web_view.load_uri(input_uri)
42
+ end
25
43
 
26
- Gtk.main
27
-
44
+ def destroy_view
28
45
  web_view.destroy
29
46
  end
30
47
 
31
- private
32
-
33
- attr_reader :argument_parser
34
-
35
48
  def top_margin
36
49
  @top_margin ||= argument_parser.top_margin || Unit.new('2cm')
37
50
  end
@@ -56,38 +69,41 @@ module GHtml2Pdf
56
69
  end
57
70
 
58
71
  def page_setup
59
- Gtk::PageSetup.new.tap do |setup|
72
+ @page_setup ||= Gtk::PageSetup.new.tap do |setup|
60
73
  setup.set_paper_size Gtk::PaperSize.new Gtk::PAPER_NAME_A4
61
- setup.set_top_margin top_margin.convert_to('mm').scalar, :mm
62
- setup.set_bottom_margin bottom_margin.convert_to('mm').scalar, :mm
63
- setup.set_left_margin left_margin.convert_to('mm').scalar, :mm
64
- setup.set_right_margin right_margin.convert_to('mm').scalar, :mm
74
+ setup.set_top_margin top_margin_in_mm, :mm
75
+ setup.set_bottom_margin bottom_margin_in_mm, :mm
76
+ setup.set_left_margin left_margin_in_mm, :mm
77
+ setup.set_right_margin right_margin_in_mm, :mm
65
78
  end
66
79
  end
67
80
 
68
- def web_context
69
- @web_context ||= WebKit2::WebContext.new.tap do |context|
70
- context.set_process_model :multiple_secondary_processes
71
- end
81
+ def top_margin_in_mm
82
+ top_margin.convert_to('mm').scalar
83
+ end
84
+
85
+ def bottom_margin_in_mm
86
+ bottom_margin.convert_to('mm').scalar
87
+ end
88
+
89
+ def left_margin_in_mm
90
+ left_margin.convert_to('mm').scalar
91
+ end
92
+
93
+ def right_margin_in_mm
94
+ right_margin.convert_to('mm').scalar
95
+ end
96
+
97
+ def default_web_context
98
+ @default_web_context ||= WebKit2::WebContext.get_default
72
99
  end
73
100
 
74
101
  def web_view
75
- @web_view ||= WebKit2::WebView.new_with_context web_context
102
+ @web_view ||= WebKit2::WebView.new
76
103
  end
77
104
 
78
105
  def print_settings
79
- Gtk::PrintSettings.new.tap do |settings|
80
- settings.set_number_up 1
81
- settings.set_reverse false
82
- settings.set_print_pages :all
83
- settings.set 'output-uri', output_uri
84
- settings.set 'output-file-format', 'pdf'
85
- settings.set_collate false
86
- settings.set_n_copies 1
87
- settings.set_printer 'Print to File'
88
- settings.set_page_set :all
89
- settings.set_scale 100.0
90
- end
106
+ @print_settings ||= PrintSettings.new.tap { |it| it.output_uri = output_uri }
91
107
  end
92
108
 
93
109
  def output_uri
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'optparse'
2
4
  require 'ruby-units'
3
5
 
@@ -11,28 +13,38 @@ module GHtml2Pdf
11
13
  attr_reader :top_margin, :bottom_margin, :left_margin, :right_margin
12
14
 
13
15
  def initialize(argv)
14
- option_parser.parse! argv
16
+ setup_banner
17
+ setup_margin_options
18
+ setup_help_message
19
+ parser.parse! argv
15
20
  @input, @output, = argv
16
21
  raise MissingArgument, 'An input filename is required' unless @input
17
22
  raise MissingArgument, 'An output filename is required' unless @output
18
23
  end
19
24
 
20
- def option_parser
21
- @option_parser ||=
22
- OptionParser.new.tap do |parser|
23
- parser.banner = "Usage: #{parser.program_name} [options] INFILE OUTFILE"
24
- parser.on('--top-margin MARGIN', 'Set top margin') { |val| self.top_margin = val }
25
- parser.on('--bottom-margin MARGIN', 'Set bottom margin') { |val| self.bottom_margin = val }
26
- parser.on('--left-margin MARGIN', 'Set left margin') { |val| self.left_margin = val }
27
- parser.on('--right-margin MARGIN', 'Set right margin') { |val| self.right_margin = val }
28
- parser.on_tail('-h', '--help', 'Show this message') do
29
- puts parser
30
- exit
31
- end
32
- end
25
+ private
26
+
27
+ def parser
28
+ @parser ||= OptionParser.new
33
29
  end
34
30
 
35
- private
31
+ def setup_banner
32
+ parser.banner = "Usage: #{parser.program_name} [options] INFILE OUTFILE"
33
+ end
34
+
35
+ 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 }
40
+ end
41
+
42
+ def setup_help_message
43
+ parser.on_tail('-h', '--help', 'Show this message') do
44
+ puts parser
45
+ exit
46
+ end
47
+ end
36
48
 
37
49
  def top_margin=(val)
38
50
  @top_margin = Unit.new(val)
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'gir_ffi-gtk3'
4
+
5
+ module GHtml2Pdf
6
+ # Specialized PrintSettings class for printing to a file.
7
+ class PrintSettings < Gtk::PrintSettings
8
+ def initialize
9
+ super
10
+ set_number_up 1
11
+ set_reverse false
12
+ set_print_pages :all
13
+ set 'output-file-format', 'pdf'
14
+ set_collate false
15
+ set_n_copies 1
16
+ set_printer 'Print to File'
17
+ set_page_set :all
18
+ set_scale 100.0
19
+ end
20
+
21
+ def output_uri=(uri)
22
+ set 'output-uri', uri
23
+ end
24
+ end
25
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GHtml2Pdf
2
- VERSION = '0.2.0'
4
+ VERSION = '0.3.0'
3
5
  end
data/lib/ghtml2pdf.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ghtml2pdf/version'
2
4
  require 'ghtml2pdf/application'
3
5
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ghtml2pdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matijs van Zuijlen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-14 00:00:00.000000000 Z
11
+ date: 2018-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gir_ffi-gtk
@@ -16,140 +16,126 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.10.0
19
+ version: 0.12.0
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.10.0
26
+ version: 0.12.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: headless
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 2.2.0
33
+ version: 2.3.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.2.0
40
+ version: 2.3.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: ruby-units
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 2.0.1
47
+ version: '2.2'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 2.0.1
54
+ version: '2.2'
55
55
  - !ruby/object:Gem::Dependency
56
- name: bundler
56
+ name: aruba
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.7'
61
+ version: 0.14.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: '1.7'
68
+ version: 0.14.0
69
69
  - !ruby/object:Gem::Dependency
70
- name: rake
70
+ name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '11.1'
75
+ version: '1.7'
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: '11.1'
82
+ version: '1.7'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rspec
84
+ name: cucumber
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '3.3'
89
+ version: '3.0'
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.3'
96
+ version: '3.0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: cucumber
98
+ name: pdf-reader
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '2.1'
103
+ version: 2.1.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'
110
+ version: 2.1.0
111
111
  - !ruby/object:Gem::Dependency
112
- name: aruba
112
+ name: rake
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.14.0
117
+ version: '12.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: 0.14.0
124
+ version: '12.0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: pry
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: pdf-reader
126
+ name: rspec
141
127
  requirement: !ruby/object:Gem::Requirement
142
128
  requirements:
143
129
  - - "~>"
144
130
  - !ruby/object:Gem::Version
145
- version: 1.4.0
131
+ version: '3.3'
146
132
  type: :development
147
133
  prerelease: false
148
134
  version_requirements: !ruby/object:Gem::Requirement
149
135
  requirements:
150
136
  - - "~>"
151
137
  - !ruby/object:Gem::Version
152
- version: 1.4.0
138
+ version: '3.3'
153
139
  description: "\n Clean Ruby implemenentation of a HTML to PDF\n converter based
154
140
  on WebKit, WebKit2GTK+ and GirFFI\n "
155
141
  email:
@@ -166,6 +152,7 @@ files:
166
152
  - lib/ghtml2pdf.rb
167
153
  - lib/ghtml2pdf/application.rb
168
154
  - lib/ghtml2pdf/argument_parser.rb
155
+ - lib/ghtml2pdf/print_settings.rb
169
156
  - lib/ghtml2pdf/version.rb
170
157
  homepage: https://github.com/mvz/ghtml2pdf
171
158
  licenses:
@@ -179,7 +166,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
179
166
  requirements:
180
167
  - - ">="
181
168
  - !ruby/object:Gem::Version
182
- version: '0'
169
+ version: 2.3.0
183
170
  required_rubygems_version: !ruby/object:Gem::Requirement
184
171
  requirements:
185
172
  - - ">="
@@ -187,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
187
174
  version: '0'
188
175
  requirements: []
189
176
  rubyforge_project:
190
- rubygems_version: 2.5.1
177
+ rubygems_version: 2.7.6
191
178
  signing_key:
192
179
  specification_version: 4
193
180
  summary: HTML to PDF converter based on WebKit2GTK+