Dhalang 0.1.0 → 0.2.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/.travis.yml +1 -1
- data/Dhalang.gemspec +3 -1
- data/Gemfile.lock +51 -0
- data/README.md +1 -1
- data/lib/Dhalang.rb +1 -0
- data/lib/Dhalang/version.rb +1 -1
- data/lib/Screenshot.rb +51 -0
- data/lib/js/screenshotgenerator.js +26 -0
- metadata +23 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 976f451a66958a17261f84b2f79c2740323f74efc48c2e003fdb95b3f72111fd
|
4
|
+
data.tar.gz: 75e517eea1ec5a62a26a7beccdd3ee5adcf6c257e4cc5eb96782548728e00868
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ae7a907a31cf50d0bd5e6f78a27b4ccd77e2a9c6baa13b8430f48f00944af5160844a84ae428f1f0db8cba9afa083560f22d50de1f492052702773d1464ce77
|
7
|
+
data.tar.gz: 1244560c1a4cd3b2ae2a1020c79c99f30bfa6ce1b2fe413dabc5d24e7ba66f16101c8f1460b69d35edfbffcaa86c22e6687fed1cef39f2c785bc822bd03bbe66
|
data/.travis.yml
CHANGED
data/Dhalang.gemspec
CHANGED
@@ -8,8 +8,9 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Dhalang::VERSION
|
9
9
|
spec.authors = ["Niels Steensma"]
|
10
10
|
spec.email = ["nielssteensma@yahoo.nl"]
|
11
|
+
spec.licenses = ['MIT']
|
11
12
|
|
12
|
-
spec.summary = "Ruby wrapper for Puppeteer. Generate PDF's from HTML
|
13
|
+
spec.summary = "Ruby wrapper for Puppeteer. Generate screenshots and PDF's from HTML!"
|
13
14
|
spec.homepage = "https://github.com/NielsSteensma/Dhalang"
|
14
15
|
|
15
16
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
@@ -34,4 +35,5 @@ Gem::Specification.new do |spec|
|
|
34
35
|
spec.add_development_dependency "rake", "~> 10.0"
|
35
36
|
spec.add_development_dependency "rspec", "~> 3.0"
|
36
37
|
spec.add_development_dependency "pdf-reader", "~> 2.2"
|
38
|
+
spec.add_development_dependency "fastimage", "~> 1.8"
|
37
39
|
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
Dhalang (0.1.0)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
Ascii85 (1.0.3)
|
10
|
+
addressable (2.3.8)
|
11
|
+
afm (0.2.2)
|
12
|
+
diff-lcs (1.3)
|
13
|
+
fastimage (1.9.0)
|
14
|
+
addressable (~> 2.3.5)
|
15
|
+
hashery (2.1.2)
|
16
|
+
pdf-reader (2.2.0)
|
17
|
+
Ascii85 (~> 1.0.0)
|
18
|
+
afm (~> 0.2.1)
|
19
|
+
hashery (~> 2.0)
|
20
|
+
ruby-rc4
|
21
|
+
ttfunk
|
22
|
+
rake (10.5.0)
|
23
|
+
rspec (3.8.0)
|
24
|
+
rspec-core (~> 3.8.0)
|
25
|
+
rspec-expectations (~> 3.8.0)
|
26
|
+
rspec-mocks (~> 3.8.0)
|
27
|
+
rspec-core (3.8.0)
|
28
|
+
rspec-support (~> 3.8.0)
|
29
|
+
rspec-expectations (3.8.2)
|
30
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
31
|
+
rspec-support (~> 3.8.0)
|
32
|
+
rspec-mocks (3.8.0)
|
33
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
34
|
+
rspec-support (~> 3.8.0)
|
35
|
+
rspec-support (3.8.0)
|
36
|
+
ruby-rc4 (0.1.5)
|
37
|
+
ttfunk (1.5.1)
|
38
|
+
|
39
|
+
PLATFORMS
|
40
|
+
x64-mingw32
|
41
|
+
|
42
|
+
DEPENDENCIES
|
43
|
+
Dhalang!
|
44
|
+
bundler (~> 1.16)
|
45
|
+
fastimage (~> 1.8)
|
46
|
+
pdf-reader (~> 2.2)
|
47
|
+
rake (~> 10.0)
|
48
|
+
rspec (~> 3.0)
|
49
|
+
|
50
|
+
BUNDLED WITH
|
51
|
+
1.16.1
|
data/README.md
CHANGED
data/lib/Dhalang.rb
CHANGED
data/lib/Dhalang/version.rb
CHANGED
data/lib/Screenshot.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require "Dhalang/version"
|
2
|
+
require 'uri'
|
3
|
+
require 'tempfile'
|
4
|
+
|
5
|
+
module Dhalang
|
6
|
+
class Screenshot
|
7
|
+
SCREENSHOT_GENERATOR_JS_PATH = File.expand_path('../js/screenshotgenerator.js', __FILE__)
|
8
|
+
PROJECT_PATH = Dir.pwd + '/node_modules/'
|
9
|
+
|
10
|
+
def self.get_from_url_as_jpeg(url)
|
11
|
+
validate_url(url)
|
12
|
+
get_image(url, :jpeg)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.get_from_url_as_png(url)
|
16
|
+
validate_url(url)
|
17
|
+
get_image(url, :png)
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
def self.validate_url(url)
|
22
|
+
if (url !~ URI::DEFAULT_PARSER.regexp[:ABS_URI])
|
23
|
+
raise URI::InvalidURIError, 'The given url was invalid, use format http://www.example.com'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.create_temporary_screenshot_file
|
28
|
+
Tempfile.new("png")
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.get_image(url, type)
|
32
|
+
temporary_screenshot_save_file = create_temporary_screenshot_file
|
33
|
+
begin
|
34
|
+
visit_page_with_puppeteer(url, temporary_screenshot_save_file.path, type)
|
35
|
+
binary_image_content = get_file_content_as_binary_string(temporary_screenshot_save_file)
|
36
|
+
ensure
|
37
|
+
temporary_screenshot_save_file.close unless temporary_screenshot_save_file.closed?
|
38
|
+
temporary_screenshot_save_file.unlink
|
39
|
+
end
|
40
|
+
return binary_image_content
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.visit_page_with_puppeteer(page_to_visit, path_to_save_pdf_to, image_save_type)
|
44
|
+
system("node #{SCREENSHOT_GENERATOR_JS_PATH} #{page_to_visit} #{Shellwords.escape(path_to_save_pdf_to)} #{Shellwords.escape(PROJECT_PATH)} #{Shellwords.escape(image_save_type)}")
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.get_file_content_as_binary_string(file)
|
48
|
+
IO.binread(file.path)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const createPdf = async() => {
|
4
|
+
module.paths.push(process.argv[4]);
|
5
|
+
const puppeteer = require('puppeteer');
|
6
|
+
let browser;
|
7
|
+
try {
|
8
|
+
browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});
|
9
|
+
const page = await browser.newPage();
|
10
|
+
await page.goto(process.argv[2], {timeout: 10000, waitUntil: 'networkidle2'});
|
11
|
+
await page.waitFor(250);
|
12
|
+
await page.screenshot({
|
13
|
+
path: process.argv[3],
|
14
|
+
type: process.argv[5],
|
15
|
+
fullPage: true
|
16
|
+
});
|
17
|
+
} catch (err) {
|
18
|
+
console.log(err.message);
|
19
|
+
} finally {
|
20
|
+
if (browser) {
|
21
|
+
browser.close();
|
22
|
+
}
|
23
|
+
process.exit();
|
24
|
+
}
|
25
|
+
};
|
26
|
+
createPdf();
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: Dhalang
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Niels Steensma
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '2.2'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: fastimage
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.8'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.8'
|
69
83
|
description:
|
70
84
|
email:
|
71
85
|
- nielssteensma@yahoo.nl
|
@@ -77,16 +91,20 @@ files:
|
|
77
91
|
- ".travis.yml"
|
78
92
|
- Dhalang.gemspec
|
79
93
|
- Gemfile
|
94
|
+
- Gemfile.lock
|
80
95
|
- LICENSE
|
81
96
|
- README.md
|
82
97
|
- Rakefile
|
83
98
|
- lib/Dhalang.rb
|
84
99
|
- lib/Dhalang/version.rb
|
85
100
|
- lib/PDF.rb
|
101
|
+
- lib/Screenshot.rb
|
86
102
|
- lib/js/pdfgenerator.js
|
103
|
+
- lib/js/screenshotgenerator.js
|
87
104
|
- package.json
|
88
105
|
homepage: https://github.com/NielsSteensma/Dhalang
|
89
|
-
licenses:
|
106
|
+
licenses:
|
107
|
+
- MIT
|
90
108
|
metadata:
|
91
109
|
allowed_push_host: https://rubygems.org
|
92
110
|
post_install_message:
|
@@ -105,8 +123,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
123
|
version: '0'
|
106
124
|
requirements: []
|
107
125
|
rubyforge_project:
|
108
|
-
rubygems_version: 2.
|
126
|
+
rubygems_version: 2.7.6
|
109
127
|
signing_key:
|
110
128
|
specification_version: 4
|
111
|
-
summary: Ruby wrapper for Puppeteer. Generate PDF's from HTML
|
129
|
+
summary: Ruby wrapper for Puppeteer. Generate screenshots and PDF's from HTML!
|
112
130
|
test_files: []
|