ghtml2pdf 0.2.0 → 0.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
- 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+