puppet_pdf 0.1.1 → 0.1.2

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
2
  SHA256:
3
- metadata.gz: 9f0393a8dd520b7575a1f1c89720a8ada3b96bdc29d8531f307c315189f6d366
4
- data.tar.gz: 8c2d25d907a7e91e17b3022b421385b94a0cfd2cc96f8042af065f27cad10c3b
3
+ metadata.gz: d554307f30fb1566b92ab4b53d7a498db6ed05b4a4518cb3c22ad052edd92c2c
4
+ data.tar.gz: bdab5ae4f0937b991daf22a0d9833e816eeff762b2309109a7f370f02a38fdf0
5
5
  SHA512:
6
- metadata.gz: 5613503489281a6b3049c9bd8605f2f8931d3e3e34f03013e497fb35d343d4607f6a5d1474871653267f33344fcb1115817a2384ace0cfe2942edceb5b4a22f5
7
- data.tar.gz: a5e30a5ac75a43cb58f9ce2015cf2b280eda247df86ff80006792df7f0d5119aa34f6b914cfd0572634d58024be938d0e30c7daff5a9bd0650f7d3f4f07f427d
6
+ metadata.gz: 5e0fa0d135d947c2ab9956976f98d1fb0571f85cab2388d75c7b61b9c1e3b8a957aa4a440a7bc0717bc4c2576c0d4ac666bdaf7c884bfc674f53d1d7c20088f6
7
+ data.tar.gz: 0573cfc7f2004a5f2a61dcb1d8483494f738c475851b7daca4cf1f2481ecd3a3ebc71cf3f25e3ab4efd5fd79aafb76150e0ce72608ebcd364419c7453711d0ee
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- puppet_pdf (0.1.1)
4
+ puppet_pdf (0.1.3)
5
5
  activerecord
6
6
  railties
7
7
 
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
- [![Build Status](https://travis-ci.org/andersonfernandes/puppet_pdf.svg?branch=master)](https://travis-ci.org/andersonfernandes/puppet_pdf)
1
+ [![Gem Version](https://badge.fury.io/rb/puppet_pdf.svg)](https://badge.fury.io/rb/puppet_pdf) [![Build Status](https://travis-ci.org/andersonfernandes/puppet_pdf.svg?branch=master)](https://travis-ci.org/andersonfernandes/puppet_pdf) [![Maintainability](https://api.codeclimate.com/v1/badges/d7347b2b2ab3ffdc4668/maintainability)](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 createPdf = async () => {
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
- createPdf();
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(url, options = {})
8
+ def initialize(task, source, options = {})
9
9
  validate_yarn_installation
10
10
 
11
- @url = url
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(:createPDF, url, output_path)
17
+ run_yarn(task, source, output_path)
17
18
  output_path
18
19
  end
19
20
 
20
21
  private
21
22
 
22
- attr_reader :url, :output_path
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'])
@@ -1,3 +1,3 @@
1
1
  module PuppetPdf
2
- VERSION = '0.1.1'.freeze
2
+ VERSION = '0.1.2'.freeze
3
3
  end
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 = ::PuppetPdf::PdfCreator.new(url, options)
8
- pdf_creator.call
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
@@ -9,6 +9,7 @@
9
9
  "puppeteer": "^1.12.2"
10
10
  },
11
11
  "scripts": {
12
- "createPDF": "node javascript/pdf.js"
12
+ "pdf_from_url": "node javascript/pdf_from_url.js",
13
+ "pdf_from_html": "node javascript/pdf_from_html.js"
13
14
  }
14
15
  }
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.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-10 00:00:00.000000000 Z
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/pdf.js
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