puppeteer_pdf 0.2.1 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 46115accbd2d7e32c0960fd714c0274e871d9c7588aa6194210aba7935d305c9
4
- data.tar.gz: d208877bf5227965cbe18745d70f76cb6119b9c0892dbf6885268d77855799ff
3
+ metadata.gz: 5183293453139619d79bcb0a6bfd914ffac60a485a5371d40b81fad69246dcbf
4
+ data.tar.gz: 99e8e46ead5874c5796e6ed639623dac613c208e6bec309e159dea52777ad580
5
5
  SHA512:
6
- metadata.gz: 27606c298e9690990218c23c019b9a0307c5ffe9e23072bb91cd26aaaa1dfe7be23aadec7e45c0a1185547def8555fc9f9b5b088c7f106b42702f5979c71231f
7
- data.tar.gz: d6d0012f9fc3ca2735f71f5b2f452dbb0d1bac42c46a55fd0551b33274df50a0a8bb4be9e128135fe0a3739c111585636c1d33d9b6e64395ed5e990a9e7d2664
6
+ metadata.gz: 78bc2ef13b0a2102b043723ff7cf733465bd5162b1768d4bb436913c611ddbfd7589ea915d396973875f12191ad233128044d700cc5ea43fe62e0e7a8f39e82b
7
+ data.tar.gz: fa0f6d2c249e292f5afd923458b28b9b4a8c4b0342f8d5606993c01a2b9cde41c1dfdcee0ca0937360fb1aa3b860d66e2dfe628b659309c8e6c9c62f17d4fab2
data/.idea/workspace.xml CHANGED
@@ -2,8 +2,8 @@
2
2
  <project version="4">
3
3
  <component name="ChangeListManager">
4
4
  <list default="true" id="dba716aa-5da0-418b-bf83-12361d0e012a" name="Default Changelist" comment="">
5
- <change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
6
- <change beforePath="$PROJECT_DIR$/lib/puppeteer_pdf/version.rb" beforeDir="false" afterPath="$PROJECT_DIR$/lib/puppeteer_pdf/version.rb" afterDir="false" />
5
+ <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
6
+ <change beforePath="$PROJECT_DIR$/lib/puppeteer_pdf.rb" beforeDir="false" afterPath="$PROJECT_DIR$/lib/puppeteer_pdf.rb" afterDir="false" />
7
7
  </list>
8
8
  <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
9
9
  <option name="SHOW_DIALOG" value="false" />
@@ -17,8 +17,8 @@
17
17
  <entry file="file://$PROJECT_DIR$/README.md">
18
18
  <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
19
19
  <state split_layout="SPLIT">
20
- <first_editor relative-caret-position="210">
21
- <caret line="14" column="1" selection-start-line="14" selection-start-column="1" selection-end-line="14" selection-end-column="1" />
20
+ <first_editor relative-caret-position="244">
21
+ <caret line="52" column="15" selection-start-line="52" selection-start-column="15" selection-end-line="52" selection-end-column="15" />
22
22
  </first_editor>
23
23
  <second_editor />
24
24
  </state>
@@ -26,10 +26,10 @@
26
26
  </entry>
27
27
  </file>
28
28
  <file pinned="false" current-in-tab="true">
29
- <entry file="file://$PROJECT_DIR$/lib/puppeteer_pdf/version.rb">
29
+ <entry file="file://$PROJECT_DIR$/lib/puppeteer_pdf.rb">
30
30
  <provider selected="true" editor-type-id="text-editor">
31
- <state relative-caret-position="15">
32
- <caret line="1" column="18" selection-start-line="1" selection-start-column="18" selection-end-line="1" selection-end-column="18" />
31
+ <state relative-caret-position="502">
32
+ <caret line="75" column="8" selection-start-line="75" selection-start-column="8" selection-end-line="75" selection-end-column="8" />
33
33
  </state>
34
34
  </provider>
35
35
  </entry>
@@ -42,8 +42,9 @@
42
42
  <component name="IdeDocumentHistory">
43
43
  <option name="CHANGED_PATHS">
44
44
  <list>
45
- <option value="$PROJECT_DIR$/README.md" />
46
45
  <option value="$PROJECT_DIR$/lib/puppeteer_pdf/version.rb" />
46
+ <option value="$PROJECT_DIR$/README.md" />
47
+ <option value="$PROJECT_DIR$/lib/puppeteer_pdf.rb" />
47
48
  </list>
48
49
  </option>
49
50
  </component>
@@ -57,7 +58,6 @@
57
58
  <foldersAlwaysOnTop value="true" />
58
59
  </navigator>
59
60
  <panes>
60
- <pane id="Scope" />
61
61
  <pane id="ProjectPane">
62
62
  <subPane>
63
63
  <expand>
@@ -65,10 +65,16 @@
65
65
  <item name="puppeteer_pdf" type="b2602c69:ProjectViewProjectNode" />
66
66
  <item name="puppeteer_pdf" type="462c0819:PsiDirectoryNode" />
67
67
  </path>
68
+ <path>
69
+ <item name="puppeteer_pdf" type="b2602c69:ProjectViewProjectNode" />
70
+ <item name="puppeteer_pdf" type="462c0819:PsiDirectoryNode" />
71
+ <item name="lib" type="462c0819:PsiDirectoryNode" />
72
+ </path>
68
73
  </expand>
69
74
  <select />
70
75
  </subPane>
71
76
  </pane>
77
+ <pane id="Scope" />
72
78
  </panes>
73
79
  </component>
74
80
  <component name="PropertiesComponent">
@@ -101,18 +107,17 @@
101
107
  <option name="presentableId" value="Default" />
102
108
  <updated>1559202765845</updated>
103
109
  <workItem from="1559202767218" duration="430000" />
104
- <workItem from="1559373173571" duration="942000" />
105
110
  </task>
106
111
  <servers />
107
112
  </component>
108
113
  <component name="TimeTrackingManager">
109
- <option name="totallyTimeSpent" value="1372000" />
114
+ <option name="totallyTimeSpent" value="3285000" />
110
115
  </component>
111
116
  <component name="ToolWindowManager">
112
117
  <frame x="0" y="23" width="1280" height="721" extended-state="0" />
113
118
  <editor active="true" />
114
119
  <layout>
115
- <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.1631664" />
120
+ <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.16558966" />
116
121
  <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
117
122
  <window_info id="Favorites" order="2" side_tool="true" />
118
123
  <window_info anchor="bottom" id="Message" order="0" />
@@ -123,8 +128,8 @@
123
128
  <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
124
129
  <window_info anchor="bottom" id="TODO" order="6" />
125
130
  <window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
126
- <window_info anchor="bottom" id="Database Changes" order="8" />
127
- <window_info anchor="bottom" id="Version Control" order="9" />
131
+ <window_info anchor="bottom" id="Version Control" order="8" />
132
+ <window_info anchor="bottom" id="Database Changes" order="9" />
128
133
  <window_info anchor="bottom" id="Terminal" order="10" />
129
134
  <window_info anchor="bottom" id="Event Log" order="11" side_tool="true" />
130
135
  <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
@@ -137,20 +142,27 @@
137
142
  <option name="version" value="1" />
138
143
  </component>
139
144
  <component name="editorHistoryManager">
145
+ <entry file="file://$PROJECT_DIR$/lib/puppeteer_pdf/version.rb">
146
+ <provider selected="true" editor-type-id="text-editor">
147
+ <state relative-caret-position="15">
148
+ <caret line="1" column="18" selection-start-line="1" selection-start-column="18" selection-end-line="1" selection-end-column="18" />
149
+ </state>
150
+ </provider>
151
+ </entry>
140
152
  <entry file="file://$PROJECT_DIR$/README.md">
141
153
  <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
142
154
  <state split_layout="SPLIT">
143
- <first_editor relative-caret-position="210">
144
- <caret line="14" column="1" selection-start-line="14" selection-start-column="1" selection-end-line="14" selection-end-column="1" />
155
+ <first_editor relative-caret-position="244">
156
+ <caret line="52" column="15" selection-start-line="52" selection-start-column="15" selection-end-line="52" selection-end-column="15" />
145
157
  </first_editor>
146
158
  <second_editor />
147
159
  </state>
148
160
  </provider>
149
161
  </entry>
150
- <entry file="file://$PROJECT_DIR$/lib/puppeteer_pdf/version.rb">
162
+ <entry file="file://$PROJECT_DIR$/lib/puppeteer_pdf.rb">
151
163
  <provider selected="true" editor-type-id="text-editor">
152
- <state relative-caret-position="15">
153
- <caret line="1" column="18" selection-start-line="1" selection-start-column="18" selection-end-line="1" selection-end-column="18" />
164
+ <state relative-caret-position="502">
165
+ <caret line="75" column="8" selection-start-line="75" selection-start-column="8" selection-end-line="75" selection-end-column="8" />
154
166
  </state>
155
167
  </provider>
156
168
  </entry>
data/README.md CHANGED
@@ -2,19 +2,21 @@
2
2
 
3
3
  PuppeteerPdf is using Puppeteer library organized by Google. It's a lightest gem to generate PDF's using
4
4
  URL. PuppeteerPdf is using Headless to open webpage and then simply convert it into PDF.
5
-
6
- ## Installation
5
+ ### Prerequisite
7
6
 
8
7
  Before installing puppeteer_pdf gem system must have puppeteer library installed, it can be installed by
9
8
 
10
9
  ```
11
- npm i puppeteer
12
- # or "yarn add puppeteer"
10
+ - nvm install 8
11
+ - npm i puppeteer # or "yarn add puppeteer"
12
+
13
13
  ```
14
14
 
15
15
  or visit https://developers.google.com/web/tools/puppeteer/
16
+
17
+ ## Installation
16
18
 
17
- Once it's installed sdd this line to your application's Gemfile:
19
+ Once all prerequisites are installed add this line to your application's Gemfile:
18
20
 
19
21
  ```ruby
20
22
  gem 'puppeteer_pdf'
@@ -40,13 +42,17 @@ PuppeteerPdf.generate_pdf(url, output_path) # '/system_path/test.pdf'
40
42
  ## Options
41
43
 
42
44
  ```ruby
43
- opts = {}
44
- opts[:height] = 600
45
- opts[:width] = 1225
46
- opts[:layout] = 'Landscape'
47
- opts[:print_background] = true
48
- opts[:header_text] = 'Company Name'
49
- opts[:footer_text] = 'Any Text Information'
45
+ opts = {
46
+ height: 600,
47
+ width: 1225,
48
+ layout: 'Landscape',
49
+ format: 'A4',
50
+ timeout: 10000,
51
+ header_text: 'Company Name',
52
+ footer_text: 'Any Text Information',
53
+ print_background: true,
54
+ include_page_numbers: true,
55
+ {
50
56
  PuppeteerPdf.generate_pdf(url, output_path, opts)
51
57
 
52
58
  ```
data/lib/puppeteer_pdf.rb CHANGED
@@ -4,21 +4,39 @@ require 'securerandom'
4
4
  module PuppeteerPdf
5
5
  class Error < StandardError; end
6
6
 
7
+ def self.color_coding(text, color = 'red')
8
+ case color
9
+ when 'red'
10
+ puts "\e[31m#{text}\e[0m"
11
+ when 'green'
12
+ "\e[32m#{text}\e[0m"
13
+ when 'blue'
14
+ "\e[34m#{text}\e[0m"
15
+ end
16
+ end
17
+
7
18
  def self.generate_pdf(url, output_file_path ,opts = {})
8
- random_string = generate_random_string
9
- page_height = opts[:height] || 600
10
- page_width = opts[:width] || 1125
11
- page_layout = opts[:layout] || 'Landscape'
12
- print_background = opts[:print_background] || true
13
- header_text = opts[:header_text] || ''
14
- footer_text = opts[:footer_text] || ''
15
-
16
- raise "ERROR : height must be Integer" unless page_height.class == Integer
17
- raise "ERROR : widgth must be Integer" unless page_width.class == Integer
18
- raise "ERROR : layout must be between ['Landscape']" unless ['Landscape'].include?(page_layout)
19
- raise "ERROR : print_background must be Boolean" unless [TrueClass, FalseClass].include?(print_background.class)
20
- raise "ERROR : header_text must be String" unless header_text.class == String
21
- raise "ERROR : footer_text must be String" unless footer_text.class == String
19
+ include_page_numbers = opts[:include_page_numbers] || true
20
+ random_string = generate_random_string
21
+ page_height = opts[:height] || 600
22
+ page_width = opts[:width] || 1125
23
+ page_layout = opts[:layout] || 'Landscape'
24
+ print_background = opts[:print_background] || true
25
+ header_text = opts[:header_text] || ''
26
+ footer_text = opts[:footer_text] || ''
27
+ format = opts[:format] || 'A4'
28
+ timeout = opts[:timeout] || 0
29
+
30
+ color_coding("ERROR : height must be Integer", 'red') unless page_height.class == Integer
31
+ color_coding("ERROR : widgth must be Integer", 'red') unless page_width.class == Integer
32
+ color_coding("ERROR : layout must be between ['Landscape']", 'red') unless ['Landscape'].include?(page_layout)
33
+ color_coding("ERROR : print_background must be Boolean", 'red') unless [TrueClass, FalseClass].include?(print_background.class)
34
+ color_coding("ERROR : header_text must be String", 'red') unless header_text.class == String
35
+ color_coding("ERROR : footer_text must be String", 'red') unless footer_text.class == String
36
+ color_coding("ERROR : timeout must be Integer", 'red') unless timeout.class == Integer
37
+ color_coding("ERROR : format must be between ['A4']", 'red') unless ['A4'].include?(format)
38
+ color_coding("ERROR : include_page_numbers must be Boolean", 'red') unless [TrueClass, FalseClass].include?(include_page_numbers.class)
39
+
22
40
 
23
41
  need_to_display_headers = (header_text == '' && footer_text == '') == true ? false : true
24
42
 
@@ -30,8 +48,8 @@ module PuppeteerPdf
30
48
  const browser = await puppeteer.launch();
31
49
  const page = await browser.newPage();
32
50
  await page.setViewport({ width: #{page_height}, height: #{page_width} })
33
- await page.goto('#{url}', {waitUntil: 'networkidle2'});
34
- await page.pdf({path: '#{output_file_path}', width: '#{page_width}px', height: '#{page_height}px', layout: '#{page_layout}' , printBackground: #{print_background}, displayHeaderFooter: #{need_to_display_headers},
51
+ await page.goto('#{url}', {waitUntil: 'networkidle2', timeout: #{timeout}});
52
+ await page.pdf({path: '#{output_file_path}', format: '#{format}', width: '#{page_width}px', height: '#{page_height}px', layout: '#{page_layout}' , printBackground: #{print_background}, displayHeaderFooter: #{need_to_display_headers},
35
53
  margin: {top: 10, bottom: 40}, headerTemplate: '<span>#{header_text}</span>' });
36
54
  await browser.close();
37
55
  })();"
@@ -40,13 +58,20 @@ module PuppeteerPdf
40
58
  file.close
41
59
  system("node #{tmp_js_file_name}") # GENERATE EXPORT
42
60
  system("rm -rf #{tmp_js_file_name}")
43
- puts "############################################################################################################"
44
- puts "PDF IS GENERATED : #{output_file_path}"
45
- puts "############################################################################################################"
61
+ color_coding("############################################################################################################", 'blue')
62
+ color_coding("PDF IS GENERATED : #{output_file_path}", 'green')
63
+ color_coding("############################################################################################################", 'blue')
46
64
  output_file_path
47
65
  end
48
66
 
49
67
  def self.generate_random_string
50
68
  SecureRandom.alphanumeric[0..5]
51
69
  end
70
+
71
+ # TODO : REMOVE THESE LINES MUNEEB WHEN YOU ARE DONE WITH REMEMBERING
72
+ # 1 - MAKE CHANGES
73
+ # 2 - TEST CHANGES
74
+ # 3 - TEST THEM AGAIN
75
+ # 4 - PUSH THE CODE TO GIT
76
+ # 5 - gem build puppeteer_pdf.gemspec
52
77
  end
@@ -1,3 +1,3 @@
1
1
  module PuppeteerPdf
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppeteer_pdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Muneeb
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-01 00:00:00.000000000 Z
11
+ date: 2019-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler