palapala_pdf 0.1.22 → 0.1.24

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: b471a19225248fbf5121f553fa2f1c8c5556f7e961f9a8e96364c7ba7b7511c3
4
- data.tar.gz: 6b340702049072a2ceef8b5f31c6ca326a3522981da740764315611ccdb7182c
3
+ metadata.gz: 98dbd2f9c3cba448be416f158fdc45e28547a3d7d36da1e4c95ccf61017bc1f2
4
+ data.tar.gz: 53713bdb32d30fce06a0df37bc8de265c144d598b64b6fc6efbb56888cca26d3
5
5
  SHA512:
6
- metadata.gz: 5873dac0c8e9609da55a3d370ae3a5963d6817687c7d4df0627c175447ffce7003c9296ea341753130eb67804b8acca1ab19866bed5613537f14ed1272252e99
7
- data.tar.gz: 39b09919a14b86dde183af046dedb62e80c69fb639e77065ed17caae1bdaa4d638ef47f531d6f697c7de410c2b747b0782c795a8b0088e3ef99f1d61f6122788
6
+ metadata.gz: 897efd9ea55452f5590632d8a366bcba61151c738d24da6977b5185666128eb149a6f62dca494105d6275be5c5cf0b07fc52262d060dbb0a515120a5274e2693
7
+ data.tar.gz: 615306781417e54028960cd2db7acdc75ce29bf8785dc0da3498b35d53153e3be2cb501a22e1f729215263634562e77ad20d7dcfa286d478b0770982a810a53b
data/README.md CHANGED
@@ -241,8 +241,6 @@ thread safe in the sense that every web socket get's a new tab in the underlying
241
241
 
242
242
  ## Heroku
243
243
 
244
- TODO
245
-
246
244
  This buildpack installs chrome and chromedriver (chromedriver is actually not needed, but at least the buildpack is maintained)
247
245
 
248
246
  ```sh
Binary file
Binary file
Binary file
@@ -3,6 +3,8 @@ require "net/http"
3
3
  require "websocket/driver"
4
4
  require_relative "./web_socket_client"
5
5
  require_relative "./chrome_process"
6
+ require 'tempfile'
7
+ require 'webrick'
6
8
 
7
9
  module Palapala
8
10
  # Render HTML content to PDF using Chrome in headless mode with minimal dependencies
@@ -99,10 +101,18 @@ module Palapala
99
101
  # @param html [String] The HTML content to convert to PDF
100
102
  # @param params [Hash] Additional parameters to pass to the CDP command
101
103
  def html_to_pdf(html, params: {})
102
- send_command_and_wait_for_event("Page.navigate", params: { url: data_url_for_html(html) },
103
- event_name: "Page.frameStoppedLoading")
104
- result = send_command_and_wait_for_result("Page.printToPDF", params:)
105
- Base64.decode64(result["data"])
104
+ server = start_local_server(html)
105
+ begin
106
+ file = File.basename(server[:file].path)
107
+ url = "http://localhost:#{server[:port]}/#{URI.encode_www_form_component(file)}"
108
+ send_command_and_wait_for_event("Page.navigate", params: { url: url },
109
+ event_name: "Page.frameStoppedLoading")
110
+ result = send_command_and_wait_for_result("Page.printToPDF", params:)
111
+ Base64.decode64(result["data"])
112
+ ensure
113
+ server[:thread].kill # Stop the server after use
114
+ server[:file].unlink # Delete the temporary file
115
+ end
106
116
  end
107
117
 
108
118
  def ping
@@ -145,5 +155,24 @@ module Palapala
145
155
  def data_url_for_html(html)
146
156
  "data:text/html;base64,#{Base64.strict_encode64(html)}"
147
157
  end
158
+
159
+ def start_local_server(html)
160
+ file = Tempfile.new(["html_content", ".html"])
161
+ file.write(html)
162
+ file.close
163
+
164
+ port = find_available_port
165
+ server = WEBrick::HTTPServer.new(Port: port, DocumentRoot: File.dirname(file.path), Logger: WEBrick::Log.new("/dev/null"), AccessLog: [])
166
+ thread = Thread.new { server.start }
167
+
168
+ { server: server, thread: thread, file: file, port: port }
169
+ end
170
+
171
+ def find_available_port
172
+ server = TCPServer.new(0)
173
+ port = server.addr[1]
174
+ server.close
175
+ port
176
+ end
148
177
  end
149
178
  end
@@ -1,3 +1,3 @@
1
1
  module Palapala
2
- VERSION = "0.1.22"
2
+ VERSION = "0.1.24"
3
3
  end
data/paged_css.pdf CHANGED
Binary file
data/palapala_pdf.gemspec CHANGED
@@ -37,6 +37,7 @@ Gem::Specification.new do |spec|
37
37
  spec.add_dependency 'base64', '~> 0'
38
38
  spec.add_dependency 'websocket-driver', '~> 0'
39
39
  spec.add_dependency 'combine_pdf', '~> 1'
40
+ spec.add_dependency 'webrick'
40
41
 
41
42
  # For more information and examples about making a new gem, check out our
42
43
  # guide at: https://bundler.io/guides/creating_gem.html
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: palapala_pdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.22
4
+ version: 0.1.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Koen Handekyn
@@ -51,6 +51,20 @@ dependencies:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
53
  version: '1'
54
+ - !ruby/object:Gem::Dependency
55
+ name: webrick
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
54
68
  description: This gem uses faw web sockets to render HTML into a PDF using Chrom(e)(ium)
55
69
  with minimal dependencies.
56
70
  email: