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 +5 -5
- data/Changelog.md +6 -1
- data/LICENSE.txt +1 -1
- data/bin/ghtml2pdf +1 -0
- data/lib/ghtml2pdf/application.rb +44 -28
- data/lib/ghtml2pdf/argument_parser.rb +27 -15
- data/lib/ghtml2pdf/print_settings.rb +25 -0
- data/lib/ghtml2pdf/version.rb +3 -1
- data/lib/ghtml2pdf.rb +2 -0
- metadata +29 -42
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 123b03968a78ec83823e0938eb1a749bc16561bc9a2e59252bd828b92a97b260
|
4
|
+
data.tar.gz: 7d9bddb02ff8616deb9d6ac3861b5aab946e1fadab146dda3a5322a6bdbbcb5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14fc0733668d042b41379f3fc9b1cf34aec2af3c0aa6a8d3efc7bdadcb1d02374c24f1fccbe8a43f1d29a5e3b67b2f1d933cc812efa0b4faba2377f76a3af17c
|
7
|
+
data.tar.gz: be73db65d725b3605375d26d41437aafc04da48e9e5415ff1747d12c47f76e0d748465d0fdf830c768dc8b5da1e5f945d91e4ae1f6028190f0881d1936b8e41b
|
data/Changelog.md
CHANGED
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,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
|
-
|
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
|
62
|
-
setup.set_bottom_margin
|
63
|
-
setup.set_left_margin
|
64
|
-
setup.set_right_margin
|
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
|
69
|
-
|
70
|
-
|
71
|
-
|
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.
|
102
|
+
@web_view ||= WebKit2::WebView.new
|
76
103
|
end
|
77
104
|
|
78
105
|
def print_settings
|
79
|
-
|
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
|
-
|
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
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
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
|
-
|
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
|
data/lib/ghtml2pdf/version.rb
CHANGED
data/lib/ghtml2pdf.rb
CHANGED
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.
|
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:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
54
|
+
version: '2.2'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: aruba
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
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:
|
68
|
+
version: 0.14.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: bundler
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
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: '
|
82
|
+
version: '1.7'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: cucumber
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '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.
|
96
|
+
version: '3.0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: pdf-reader
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
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:
|
110
|
+
version: 2.1.0
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: rake
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
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:
|
124
|
+
version: '12.0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
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:
|
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:
|
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:
|
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.
|
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+
|