palapala_pdf 0.1.22 → 0.1.23

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: 12be6d622065fdadf2611578279b723532a6ab68b25a2c5b9790692757058c17
4
+ data.tar.gz: 890152aa05e9ea2823e19ed1a2ec27eade4271951bbb6c948f44bc68d074a09f
5
5
  SHA512:
6
- metadata.gz: 5873dac0c8e9609da55a3d370ae3a5963d6817687c7d4df0627c175447ffce7003c9296ea341753130eb67804b8acca1ab19866bed5613537f14ed1272252e99
7
- data.tar.gz: 39b09919a14b86dde183af046dedb62e80c69fb639e77065ed17caae1bdaa4d638ef47f531d6f697c7de410c2b747b0782c795a8b0088e3ef99f1d61f6122788
6
+ metadata.gz: 2d42e1f4c2de6eea69f8b42e57340ff191f9e87f77b42df05c3b4dca4acc21fb6d9847f2aea19085522071f0a5b37c5c62a512f5f4ceaee6e29267dc5638c359
7
+ data.tar.gz: c61845987b64ba8de756e05c81a7451da67e7eb59e50dd39e0a3c2088d201560fcd4f1723d8193c8e367c3578a7cfe2a475171c07209cbfb00dc4200d9313653
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,17 @@ 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
+ url = "http://localhost:#{server[:port]}/"
107
+ send_command_and_wait_for_event("Page.navigate", params: { url: url },
108
+ event_name: "Page.frameStoppedLoading")
109
+ result = send_command_and_wait_for_result("Page.printToPDF", params:)
110
+ Base64.decode64(result["data"])
111
+ ensure
112
+ server[:thread].kill # Stop the server after use
113
+ server[:file].unlink # Delete the temporary file
114
+ end
106
115
  end
107
116
 
108
117
  def ping
@@ -145,5 +154,24 @@ module Palapala
145
154
  def data_url_for_html(html)
146
155
  "data:text/html;base64,#{Base64.strict_encode64(html)}"
147
156
  end
157
+
158
+ def start_local_server(html)
159
+ file = Tempfile.new(["html_content", ".html"])
160
+ file.write(html)
161
+ file.close
162
+
163
+ port = find_available_port
164
+ server = WEBrick::HTTPServer.new(Port: port, DocumentRoot: File.dirname(file.path), Logger: WEBrick::Log.new("/dev/null"), AccessLog: [])
165
+ thread = Thread.new { server.start }
166
+
167
+ { server: server, thread: thread, file: file, port: port }
168
+ end
169
+
170
+ def find_available_port
171
+ server = TCPServer.new(0)
172
+ port = server.addr[1]
173
+ server.close
174
+ port
175
+ end
148
176
  end
149
177
  end
@@ -1,3 +1,3 @@
1
1
  module Palapala
2
- VERSION = "0.1.22"
2
+ VERSION = "0.1.23"
3
3
  end
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.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Koen Handekyn