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 +4 -4
- data/README.md +0 -2
- data/examples/headers_and_footers.pdf +0 -0
- data/examples/js_based_rendering.pdf +0 -0
- data/examples/paged_css.pdf +0 -0
- data/lib/palapala/renderer.rb +32 -4
- data/lib/palapala/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 12be6d622065fdadf2611578279b723532a6ab68b25a2c5b9790692757058c17
|
4
|
+
data.tar.gz: 890152aa05e9ea2823e19ed1a2ec27eade4271951bbb6c948f44bc68d074a09f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/examples/paged_css.pdf
CHANGED
Binary file
|
data/lib/palapala/renderer.rb
CHANGED
@@ -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
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
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
|
data/lib/palapala/version.rb
CHANGED