bidi2pdf-rails 0.0.1.pre.alpha → 0.1.0
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 +55 -9
- data/.rubocop.yml +14 -0
- data/CHANGELOG.md +33 -0
- data/README.md +117 -27
- 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 +133 -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 +12 -45
- data/lib/bidi2pdf_rails/services/html_renderer.rb +33 -0
- data/lib/bidi2pdf_rails/services/html_to_pdf_converter.rb +28 -0
- data/lib/bidi2pdf_rails/services/pdf_browser_session.rb +39 -0
- data/lib/bidi2pdf_rails/services/pdf_renderer.rb +82 -0
- data/lib/bidi2pdf_rails/services/url_to_pdf_converter.rb +82 -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/dummy/app/controllers/reports_controller.rb +37 -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/secure/show.html.erb +10 -0
- data/spec/dummy/config/environments/production.rb +1 -1
- data/spec/dummy/config/initializers/bidi2pdf_rails.rb +68 -54
- data/spec/dummy/config/initializers/cors.rb +1 -1
- data/spec/dummy/config/routes.rb +10 -0
- data/spec/dummy/log/development.log +16567 -156
- data/spec/dummy/log/test.log +53046 -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 +28 -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 +95 -25
- 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.0
|
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-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -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,19 +178,31 @@ 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_renderer.rb
|
199
|
+
- lib/bidi2pdf_rails/services/url_to_pdf_converter.rb
|
144
200
|
- lib/bidi2pdf_rails/version.rb
|
145
201
|
- lib/generators/bidi2pdf_rails/USAGE
|
146
202
|
- lib/generators/bidi2pdf_rails/initializer_generator.rb
|
147
203
|
- lib/generators/bidi2pdf_rails/templates/bidi2pdf_rails.rb.tt
|
148
|
-
- spec/
|
204
|
+
- spec/acceptance/user_can_download_report_pdf_spec.rb
|
205
|
+
- spec/acceptance/user_can_generate_pdf_from_protected_remote_url_spec.rb
|
149
206
|
- spec/dummy/Rakefile
|
150
207
|
- spec/dummy/app/assets/images/img.jpg
|
151
208
|
- spec/dummy/app/assets/javascripts/paged.polyfill-4.3.js
|
@@ -155,13 +212,16 @@ files:
|
|
155
212
|
- spec/dummy/app/assets/stylesheets/screen.css
|
156
213
|
- spec/dummy/app/controllers/application_controller.rb
|
157
214
|
- spec/dummy/app/controllers/reports_controller.rb
|
215
|
+
- spec/dummy/app/controllers/secure_controller.rb
|
158
216
|
- spec/dummy/app/helpers/application_helper.rb
|
159
217
|
- spec/dummy/app/helpers/reports_helper.rb
|
160
218
|
- spec/dummy/app/views/layouts/application.html.erb
|
161
219
|
- spec/dummy/app/views/layouts/pdf.html.erb
|
220
|
+
- spec/dummy/app/views/layouts/simple.html.erb
|
162
221
|
- spec/dummy/app/views/pwa/manifest.json.erb
|
163
222
|
- spec/dummy/app/views/pwa/service-worker.js
|
164
223
|
- spec/dummy/app/views/reports/show.html.erb
|
224
|
+
- spec/dummy/app/views/secure/show.html.erb
|
165
225
|
- spec/dummy/bin/rails
|
166
226
|
- spec/dummy/bin/rake
|
167
227
|
- spec/dummy/bin/setup
|
@@ -182,34 +242,38 @@ files:
|
|
182
242
|
- spec/dummy/config/puma.rb
|
183
243
|
- spec/dummy/config/routes.rb
|
184
244
|
- spec/dummy/log/development.log
|
245
|
+
- spec/dummy/log/test.log
|
185
246
|
- spec/dummy/public/404.html
|
186
247
|
- spec/dummy/public/406-unsupported-browser.html
|
187
248
|
- spec/dummy/public/422.html
|
188
249
|
- spec/dummy/public/500.html
|
189
250
|
- spec/dummy/public/icon.png
|
190
251
|
- 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
252
|
- spec/dummy/storage/test.sqlite3
|
195
253
|
- spec/dummy/tmp/README.md
|
196
254
|
- spec/dummy/tmp/local_secret.txt
|
197
255
|
- spec/dummy/tmp/pids/server.pid
|
198
256
|
- spec/dummy/tmp/restart.txt
|
199
|
-
- spec/
|
200
|
-
- spec/generator/initializer_generator_spec.rb
|
257
|
+
- spec/integration/generators/bidi2pdf_rails/initializer_generator_spec.rb
|
201
258
|
- spec/rails_helper.rb
|
202
|
-
- spec/requests/reports_spec.rb
|
203
259
|
- spec/spec_helper.rb
|
260
|
+
- spec/support/default_dirs_helper.rb
|
261
|
+
- spec/support/pdf_helper.rb
|
262
|
+
- spec/support/render_setting_helpers.rb
|
263
|
+
- spec/support/request_server_bootstrap.rb
|
264
|
+
- spec/unit/bidi2pdf_rails/bidi2pdf_rails_spec.rb
|
265
|
+
- spec/unit/bidi2pdf_rails/configurable/base_nested_config_spec.rb
|
204
266
|
- tasks/bidi2pdf_rails_tasks.rake
|
205
|
-
|
267
|
+
- tasks/changelog.rake
|
268
|
+
- tasks/coverage.rake
|
269
|
+
homepage: https://github.com/dieter-medium/bidi2pdf-rails
|
206
270
|
licenses:
|
207
271
|
- MIT
|
208
272
|
metadata:
|
209
273
|
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
|
274
|
+
homepage_uri: https://github.com/dieter-medium/bidi2pdf-rails
|
275
|
+
source_code_uri: https://github.com/dieter-medium/bidi2pdf-rails
|
276
|
+
changelog_uri: https://github.com/dieter-medium/bidi2pdf-rails/blob/master/CHANGELOG.md
|
213
277
|
rubygems_mfa_required: 'true'
|
214
278
|
post_install_message:
|
215
279
|
rdoc_options: []
|
@@ -229,9 +293,10 @@ requirements: []
|
|
229
293
|
rubygems_version: 3.5.11
|
230
294
|
signing_key:
|
231
295
|
specification_version: 4
|
232
|
-
summary:
|
296
|
+
summary: Rails integration for PDF generation using Chrome/Chromium headless browser
|
233
297
|
test_files:
|
234
|
-
- spec/
|
298
|
+
- spec/acceptance/user_can_download_report_pdf_spec.rb
|
299
|
+
- spec/acceptance/user_can_generate_pdf_from_protected_remote_url_spec.rb
|
235
300
|
- spec/dummy/Rakefile
|
236
301
|
- spec/dummy/app/assets/images/img.jpg
|
237
302
|
- spec/dummy/app/assets/javascripts/paged.polyfill-4.3.js
|
@@ -241,13 +306,16 @@ test_files:
|
|
241
306
|
- spec/dummy/app/assets/stylesheets/screen.css
|
242
307
|
- spec/dummy/app/controllers/application_controller.rb
|
243
308
|
- spec/dummy/app/controllers/reports_controller.rb
|
309
|
+
- spec/dummy/app/controllers/secure_controller.rb
|
244
310
|
- spec/dummy/app/helpers/application_helper.rb
|
245
311
|
- spec/dummy/app/helpers/reports_helper.rb
|
246
312
|
- spec/dummy/app/views/layouts/application.html.erb
|
247
313
|
- spec/dummy/app/views/layouts/pdf.html.erb
|
314
|
+
- spec/dummy/app/views/layouts/simple.html.erb
|
248
315
|
- spec/dummy/app/views/pwa/manifest.json.erb
|
249
316
|
- spec/dummy/app/views/pwa/service-worker.js
|
250
317
|
- spec/dummy/app/views/reports/show.html.erb
|
318
|
+
- spec/dummy/app/views/secure/show.html.erb
|
251
319
|
- spec/dummy/bin/rails
|
252
320
|
- spec/dummy/bin/rake
|
253
321
|
- spec/dummy/bin/setup
|
@@ -268,22 +336,24 @@ test_files:
|
|
268
336
|
- spec/dummy/config/routes.rb
|
269
337
|
- spec/dummy/config.ru
|
270
338
|
- spec/dummy/log/development.log
|
339
|
+
- spec/dummy/log/test.log
|
271
340
|
- spec/dummy/public/404.html
|
272
341
|
- spec/dummy/public/406-unsupported-browser.html
|
273
342
|
- spec/dummy/public/422.html
|
274
343
|
- spec/dummy/public/500.html
|
275
344
|
- spec/dummy/public/icon.png
|
276
345
|
- 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
346
|
- spec/dummy/storage/test.sqlite3
|
281
347
|
- spec/dummy/tmp/README.md
|
282
348
|
- spec/dummy/tmp/local_secret.txt
|
283
349
|
- spec/dummy/tmp/pids/server.pid
|
284
350
|
- spec/dummy/tmp/restart.txt
|
285
|
-
- spec/
|
286
|
-
- spec/generator/initializer_generator_spec.rb
|
351
|
+
- spec/integration/generators/bidi2pdf_rails/initializer_generator_spec.rb
|
287
352
|
- spec/rails_helper.rb
|
288
|
-
- spec/requests/reports_spec.rb
|
289
353
|
- spec/spec_helper.rb
|
354
|
+
- spec/support/default_dirs_helper.rb
|
355
|
+
- spec/support/pdf_helper.rb
|
356
|
+
- spec/support/render_setting_helpers.rb
|
357
|
+
- spec/support/request_server_bootstrap.rb
|
358
|
+
- spec/unit/bidi2pdf_rails/bidi2pdf_rails_spec.rb
|
359
|
+
- 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
|