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 +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 +33 -4
- data/lib/palapala/version.rb +1 -1
- data/paged_css.pdf +0 -0
- data/palapala_pdf.gemspec +1 -0
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98dbd2f9c3cba448be416f158fdc45e28547a3d7d36da1e4c95ccf61017bc1f2
|
4
|
+
data.tar.gz: 53713bdb32d30fce06a0df37bc8de265c144d598b64b6fc6efbb56888cca26d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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,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
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
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
|
data/lib/palapala/version.rb
CHANGED
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.
|
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:
|