puppet_pdf 0.1.1 → 0.1.2
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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +20 -3
- data/javascript/pdf_from_html.js +50 -0
- data/javascript/{pdf.js → pdf_from_url.js} +3 -7
- data/lib/puppet_pdf/pdf_creator.rb +5 -4
- data/lib/puppet_pdf/version.rb +1 -1
- data/lib/puppet_pdf.rb +9 -2
- data/package.json +2 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d554307f30fb1566b92ab4b53d7a498db6ed05b4a4518cb3c22ad052edd92c2c
|
4
|
+
data.tar.gz: bdab5ae4f0937b991daf22a0d9833e816eeff762b2309109a7f370f02a38fdf0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e0fa0d135d947c2ab9956976f98d1fb0571f85cab2388d75c7b61b9c1e3b8a957aa4a440a7bc0717bc4c2576c0d4ac666bdaf7c884bfc674f53d1d7c20088f6
|
7
|
+
data.tar.gz: 0573cfc7f2004a5f2a61dcb1d8483494f738c475851b7daca4cf1f2481ecd3a3ebc71cf3f25e3ab4efd5fd79aafb76150e0ce72608ebcd364419c7453711d0ee
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
[](https://travis-ci.org/andersonfernandes/puppet_pdf)
|
1
|
+
[](https://badge.fury.io/rb/puppet_pdf) [](https://travis-ci.org/andersonfernandes/puppet_pdf) [](https://codeclimate.com/github/andersonfernandes/puppet_pdf/maintainability)
|
2
2
|
|
3
3
|
# PuppetPdf
|
4
4
|
|
5
|
-
PuppetPdf is a lib that wraps [Google Puppeteer](https://pptr.dev/) pdf generation to be used with Rails.
|
5
|
+
PuppetPdf is a lib that wraps [Google Puppeteer](https://pptr.dev/) pdf generation method to be used with Rails.
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
@@ -20,13 +20,30 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
$ gem install puppet_pdf
|
22
22
|
|
23
|
+
Run this task to install some dependencies:
|
24
|
+
|
25
|
+
$ rails puppet_pdf:install_dependencies
|
26
|
+
|
23
27
|
## Usage
|
24
28
|
|
29
|
+
In any part of the application you can call:
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
PuppetPdf.pdf_from_url(url, options)
|
33
|
+
```
|
34
|
+
|
35
|
+
to generate a pdf from a url. And:
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
PuppetPdf.pdf_from_html(html, options)
|
39
|
+
```
|
25
40
|
|
41
|
+
to generate a pdf from an html.
|
26
42
|
|
27
|
-
## Development
|
28
43
|
|
44
|
+
***For now only the output_path option is available to use.***
|
29
45
|
|
46
|
+
And a pdf of the given url will be generated, and the path to this file is going to be returned.
|
30
47
|
|
31
48
|
## Contributing
|
32
49
|
|
@@ -0,0 +1,50 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const puppeteer = require('puppeteer');
|
4
|
+
const fs = require('fs')
|
5
|
+
const path = require('path')
|
6
|
+
|
7
|
+
function getCurrentTimeFormated() {
|
8
|
+
const date = new Date();
|
9
|
+
const dateFormatted = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`
|
10
|
+
|
11
|
+
return `${dateFormatted}, ${date.toLocaleTimeString('en')}`
|
12
|
+
}
|
13
|
+
|
14
|
+
var access = fs.createWriteStream(path.resolve(__dirname, '/tmp/puppeteer.log'), { 'flags': 'a' });
|
15
|
+
// Redirect stdout/stderr to puppeteer.log file
|
16
|
+
process.stdout.write = process.stderr.write = access.write.bind(access);
|
17
|
+
|
18
|
+
const pdf_from_html = async () => {
|
19
|
+
let browser;
|
20
|
+
try {
|
21
|
+
const browser = await puppeteer.launch({
|
22
|
+
headless: true,
|
23
|
+
pipe: true,
|
24
|
+
args: ['--disable-gpu', '--full-memory-crash-report', '--unlimited-storage',
|
25
|
+
'--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage'],
|
26
|
+
});
|
27
|
+
const page = await browser.newPage();
|
28
|
+
await page.setContent(process.argv[2])
|
29
|
+
await page.waitFor(1000);
|
30
|
+
await page.pdf({
|
31
|
+
path: process.argv[3],
|
32
|
+
format: 'A4',
|
33
|
+
margin: { top: 36, right: 36, bottom: 45, left: 36 },
|
34
|
+
displayHeaderFooter: true,
|
35
|
+
headerTemplate: "<div></div>",
|
36
|
+
footerTemplate: "<div></div>"
|
37
|
+
});
|
38
|
+
} catch (err) {
|
39
|
+
const formatedMessage = `\n ${err.message} at: ${getCurrentTimeFormated()}`;
|
40
|
+
access.write(formatedMessage)
|
41
|
+
} finally {
|
42
|
+
if (browser) {
|
43
|
+
browser.close();
|
44
|
+
}
|
45
|
+
process.exit();
|
46
|
+
}
|
47
|
+
};
|
48
|
+
|
49
|
+
pdf_from_html();
|
50
|
+
|
@@ -15,7 +15,7 @@ var access = fs.createWriteStream(path.resolve(__dirname, '/tmp/puppeteer.log'),
|
|
15
15
|
// Redirect stdout/stderr to puppeteer.log file
|
16
16
|
process.stdout.write = process.stderr.write = access.write.bind(access);
|
17
17
|
|
18
|
-
const
|
18
|
+
const pdf_from_url = async () => {
|
19
19
|
let browser;
|
20
20
|
try {
|
21
21
|
const browser = await puppeteer.launch({
|
@@ -33,11 +33,7 @@ const createPdf = async () => {
|
|
33
33
|
margin: { top: 36, right: 36, bottom: 45, left: 36 },
|
34
34
|
displayHeaderFooter: true,
|
35
35
|
headerTemplate: "<div></div>",
|
36
|
-
footerTemplate:
|
37
|
-
<footer style="width: 100%; font-size: 8px; font-family: Helvetica; color: #DCDCDC">
|
38
|
-
<div style="margin-left: 36px; float: left">Generated at: ${getCurrentTimeFormated()}</div>
|
39
|
-
</footer>
|
40
|
-
`
|
36
|
+
footerTemplate: "<div></div>"
|
41
37
|
});
|
42
38
|
} catch (err) {
|
43
39
|
const formatedMessage = `\n ${err.message} at: ${getCurrentTimeFormated()}`;
|
@@ -50,5 +46,5 @@ const createPdf = async () => {
|
|
50
46
|
}
|
51
47
|
};
|
52
48
|
|
53
|
-
|
49
|
+
pdf_from_url();
|
54
50
|
|
@@ -5,21 +5,22 @@ module PuppetPdf
|
|
5
5
|
class PdfCreator
|
6
6
|
include ::Utils::YarnWrapper
|
7
7
|
|
8
|
-
def initialize(
|
8
|
+
def initialize(task, source, options = {})
|
9
9
|
validate_yarn_installation
|
10
10
|
|
11
|
-
@
|
11
|
+
@task = task
|
12
|
+
@source = source
|
12
13
|
@output_path = options.fetch(:output_path, default_output_path)
|
13
14
|
end
|
14
15
|
|
15
16
|
def call
|
16
|
-
run_yarn(
|
17
|
+
run_yarn(task, source, output_path)
|
17
18
|
output_path
|
18
19
|
end
|
19
20
|
|
20
21
|
private
|
21
22
|
|
22
|
-
attr_reader :
|
23
|
+
attr_reader :task, :source, :output_path
|
23
24
|
|
24
25
|
def default_output_path
|
25
26
|
file = Tempfile.new(["puppet_pdf_#{Time.now.to_i}", '.pdf'])
|
data/lib/puppet_pdf/version.rb
CHANGED
data/lib/puppet_pdf.rb
CHANGED
@@ -4,7 +4,14 @@ require 'puppet_pdf/railtie' if defined?(Rails)
|
|
4
4
|
|
5
5
|
module PuppetPdf
|
6
6
|
def self.pdf_from_url(url, options = {})
|
7
|
-
pdf_creator
|
8
|
-
|
7
|
+
pdf_creator(:pdf_from_url, url, options).call
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.pdf_from_html(html, options = {})
|
11
|
+
pdf_creator(:pdf_from_html, html, options).call
|
12
|
+
end
|
13
|
+
|
14
|
+
private_class_method def self.pdf_creator(task, source, options)
|
15
|
+
::PuppetPdf::PdfCreator.new(task, source, options)
|
9
16
|
end
|
10
17
|
end
|
data/package.json
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet_pdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anderson Fernandes
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-07-
|
11
|
+
date: 2019-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -127,7 +127,8 @@ files:
|
|
127
127
|
- Rakefile
|
128
128
|
- bin/console
|
129
129
|
- bin/setup
|
130
|
-
- javascript/
|
130
|
+
- javascript/pdf_from_html.js
|
131
|
+
- javascript/pdf_from_url.js
|
131
132
|
- lib/puppet_pdf.rb
|
132
133
|
- lib/puppet_pdf/pdf_creator.rb
|
133
134
|
- lib/puppet_pdf/railtie.rb
|