bidi2pdf-rails 0.0.1.pre.alpha → 0.1.1
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/.idea/bidi2pdf-rails.iml +68 -84
- data/.rubocop.yml +14 -0
- data/CHANGELOG.md +54 -0
- data/README.md +118 -28
- data/Rakefile +2 -0
- data/cliff.toml +126 -0
- data/lib/bidi2pdf_rails/browser_console_log_subscriber.rb +24 -0
- data/lib/bidi2pdf_rails/chromedriver_manager_singleton.rb +11 -11
- data/lib/bidi2pdf_rails/config.rb +137 -0
- data/lib/bidi2pdf_rails/configurable.rb +106 -0
- data/lib/bidi2pdf_rails/main_log_subscriber.rb +33 -0
- data/lib/bidi2pdf_rails/network_log_subscriber.rb +20 -0
- data/lib/bidi2pdf_rails/railtie.rb +13 -45
- data/lib/bidi2pdf_rails/services/html_renderer.rb +33 -0
- data/lib/bidi2pdf_rails/services/html_to_pdf_converter.rb +37 -0
- data/lib/bidi2pdf_rails/services/pdf_browser_session.rb +38 -0
- data/lib/bidi2pdf_rails/services/pdf_injection.rb +31 -0
- data/lib/bidi2pdf_rails/services/pdf_renderer.rb +94 -0
- data/lib/bidi2pdf_rails/services/url_to_pdf_converter.rb +91 -0
- data/lib/bidi2pdf_rails/version.rb +1 -1
- data/lib/bidi2pdf_rails.rb +41 -58
- data/lib/generators/bidi2pdf_rails/USAGE +12 -4
- data/lib/generators/bidi2pdf_rails/initializer_generator.rb +136 -30
- data/lib/generators/bidi2pdf_rails/templates/bidi2pdf_rails.rb.tt +25 -79
- data/spec/acceptance/user_can_download_report_pdf_spec.rb +133 -0
- data/spec/acceptance/user_can_generate_pdf_from_protected_remote_url_spec.rb +173 -0
- data/spec/acceptance/user_can_inject_css_before_pdf_printing_spec.rb +132 -0
- data/spec/acceptance/user_can_inject_js_before_pdf_printing_spec.rb +158 -0
- data/spec/dummy/app/assets/javascripts/simple.js +12 -0
- data/spec/dummy/app/assets/stylesheets/simple.css +3 -0
- data/spec/dummy/app/controllers/reports_controller.rb +47 -0
- data/spec/dummy/app/controllers/secure_controller.rb +52 -0
- data/spec/dummy/app/views/layouts/simple.html.erb +17 -0
- data/spec/dummy/app/views/reports/simple.html.erb +6 -0
- data/spec/dummy/app/views/secure/show.html.erb +10 -0
- data/spec/dummy/config/environments/production.rb +1 -1
- data/spec/dummy/config/initializers/bidi2pdf_rails.rb +72 -54
- data/spec/dummy/config/initializers/cors.rb +1 -1
- data/spec/dummy/config/routes.rb +14 -0
- data/spec/dummy/log/development.log +18331 -158
- data/spec/dummy/log/test.log +87874 -0
- data/spec/dummy/tmp/pids/server.pid +1 -1
- data/spec/integration/generators/bidi2pdf_rails/initializer_generator_spec.rb +64 -0
- data/spec/rails_helper.rb +8 -1
- data/spec/spec_helper.rb +47 -5
- data/spec/support/default_dirs_helper.rb +32 -0
- data/spec/support/pdf_helper.rb +12 -0
- data/spec/support/render_setting_helpers.rb +47 -0
- data/spec/support/request_server_bootstrap.rb +44 -0
- data/spec/{bidi2pdf_rails → unit/bidi2pdf_rails}/bidi2pdf_rails_spec.rb +1 -1
- data/spec/unit/bidi2pdf_rails/configurable/base_nested_config_spec.rb +133 -0
- data/tasks/changelog.rake +29 -0
- data/tasks/coverage.rake +23 -0
- metadata +108 -27
- data/lib/bidi2pdf_rails/log_subscriber.rb +0 -13
- data/spec/dummy/spec/helpers/reports_helper_spec.rb +0 -15
- data/spec/dummy/spec/requests/reports_spec.rb +0 -10
- data/spec/dummy/spec/views/reports/show.html.erb_spec.rb +0 -5
- data/spec/generator/bidie2pdf_rails_initializer_generator_spec.rb +0 -5
- data/spec/generator/initializer_generator_spec.rb +0 -5
- data/spec/requests/reports_spec.rb +0 -17
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bidi2pdf-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dieter S.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-04-
|
11
|
+
date: 2025-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -36,14 +36,14 @@ dependencies:
|
|
36
36
|
requirements:
|
37
37
|
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version:
|
39
|
+
version: 0.1.8
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
44
|
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
46
|
+
version: 0.1.8
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rubocop-rake
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,9 +114,54 @@ dependencies:
|
|
114
114
|
- - ">="
|
115
115
|
- !ruby/object:Gem::Version
|
116
116
|
version: '0'
|
117
|
-
|
118
|
-
|
119
|
-
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: websocket-native
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '1.0'
|
124
|
+
type: :development
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - "~>"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '1.0'
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: pdf-reader
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - "~>"
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '2.14'
|
138
|
+
type: :development
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - "~>"
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '2.14'
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
name: unicode_utils
|
147
|
+
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - "~>"
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '1.4'
|
152
|
+
type: :development
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - "~>"
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '1.4'
|
159
|
+
description: "Bidi2pdf Rails provides a seamless integration between Rails and the
|
160
|
+
Bidi2pdf gem for \ngenerating high-quality PDFs using Chrome/Chromium's headless
|
161
|
+
browser. It supports \nrendering PDFs from controller actions, remote URLs, or HTML
|
162
|
+
strings with configurable \noptions for orientation, margins, page size, and more.
|
163
|
+
The gem handles browser lifecycle \nmanagement and provides a clean API for PDF
|
164
|
+
generation with proper asset handling.\n"
|
120
165
|
email:
|
121
166
|
- 101627195+dieter-medium@users.noreply.github.com
|
122
167
|
executables: []
|
@@ -133,35 +178,56 @@ files:
|
|
133
178
|
- ".rubocop.yml"
|
134
179
|
- ".ruby-gemset"
|
135
180
|
- ".ruby-version"
|
181
|
+
- CHANGELOG.md
|
136
182
|
- MIT-LICENSE
|
137
183
|
- README.md
|
138
184
|
- Rakefile
|
185
|
+
- cliff.toml
|
139
186
|
- lib/bidi2pdf-rails.rb
|
140
187
|
- lib/bidi2pdf_rails.rb
|
188
|
+
- lib/bidi2pdf_rails/browser_console_log_subscriber.rb
|
141
189
|
- lib/bidi2pdf_rails/chromedriver_manager_singleton.rb
|
142
|
-
- lib/bidi2pdf_rails/
|
190
|
+
- lib/bidi2pdf_rails/config.rb
|
191
|
+
- lib/bidi2pdf_rails/configurable.rb
|
192
|
+
- lib/bidi2pdf_rails/main_log_subscriber.rb
|
193
|
+
- lib/bidi2pdf_rails/network_log_subscriber.rb
|
143
194
|
- lib/bidi2pdf_rails/railtie.rb
|
195
|
+
- lib/bidi2pdf_rails/services/html_renderer.rb
|
196
|
+
- lib/bidi2pdf_rails/services/html_to_pdf_converter.rb
|
197
|
+
- lib/bidi2pdf_rails/services/pdf_browser_session.rb
|
198
|
+
- lib/bidi2pdf_rails/services/pdf_injection.rb
|
199
|
+
- lib/bidi2pdf_rails/services/pdf_renderer.rb
|
200
|
+
- lib/bidi2pdf_rails/services/url_to_pdf_converter.rb
|
144
201
|
- lib/bidi2pdf_rails/version.rb
|
145
202
|
- lib/generators/bidi2pdf_rails/USAGE
|
146
203
|
- lib/generators/bidi2pdf_rails/initializer_generator.rb
|
147
204
|
- lib/generators/bidi2pdf_rails/templates/bidi2pdf_rails.rb.tt
|
148
|
-
- spec/
|
205
|
+
- spec/acceptance/user_can_download_report_pdf_spec.rb
|
206
|
+
- spec/acceptance/user_can_generate_pdf_from_protected_remote_url_spec.rb
|
207
|
+
- spec/acceptance/user_can_inject_css_before_pdf_printing_spec.rb
|
208
|
+
- spec/acceptance/user_can_inject_js_before_pdf_printing_spec.rb
|
149
209
|
- spec/dummy/Rakefile
|
150
210
|
- spec/dummy/app/assets/images/img.jpg
|
151
211
|
- spec/dummy/app/assets/javascripts/paged.polyfill-4.3.js
|
212
|
+
- spec/dummy/app/assets/javascripts/simple.js
|
152
213
|
- spec/dummy/app/assets/stylesheets/application.css
|
153
214
|
- spec/dummy/app/assets/stylesheets/pdf.css
|
154
215
|
- spec/dummy/app/assets/stylesheets/reset.css
|
155
216
|
- spec/dummy/app/assets/stylesheets/screen.css
|
217
|
+
- spec/dummy/app/assets/stylesheets/simple.css
|
156
218
|
- spec/dummy/app/controllers/application_controller.rb
|
157
219
|
- spec/dummy/app/controllers/reports_controller.rb
|
220
|
+
- spec/dummy/app/controllers/secure_controller.rb
|
158
221
|
- spec/dummy/app/helpers/application_helper.rb
|
159
222
|
- spec/dummy/app/helpers/reports_helper.rb
|
160
223
|
- spec/dummy/app/views/layouts/application.html.erb
|
161
224
|
- spec/dummy/app/views/layouts/pdf.html.erb
|
225
|
+
- spec/dummy/app/views/layouts/simple.html.erb
|
162
226
|
- spec/dummy/app/views/pwa/manifest.json.erb
|
163
227
|
- spec/dummy/app/views/pwa/service-worker.js
|
164
228
|
- spec/dummy/app/views/reports/show.html.erb
|
229
|
+
- spec/dummy/app/views/reports/simple.html.erb
|
230
|
+
- spec/dummy/app/views/secure/show.html.erb
|
165
231
|
- spec/dummy/bin/rails
|
166
232
|
- spec/dummy/bin/rake
|
167
233
|
- spec/dummy/bin/setup
|
@@ -182,34 +248,38 @@ files:
|
|
182
248
|
- spec/dummy/config/puma.rb
|
183
249
|
- spec/dummy/config/routes.rb
|
184
250
|
- spec/dummy/log/development.log
|
251
|
+
- spec/dummy/log/test.log
|
185
252
|
- spec/dummy/public/404.html
|
186
253
|
- spec/dummy/public/406-unsupported-browser.html
|
187
254
|
- spec/dummy/public/422.html
|
188
255
|
- spec/dummy/public/500.html
|
189
256
|
- spec/dummy/public/icon.png
|
190
257
|
- spec/dummy/public/icon.svg
|
191
|
-
- spec/dummy/spec/helpers/reports_helper_spec.rb
|
192
|
-
- spec/dummy/spec/requests/reports_spec.rb
|
193
|
-
- spec/dummy/spec/views/reports/show.html.erb_spec.rb
|
194
258
|
- spec/dummy/storage/test.sqlite3
|
195
259
|
- spec/dummy/tmp/README.md
|
196
260
|
- spec/dummy/tmp/local_secret.txt
|
197
261
|
- spec/dummy/tmp/pids/server.pid
|
198
262
|
- spec/dummy/tmp/restart.txt
|
199
|
-
- spec/
|
200
|
-
- spec/generator/initializer_generator_spec.rb
|
263
|
+
- spec/integration/generators/bidi2pdf_rails/initializer_generator_spec.rb
|
201
264
|
- spec/rails_helper.rb
|
202
|
-
- spec/requests/reports_spec.rb
|
203
265
|
- spec/spec_helper.rb
|
266
|
+
- spec/support/default_dirs_helper.rb
|
267
|
+
- spec/support/pdf_helper.rb
|
268
|
+
- spec/support/render_setting_helpers.rb
|
269
|
+
- spec/support/request_server_bootstrap.rb
|
270
|
+
- spec/unit/bidi2pdf_rails/bidi2pdf_rails_spec.rb
|
271
|
+
- spec/unit/bidi2pdf_rails/configurable/base_nested_config_spec.rb
|
204
272
|
- tasks/bidi2pdf_rails_tasks.rake
|
205
|
-
|
273
|
+
- tasks/changelog.rake
|
274
|
+
- tasks/coverage.rake
|
275
|
+
homepage: https://github.com/dieter-medium/bidi2pdf-rails
|
206
276
|
licenses:
|
207
277
|
- MIT
|
208
278
|
metadata:
|
209
279
|
allowed_push_host: https://rubygems.org
|
210
|
-
homepage_uri: https://github.com/dieter-medium/bidi2pdf
|
211
|
-
source_code_uri: https://github.com/dieter-medium/bidi2pdf
|
212
|
-
changelog_uri: https://github.com/dieter-medium/bidi2pdf/blob/master/CHANGELOG.md
|
280
|
+
homepage_uri: https://github.com/dieter-medium/bidi2pdf-rails
|
281
|
+
source_code_uri: https://github.com/dieter-medium/bidi2pdf-rails
|
282
|
+
changelog_uri: https://github.com/dieter-medium/bidi2pdf-rails/blob/master/CHANGELOG.md
|
213
283
|
rubygems_mfa_required: 'true'
|
214
284
|
post_install_message:
|
215
285
|
rdoc_options: []
|
@@ -229,25 +299,34 @@ requirements: []
|
|
229
299
|
rubygems_version: 3.5.11
|
230
300
|
signing_key:
|
231
301
|
specification_version: 4
|
232
|
-
summary:
|
302
|
+
summary: Rails integration for PDF generation using Chrome/Chromium headless browser
|
233
303
|
test_files:
|
234
|
-
- spec/
|
304
|
+
- spec/acceptance/user_can_download_report_pdf_spec.rb
|
305
|
+
- spec/acceptance/user_can_generate_pdf_from_protected_remote_url_spec.rb
|
306
|
+
- spec/acceptance/user_can_inject_css_before_pdf_printing_spec.rb
|
307
|
+
- spec/acceptance/user_can_inject_js_before_pdf_printing_spec.rb
|
235
308
|
- spec/dummy/Rakefile
|
236
309
|
- spec/dummy/app/assets/images/img.jpg
|
237
310
|
- spec/dummy/app/assets/javascripts/paged.polyfill-4.3.js
|
311
|
+
- spec/dummy/app/assets/javascripts/simple.js
|
238
312
|
- spec/dummy/app/assets/stylesheets/application.css
|
239
313
|
- spec/dummy/app/assets/stylesheets/pdf.css
|
240
314
|
- spec/dummy/app/assets/stylesheets/reset.css
|
241
315
|
- spec/dummy/app/assets/stylesheets/screen.css
|
316
|
+
- spec/dummy/app/assets/stylesheets/simple.css
|
242
317
|
- spec/dummy/app/controllers/application_controller.rb
|
243
318
|
- spec/dummy/app/controllers/reports_controller.rb
|
319
|
+
- spec/dummy/app/controllers/secure_controller.rb
|
244
320
|
- spec/dummy/app/helpers/application_helper.rb
|
245
321
|
- spec/dummy/app/helpers/reports_helper.rb
|
246
322
|
- spec/dummy/app/views/layouts/application.html.erb
|
247
323
|
- spec/dummy/app/views/layouts/pdf.html.erb
|
324
|
+
- spec/dummy/app/views/layouts/simple.html.erb
|
248
325
|
- spec/dummy/app/views/pwa/manifest.json.erb
|
249
326
|
- spec/dummy/app/views/pwa/service-worker.js
|
250
327
|
- spec/dummy/app/views/reports/show.html.erb
|
328
|
+
- spec/dummy/app/views/reports/simple.html.erb
|
329
|
+
- spec/dummy/app/views/secure/show.html.erb
|
251
330
|
- spec/dummy/bin/rails
|
252
331
|
- spec/dummy/bin/rake
|
253
332
|
- spec/dummy/bin/setup
|
@@ -268,22 +347,24 @@ test_files:
|
|
268
347
|
- spec/dummy/config/routes.rb
|
269
348
|
- spec/dummy/config.ru
|
270
349
|
- spec/dummy/log/development.log
|
350
|
+
- spec/dummy/log/test.log
|
271
351
|
- spec/dummy/public/404.html
|
272
352
|
- spec/dummy/public/406-unsupported-browser.html
|
273
353
|
- spec/dummy/public/422.html
|
274
354
|
- spec/dummy/public/500.html
|
275
355
|
- spec/dummy/public/icon.png
|
276
356
|
- spec/dummy/public/icon.svg
|
277
|
-
- spec/dummy/spec/helpers/reports_helper_spec.rb
|
278
|
-
- spec/dummy/spec/requests/reports_spec.rb
|
279
|
-
- spec/dummy/spec/views/reports/show.html.erb_spec.rb
|
280
357
|
- spec/dummy/storage/test.sqlite3
|
281
358
|
- spec/dummy/tmp/README.md
|
282
359
|
- spec/dummy/tmp/local_secret.txt
|
283
360
|
- spec/dummy/tmp/pids/server.pid
|
284
361
|
- spec/dummy/tmp/restart.txt
|
285
|
-
- spec/
|
286
|
-
- spec/generator/initializer_generator_spec.rb
|
362
|
+
- spec/integration/generators/bidi2pdf_rails/initializer_generator_spec.rb
|
287
363
|
- spec/rails_helper.rb
|
288
|
-
- spec/requests/reports_spec.rb
|
289
364
|
- spec/spec_helper.rb
|
365
|
+
- spec/support/default_dirs_helper.rb
|
366
|
+
- spec/support/pdf_helper.rb
|
367
|
+
- spec/support/render_setting_helpers.rb
|
368
|
+
- spec/support/request_server_bootstrap.rb
|
369
|
+
- spec/unit/bidi2pdf_rails/bidi2pdf_rails_spec.rb
|
370
|
+
- spec/unit/bidi2pdf_rails/configurable/base_nested_config_spec.rb
|
@@ -1,13 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Bidi2pdfRails
|
4
|
-
class LogSubscriber < ActiveSupport::LogSubscriber
|
5
|
-
include Bidi2pdf::Notifications::LoggingSubscriberActions
|
6
|
-
|
7
|
-
def logger
|
8
|
-
Bidi2pdf::VerboseLogger.new(super.tagged("bidi2pdf_rails"), Bidi2pdfRails.verbosity)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
Bidi2pdfRails::LogSubscriber.attach_to "bidi2pdf", inherit_all: true
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
# Specs in this file have access to a helper object that includes
|
4
|
-
# the ReportsHelper. For example:
|
5
|
-
#
|
6
|
-
# describe ReportsHelper do
|
7
|
-
# describe "string concat" do
|
8
|
-
# it "concats two strings with spaces" do
|
9
|
-
# expect(helper.concat_strings("this","that")).to eq("this that")
|
10
|
-
# end
|
11
|
-
# end
|
12
|
-
# end
|
13
|
-
RSpec.describe ReportsHelper, type: :helper do
|
14
|
-
pending "add some examples to (or delete) #{__FILE__}"
|
15
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative '../rails_helper'
|
4
|
-
|
5
|
-
RSpec.describe "Reports", type: :request do
|
6
|
-
describe "GET /reports/:id.pdf" do
|
7
|
-
it "responds with PDF content" do
|
8
|
-
get "/reports/1.pdf"
|
9
|
-
|
10
|
-
expect(response).to have_http_status(:ok)
|
11
|
-
# expect(response.content_type).to eq("application/pdf")
|
12
|
-
|
13
|
-
# Optional: make sure it returns *some* PDF-ish data
|
14
|
-
# expect(response.body[0..3]).to eq("%PDF") # all PDFs start with %PDF
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|