iiif_print 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE.md +18 -0
  3. data/.github/PULL_REQUEST_TEMPLATE.md +16 -0
  4. data/.github/workflows/build-lint-test-action.yaml +4 -5
  5. data/.gitignore +5 -4
  6. data/.rubocop.yml +1 -0
  7. data/.solargraph.yml +19 -0
  8. data/Gemfile.lock +1025 -0
  9. data/README.md +98 -9
  10. data/Rakefile +6 -0
  11. data/app/actors/iiif_print/actors/cleanup_file_sets_actor_decorator.rb +24 -0
  12. data/app/actors/iiif_print/actors/file_set_actor_decorator.rb +30 -28
  13. data/app/controllers/iiif_print/split_pdfs_controller.rb +38 -0
  14. data/app/helpers/iiif_print/iiif_helper_decorator.rb +32 -0
  15. data/app/helpers/iiif_print/iiif_print_helper_behavior.rb +23 -0
  16. data/app/helpers/iiif_print_helper.rb +0 -20
  17. data/app/indexers/concerns/iiif_print/child_indexer.rb +9 -3
  18. data/app/indexers/concerns/iiif_print/file_set_indexer.rb +17 -4
  19. data/app/models/concerns/iiif_print/set_child_flag.rb +9 -0
  20. data/app/models/concerns/iiif_print/solr/document.rb +14 -0
  21. data/app/models/iiif_print/iiif_search_decorator.rb +35 -0
  22. data/app/models/iiif_print/iiif_search_response_decorator.rb +25 -2
  23. data/app/models/iiif_print/pending_relationship.rb +3 -0
  24. data/app/presenters/iiif_print/iiif_manifest_presenter_behavior.rb +120 -0
  25. data/app/presenters/iiif_print/iiif_manifest_presenter_factory_behavior.rb +1 -1
  26. data/app/presenters/iiif_print/work_show_presenter_decorator.rb +19 -10
  27. data/app/search_builders/concerns/iiif_print/allinson_flex_fields.rb +15 -0
  28. data/app/search_builders/concerns/iiif_print/highlight_search_params.rb +2 -1
  29. data/app/services/iiif_print/derivative_rodeo_service.rb +382 -0
  30. data/app/services/iiif_print/manifest_builder_service_behavior.rb +88 -31
  31. data/app/services/iiif_print/pluggable_derivative_service.rb +3 -9
  32. data/app/views/catalog/_index_header_list_default.html.erb +13 -0
  33. data/app/views/hyrax/base/_representative_media.html.erb +4 -3
  34. data/app/views/hyrax/base/iiif_viewers/_universal_viewer.html.erb +1 -1
  35. data/app/views/hyrax/file_sets/_actions.html.erb +2 -1
  36. data/app/views/hyrax/file_sets/_show_actions.html.erb +24 -0
  37. data/config/locales/iiif_print.en.yml +4 -0
  38. data/config/routes.rb +3 -0
  39. data/db/migrate/20231110163052_add_model_details_to_iiif_print_pending_relationships.rb +7 -0
  40. data/docker-compose.yml +2 -2
  41. data/iiif_print.gemspec +10 -9
  42. data/lib/generators/iiif_print/install_generator.rb +21 -1
  43. data/lib/generators/iiif_print/templates/config/initializers/iiif_print.rb +11 -4
  44. data/lib/generators/iiif_print/templates/helpers/iiif_print_helper.rb +5 -0
  45. data/lib/iiif_print/base_derivative_service.rb +2 -1
  46. data/lib/iiif_print/blacklight_iiif_search/annotation_decorator.rb +57 -5
  47. data/lib/iiif_print/catalog_search_builder.rb +5 -1
  48. data/lib/iiif_print/configuration.rb +145 -8
  49. data/lib/iiif_print/data/fileset_helper.rb +1 -1
  50. data/lib/iiif_print/data/work_derivatives.rb +3 -3
  51. data/lib/iiif_print/engine.rb +7 -13
  52. data/lib/iiif_print/errors.rb +18 -0
  53. data/lib/iiif_print/homepage_search_builder.rb +17 -0
  54. data/lib/iiif_print/image_tool.rb +12 -8
  55. data/lib/iiif_print/jobs/child_works_from_pdf_job.rb +74 -33
  56. data/lib/iiif_print/jobs/create_relationships_job.rb +80 -31
  57. data/lib/iiif_print/jobs/request_split_pdf_job.rb +31 -0
  58. data/lib/iiif_print/lineage_service.rb +29 -8
  59. data/lib/iiif_print/metadata.rb +67 -48
  60. data/lib/iiif_print/split_pdfs/base_splitter.rb +142 -0
  61. data/lib/iiif_print/split_pdfs/child_work_creation_from_pdf_service.rb +68 -32
  62. data/lib/iiif_print/split_pdfs/derivative_rodeo_splitter.rb +166 -0
  63. data/lib/iiif_print/split_pdfs/destroy_pdf_child_works_service.rb +33 -0
  64. data/lib/iiif_print/split_pdfs/pages_to_jpgs_splitter.rb +19 -0
  65. data/lib/iiif_print/split_pdfs/pages_to_pngs_splitter.rb +26 -0
  66. data/lib/iiif_print/split_pdfs/pages_to_tiffs_splitter.rb +41 -0
  67. data/lib/iiif_print/split_pdfs/pdf_image_extraction_service.rb +64 -59
  68. data/lib/iiif_print/text_extraction/hocr_reader.rb +7 -3
  69. data/lib/iiif_print/text_extraction/page_ocr.rb +5 -4
  70. data/lib/iiif_print/version.rb +1 -1
  71. data/lib/iiif_print.rb +167 -12
  72. data/lib/samvera/derivatives/configuration.rb +83 -0
  73. data/lib/samvera/derivatives/hyrax.rb +129 -0
  74. data/lib/samvera/derivatives.rb +238 -0
  75. data/spec/factories/newspaper_page_solr_document.rb +9 -1
  76. data/spec/fixtures/authorities/licenses.yml +4 -0
  77. data/spec/fixtures/authorities/rights_statements.yml +4 -0
  78. data/spec/iiif_print/base_derivative_service_spec.rb +20 -3
  79. data/spec/iiif_print/blacklight_iiif_search/annotation_decorator_spec.rb +11 -3
  80. data/spec/iiif_print/catalog_search_builder_spec.rb +1 -1
  81. data/spec/iiif_print/configuration_spec.rb +141 -15
  82. data/spec/iiif_print/jobs/child_works_from_pdf_job_spec.rb +7 -2
  83. data/spec/iiif_print/jobs/create_relationships_job_spec.rb +110 -9
  84. data/spec/iiif_print/lineage_service_spec.rb +1 -1
  85. data/spec/iiif_print/metadata_spec.rb +157 -23
  86. data/spec/iiif_print/split_pdfs/base_splitter_spec.rb +27 -0
  87. data/spec/iiif_print/split_pdfs/derivative_rodeo_splitter_spec.rb +80 -0
  88. data/spec/iiif_print/split_pdfs/destroy_pdf_child_works_service_spec.rb +92 -0
  89. data/spec/iiif_print/split_pdfs/pages_to_jpgs_splitter_spec.rb +22 -0
  90. data/spec/iiif_print/split_pdfs/pages_to_pngs_splitter_spec.rb +18 -0
  91. data/spec/iiif_print/split_pdfs/pages_to_tiffs_splitter_spec.rb +19 -0
  92. data/spec/iiif_print/text_extraction/hocr_reader_spec.rb +2 -2
  93. data/spec/iiif_print_spec.rb +125 -5
  94. data/spec/models/iiif_print/iiif_search_decorator_spec.rb +27 -0
  95. data/spec/presenters/iiif_print/iiif_manifest_presenter_behavior_spec.rb +51 -0
  96. data/spec/samvera/derivatives/configuration_spec.rb +41 -0
  97. data/spec/samvera/derivatives/hyrax_spec.rb +62 -0
  98. data/spec/samvera/derivatives_spec.rb +54 -0
  99. data/spec/services/iiif_print/derivative_rodeo_service_spec.rb +103 -0
  100. data/spec/services/iiif_print/manifest_builder_service_behavior_spec.rb +20 -0
  101. data/spec/services/iiif_print/pluggable_derivative_service_spec.rb +8 -11
  102. data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
  103. data/tasks/copy_authorities_to_test_app.rake +11 -0
  104. data/tasks/iiif_print_dev.rake +4 -4
  105. metadata +123 -35
  106. data/app/helpers/hyrax/iiif_helper.rb +0 -22
  107. data/lib/iiif_print/split_pdfs/pages_into_images_service.rb +0 -130
  108. data/spec/iiif_print/split_pdfs/pages_into_images_service_spec.rb +0 -6
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iiif_print
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Upton
@@ -14,36 +14,42 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2023-03-07 00:00:00.000000000 Z
17
+ date: 2024-05-30 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: blacklight_iiif_search
21
21
  requirement: !ruby/object:Gem::Requirement
22
22
  requirements:
23
- - - "~>"
23
+ - - ">="
24
24
  - !ruby/object:Gem::Version
25
25
  version: '1.0'
26
+ - - "<"
27
+ - !ruby/object:Gem::Version
28
+ version: '3.0'
26
29
  type: :runtime
27
30
  prerelease: false
28
31
  version_requirements: !ruby/object:Gem::Requirement
29
32
  requirements:
30
- - - "~>"
33
+ - - ">="
31
34
  - !ruby/object:Gem::Version
32
35
  version: '1.0'
36
+ - - "<"
37
+ - !ruby/object:Gem::Version
38
+ version: '3.0'
33
39
  - !ruby/object:Gem::Dependency
34
- name: dry-monads
40
+ name: derivative-rodeo
35
41
  requirement: !ruby/object:Gem::Requirement
36
42
  requirements:
37
43
  - - "~>"
38
44
  - !ruby/object:Gem::Version
39
- version: 1.4.0
45
+ version: '0.5'
40
46
  type: :runtime
41
47
  prerelease: false
42
48
  version_requirements: !ruby/object:Gem::Requirement
43
49
  requirements:
44
50
  - - "~>"
45
51
  - !ruby/object:Gem::Version
46
- version: 1.4.0
52
+ version: '0.5'
47
53
  - !ruby/object:Gem::Dependency
48
54
  name: hyrax
49
55
  requirement: !ruby/object:Gem::Requirement
@@ -53,7 +59,7 @@ dependencies:
53
59
  version: '2.5'
54
60
  - - "<"
55
61
  - !ruby/object:Gem::Version
56
- version: '4.0'
62
+ version: '6'
57
63
  type: :runtime
58
64
  prerelease: false
59
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -63,7 +69,7 @@ dependencies:
63
69
  version: '2.5'
64
70
  - - "<"
65
71
  - !ruby/object:Gem::Version
66
- version: '4.0'
72
+ version: '6'
67
73
  - !ruby/object:Gem::Dependency
68
74
  name: nokogiri
69
75
  requirement: !ruby/object:Gem::Requirement
@@ -78,20 +84,6 @@ dependencies:
78
84
  - - ">="
79
85
  - !ruby/object:Gem::Version
80
86
  version: 1.13.2
81
- - !ruby/object:Gem::Dependency
82
- name: rails
83
- requirement: !ruby/object:Gem::Requirement
84
- requirements:
85
- - - "~>"
86
- - !ruby/object:Gem::Version
87
- version: '5.0'
88
- type: :runtime
89
- prerelease: false
90
- version_requirements: !ruby/object:Gem::Requirement
91
- requirements:
92
- - - "~>"
93
- - !ruby/object:Gem::Version
94
- version: '5.0'
95
87
  - !ruby/object:Gem::Dependency
96
88
  name: rdf-vocab
97
89
  requirement: !ruby/object:Gem::Requirement
@@ -216,20 +208,34 @@ dependencies:
216
208
  - - "~>"
217
209
  - !ruby/object:Gem::Version
218
210
  version: '1'
211
+ - !ruby/object:Gem::Dependency
212
+ name: json-canonicalization
213
+ requirement: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - '='
216
+ - !ruby/object:Gem::Version
217
+ version: 0.3.1
218
+ type: :development
219
+ prerelease: false
220
+ version_requirements: !ruby/object:Gem::Requirement
221
+ requirements:
222
+ - - '='
223
+ - !ruby/object:Gem::Version
224
+ version: 0.3.1
219
225
  - !ruby/object:Gem::Dependency
220
226
  name: rspec-rails
221
227
  requirement: !ruby/object:Gem::Requirement
222
228
  requirements:
223
- - - "~>"
229
+ - - ">="
224
230
  - !ruby/object:Gem::Version
225
- version: '3.1'
231
+ version: '0'
226
232
  type: :development
227
233
  prerelease: false
228
234
  version_requirements: !ruby/object:Gem::Requirement
229
235
  requirements:
230
- - - "~>"
236
+ - - ">="
231
237
  - !ruby/object:Gem::Version
232
- version: '3.1'
238
+ version: '0'
233
239
  - !ruby/object:Gem::Dependency
234
240
  name: rspec-activemodel-mocks
235
241
  requirement: !ruby/object:Gem::Requirement
@@ -278,6 +284,34 @@ dependencies:
278
284
  - - "<"
279
285
  - !ruby/object:Gem::Version
280
286
  version: '3.0'
287
+ - !ruby/object:Gem::Dependency
288
+ name: solargraph
289
+ requirement: !ruby/object:Gem::Requirement
290
+ requirements:
291
+ - - ">="
292
+ - !ruby/object:Gem::Version
293
+ version: '0'
294
+ type: :development
295
+ prerelease: false
296
+ version_requirements: !ruby/object:Gem::Requirement
297
+ requirements:
298
+ - - ">="
299
+ - !ruby/object:Gem::Version
300
+ version: '0'
301
+ - !ruby/object:Gem::Dependency
302
+ name: yard
303
+ requirement: !ruby/object:Gem::Requirement
304
+ requirements:
305
+ - - ">="
306
+ - !ruby/object:Gem::Version
307
+ version: '0'
308
+ type: :development
309
+ prerelease: false
310
+ version_requirements: !ruby/object:Gem::Requirement
311
+ requirements:
312
+ - - ">="
313
+ - !ruby/object:Gem::Version
314
+ version: '0'
281
315
  description: Gem/Engine for IIIF Print works in Hyrax-based Samvera Application.
282
316
  email:
283
317
  - sean.upton@utah.edu
@@ -294,20 +328,25 @@ files:
294
328
  - ".coveralls.yml"
295
329
  - ".env"
296
330
  - ".fcrepo_wrapper"
331
+ - ".github/ISSUE_TEMPLATE.md"
332
+ - ".github/PULL_REQUEST_TEMPLATE.md"
297
333
  - ".github/release.yml"
298
334
  - ".github/workflows/branches.yml"
299
335
  - ".github/workflows/build-lint-test-action.yaml"
300
336
  - ".github/workflows/release_labels.yml"
301
337
  - ".gitignore"
302
338
  - ".rubocop.yml"
339
+ - ".solargraph.yml"
303
340
  - ".solr_wrapper"
304
341
  - ".travis.yml"
305
342
  - CONTRIBUTING.md
306
343
  - Dockerfile
307
344
  - Gemfile
345
+ - Gemfile.lock
308
346
  - LICENSE
309
347
  - README.md
310
348
  - Rakefile
349
+ - app/actors/iiif_print/actors/cleanup_file_sets_actor_decorator.rb
311
350
  - app/actors/iiif_print/actors/file_set_actor_decorator.rb
312
351
  - app/assets/config/iiif_print_manifest.js
313
352
  - app/assets/images/iiif_print/.keep
@@ -319,8 +358,10 @@ files:
319
358
  - app/assets/stylesheets/iiif_print/_issues_calendar.scss
320
359
  - app/assets/stylesheets/iiif_print/_newspapers_search.scss
321
360
  - app/assets/stylesheets/iiif_print/_search_results.scss
322
- - app/helpers/hyrax/iiif_helper.rb
361
+ - app/controllers/iiif_print/split_pdfs_controller.rb
323
362
  - app/helpers/iiif_print/application_helper.rb
363
+ - app/helpers/iiif_print/iiif_helper_decorator.rb
364
+ - app/helpers/iiif_print/iiif_print_helper_behavior.rb
324
365
  - app/helpers/iiif_print_helper.rb
325
366
  - app/indexers/concerns/iiif_print/child_indexer.rb
326
367
  - app/indexers/concerns/iiif_print/file_set_indexer.rb
@@ -329,6 +370,7 @@ files:
329
370
  - app/models/concerns/iiif_print/solr/document.rb
330
371
  - app/models/iiif_print/application_record.rb
331
372
  - app/models/iiif_print/derivative_attachment.rb
373
+ - app/models/iiif_print/iiif_search_decorator.rb
332
374
  - app/models/iiif_print/iiif_search_response_decorator.rb
333
375
  - app/models/iiif_print/ingest_file_relation.rb
334
376
  - app/models/iiif_print/pending_relationship.rb
@@ -336,14 +378,18 @@ files:
336
378
  - app/presenters/iiif_print/iiif_manifest_presenter_factory_behavior.rb
337
379
  - app/presenters/iiif_print/work_show_presenter_decorator.rb
338
380
  - app/renderers/hyrax/renderers/faceted_attribute_renderer_decorator.rb
381
+ - app/search_builders/concerns/iiif_print/allinson_flex_fields.rb
339
382
  - app/search_builders/concerns/iiif_print/exclude_models.rb
340
383
  - app/search_builders/concerns/iiif_print/highlight_search_params.rb
384
+ - app/services/iiif_print/derivative_rodeo_service.rb
341
385
  - app/services/iiif_print/manifest_builder_service_behavior.rb
342
386
  - app/services/iiif_print/pluggable_derivative_service.rb
387
+ - app/views/catalog/_index_header_list_default.html.erb
343
388
  - app/views/catalog/_snippets_more.html.erb
344
389
  - app/views/hyrax/base/_representative_media.html.erb
345
390
  - app/views/hyrax/base/iiif_viewers/_universal_viewer.html.erb
346
391
  - app/views/hyrax/file_sets/_actions.html.erb
392
+ - app/views/hyrax/file_sets/_show_actions.html.erb
347
393
  - bin/rails
348
394
  - config/fcrepo_wrapper_test.yml
349
395
  - config/initializers/assets.rb
@@ -354,6 +400,7 @@ files:
354
400
  - config/locales/iiif_print.it.yml
355
401
  - config/locales/iiif_print.pt-BR.yml
356
402
  - config/locales/iiif_print.zh.yml
403
+ - config/routes.rb
357
404
  - config/solr_wrapper_test.yml
358
405
  - config/test-fixture/solr-config/_rest_managed.json
359
406
  - config/test-fixture/solr-config/admin-extra.html
@@ -376,12 +423,14 @@ files:
376
423
  - db/migrate/20181214181358_create_iiif_print_derivative_attachments.rb
377
424
  - db/migrate/20190107165909_create_iiif_print_ingest_file_relations.rb
378
425
  - db/migrate/20230109000000_create_iiif_print_pending_relationships.rb
426
+ - db/migrate/20231110163052_add_model_details_to_iiif_print_pending_relationships.rb
379
427
  - docker-compose.yml
380
428
  - iiif_print.gemspec
381
429
  - lib/generators/iiif_print/assets_generator.rb
382
430
  - lib/generators/iiif_print/catalog_controller_generator.rb
383
431
  - lib/generators/iiif_print/install_generator.rb
384
432
  - lib/generators/iiif_print/templates/config/initializers/iiif_print.rb
433
+ - lib/generators/iiif_print/templates/helpers/iiif_print_helper.rb
385
434
  - lib/generators/iiif_print/templates/iiif_print.scss
386
435
  - lib/iiif_print.rb
387
436
  - lib/iiif_print/base_derivative_service.rb
@@ -396,17 +445,24 @@ files:
396
445
  - lib/iiif_print/data/work_files.rb
397
446
  - lib/iiif_print/engine.rb
398
447
  - lib/iiif_print/errors.rb
448
+ - lib/iiif_print/homepage_search_builder.rb
399
449
  - lib/iiif_print/image_tool.rb
400
450
  - lib/iiif_print/jobs/application_job.rb
401
451
  - lib/iiif_print/jobs/child_works_from_pdf_job.rb
402
452
  - lib/iiif_print/jobs/create_relationships_job.rb
453
+ - lib/iiif_print/jobs/request_split_pdf_job.rb
403
454
  - lib/iiif_print/jp2_derivative_service.rb
404
455
  - lib/iiif_print/jp2_image_metadata.rb
405
456
  - lib/iiif_print/lineage_service.rb
406
457
  - lib/iiif_print/metadata.rb
407
458
  - lib/iiif_print/pdf_derivative_service.rb
459
+ - lib/iiif_print/split_pdfs/base_splitter.rb
408
460
  - lib/iiif_print/split_pdfs/child_work_creation_from_pdf_service.rb
409
- - lib/iiif_print/split_pdfs/pages_into_images_service.rb
461
+ - lib/iiif_print/split_pdfs/derivative_rodeo_splitter.rb
462
+ - lib/iiif_print/split_pdfs/destroy_pdf_child_works_service.rb
463
+ - lib/iiif_print/split_pdfs/pages_to_jpgs_splitter.rb
464
+ - lib/iiif_print/split_pdfs/pages_to_pngs_splitter.rb
465
+ - lib/iiif_print/split_pdfs/pages_to_tiffs_splitter.rb
410
466
  - lib/iiif_print/split_pdfs/pdf_image_extraction_service.rb
411
467
  - lib/iiif_print/text_extraction.rb
412
468
  - lib/iiif_print/text_extraction/alto_reader.rb
@@ -419,6 +475,9 @@ files:
419
475
  - lib/iiif_print/tiff_derivative_service.rb
420
476
  - lib/iiif_print/version.rb
421
477
  - lib/iiif_print/works_controller_behavior.rb
478
+ - lib/samvera/derivatives.rb
479
+ - lib/samvera/derivatives/configuration.rb
480
+ - lib/samvera/derivatives/hyrax.rb
422
481
  - lib/tasks/set_child_works.rake
423
482
  - spec/.keep.txt
424
483
  - spec/factories/ability.rb
@@ -429,6 +488,8 @@ files:
429
488
  - spec/factories/uploaded_pdf_file.rb
430
489
  - spec/factories/uploaded_txt_file.rb
431
490
  - spec/factories/user.rb
491
+ - spec/fixtures/authorities/licenses.yml
492
+ - spec/fixtures/authorities/rights_statements.yml
432
493
  - spec/fixtures/files/4.1.07.jp2
433
494
  - spec/fixtures/files/4.1.07.tiff
434
495
  - spec/fixtures/files/README.md
@@ -469,7 +530,12 @@ files:
469
530
  - spec/iiif_print/jp2_image_metadata_spec.rb
470
531
  - spec/iiif_print/lineage_service_spec.rb
471
532
  - spec/iiif_print/metadata_spec.rb
472
- - spec/iiif_print/split_pdfs/pages_into_images_service_spec.rb
533
+ - spec/iiif_print/split_pdfs/base_splitter_spec.rb
534
+ - spec/iiif_print/split_pdfs/derivative_rodeo_splitter_spec.rb
535
+ - spec/iiif_print/split_pdfs/destroy_pdf_child_works_service_spec.rb
536
+ - spec/iiif_print/split_pdfs/pages_to_jpgs_splitter_spec.rb
537
+ - spec/iiif_print/split_pdfs/pages_to_pngs_splitter_spec.rb
538
+ - spec/iiif_print/split_pdfs/pages_to_tiffs_splitter_spec.rb
473
539
  - spec/iiif_print/text_extraction/alto_reader_spec.rb
474
540
  - spec/iiif_print/text_extraction/hocr_reader_spec.rb
475
541
  - spec/iiif_print/text_extraction/page_ocr_spec.rb
@@ -478,11 +544,17 @@ files:
478
544
  - spec/iiif_print_spec.rb
479
545
  - spec/misc_shared.rb
480
546
  - spec/models/iiif_print/derivative_attachment_spec.rb
547
+ - spec/models/iiif_print/iiif_search_decorator_spec.rb
481
548
  - spec/models/iiif_print/ingest_file_relation_spec.rb
482
549
  - spec/models/solr_document_spec.rb
483
550
  - spec/presenters/iiif_print/iiif_manifest_presenter_behavior_spec.rb
484
551
  - spec/presenters/iiif_print/iiif_manifest_presenter_factory_behavior_spec.rb
552
+ - spec/samvera/derivatives/configuration_spec.rb
553
+ - spec/samvera/derivatives/hyrax_spec.rb
554
+ - spec/samvera/derivatives_spec.rb
555
+ - spec/services/iiif_print/derivative_rodeo_service_spec.rb
485
556
  - spec/services/iiif_print/jp2_derivative_service_spec.rb
557
+ - spec/services/iiif_print/manifest_builder_service_behavior_spec.rb
486
558
  - spec/services/iiif_print/pdf_derivative_service_spec.rb
487
559
  - spec/services/iiif_print/pluggable_derivative_service_spec.rb
488
560
  - spec/services/iiif_print/text_extraction_derivative_service_spec.rb
@@ -498,9 +570,10 @@ files:
498
570
  - spec/test_app_templates/solr.yml
499
571
  - spec/test_app_templates/solr/conf/schema.xml
500
572
  - spec/test_app_templates/solr/conf/solrconfig.xml
573
+ - tasks/copy_authorities_to_test_app.rake
501
574
  - tasks/iiif_print_dev.rake
502
575
  - tmp/.keep
503
- homepage: https://github.com/samvera-labs/iiif_print
576
+ homepage: https://github.com/scientist-softserv/iiif_print/
504
577
  licenses:
505
578
  - Apache-2.0
506
579
  metadata: {}
@@ -519,11 +592,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
519
592
  - !ruby/object:Gem::Version
520
593
  version: '0'
521
594
  requirements: []
522
- rubygems_version: 3.1.6
595
+ rubygems_version: 3.2.3
523
596
  signing_key:
524
597
  specification_version: 4
525
- summary: iiif_print is a Rails Engine gem providing model and administrative functions
526
- to Hyrax-based Samvera applications, for management of (primarily scanned) content.
598
+ summary: IiifPrint is a gem (Rails "engine") for Hyrax-based digital repository applications
599
+ to support displaying parent/child works in the same viewer (Universal Viewer) and
600
+ the ability to search OCR from the parent work to the child work(s). IiifPring was
601
+ originally based off of the samvera-labs Newspaper gem.
527
602
  test_files:
528
603
  - spec/.keep.txt
529
604
  - spec/factories/ability.rb
@@ -534,6 +609,8 @@ test_files:
534
609
  - spec/factories/uploaded_pdf_file.rb
535
610
  - spec/factories/uploaded_txt_file.rb
536
611
  - spec/factories/user.rb
612
+ - spec/fixtures/authorities/licenses.yml
613
+ - spec/fixtures/authorities/rights_statements.yml
537
614
  - spec/fixtures/files/4.1.07.jp2
538
615
  - spec/fixtures/files/4.1.07.tiff
539
616
  - spec/fixtures/files/README.md
@@ -574,7 +651,12 @@ test_files:
574
651
  - spec/iiif_print/jp2_image_metadata_spec.rb
575
652
  - spec/iiif_print/lineage_service_spec.rb
576
653
  - spec/iiif_print/metadata_spec.rb
577
- - spec/iiif_print/split_pdfs/pages_into_images_service_spec.rb
654
+ - spec/iiif_print/split_pdfs/base_splitter_spec.rb
655
+ - spec/iiif_print/split_pdfs/derivative_rodeo_splitter_spec.rb
656
+ - spec/iiif_print/split_pdfs/destroy_pdf_child_works_service_spec.rb
657
+ - spec/iiif_print/split_pdfs/pages_to_jpgs_splitter_spec.rb
658
+ - spec/iiif_print/split_pdfs/pages_to_pngs_splitter_spec.rb
659
+ - spec/iiif_print/split_pdfs/pages_to_tiffs_splitter_spec.rb
578
660
  - spec/iiif_print/text_extraction/alto_reader_spec.rb
579
661
  - spec/iiif_print/text_extraction/hocr_reader_spec.rb
580
662
  - spec/iiif_print/text_extraction/page_ocr_spec.rb
@@ -583,11 +665,17 @@ test_files:
583
665
  - spec/iiif_print_spec.rb
584
666
  - spec/misc_shared.rb
585
667
  - spec/models/iiif_print/derivative_attachment_spec.rb
668
+ - spec/models/iiif_print/iiif_search_decorator_spec.rb
586
669
  - spec/models/iiif_print/ingest_file_relation_spec.rb
587
670
  - spec/models/solr_document_spec.rb
588
671
  - spec/presenters/iiif_print/iiif_manifest_presenter_behavior_spec.rb
589
672
  - spec/presenters/iiif_print/iiif_manifest_presenter_factory_behavior_spec.rb
673
+ - spec/samvera/derivatives/configuration_spec.rb
674
+ - spec/samvera/derivatives/hyrax_spec.rb
675
+ - spec/samvera/derivatives_spec.rb
676
+ - spec/services/iiif_print/derivative_rodeo_service_spec.rb
590
677
  - spec/services/iiif_print/jp2_derivative_service_spec.rb
678
+ - spec/services/iiif_print/manifest_builder_service_behavior_spec.rb
591
679
  - spec/services/iiif_print/pdf_derivative_service_spec.rb
592
680
  - spec/services/iiif_print/pluggable_derivative_service_spec.rb
593
681
  - spec/services/iiif_print/text_extraction_derivative_service_spec.rb
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Hyrax
4
- module IiifHelper
5
- def iiif_viewer_display(work_presenter, locals = {})
6
- render iiif_viewer_display_partial(work_presenter),
7
- locals.merge(presenter: work_presenter)
8
- end
9
-
10
- def iiif_viewer_display_partial(work_presenter)
11
- 'hyrax/base/iiif_viewers/' + work_presenter.iiif_viewer.to_s
12
- end
13
-
14
- def universal_viewer_base_url
15
- "#{request&.base_url}/uv/uv.html"
16
- end
17
-
18
- def universal_viewer_config_url
19
- "#{request&.base_url}/uv/uv-config.json"
20
- end
21
- end
22
- end
@@ -1,130 +0,0 @@
1
- require 'open3'
2
- require 'securerandom'
3
- require 'tmpdir'
4
- require 'iiif_print/split_pdfs/pdf_image_extraction_service'
5
-
6
- module IiifPrint
7
- module SplitPdfs
8
- class PagesIntoImagesService
9
- include Enumerable
10
-
11
- def initialize(path)
12
- @baseid = SecureRandom.uuid
13
- @pdfpath = path
14
- @info = nil
15
- @entries = nil
16
- @tmpdir = nil
17
- @size = nil
18
- @pagecount = nil
19
- @pdftext = nil
20
- @compression = 'lzw'
21
- end
22
-
23
- # return
24
- def pdfinfo
25
- @info = IiifPrint::SplitPdfs::PdfImageExtractionService.new(@pdfpath) if @info.nil?
26
- @info
27
- end
28
-
29
- # TODO: put this test somewhere to prevent invalid pdfs from crashing the image service.
30
- def invalid_pdf?
31
- return true if pdfinfo.color.include?(nil) || pdfinfo.width.nil? || pdfinfo.height.nil? || pdfinfo.entries.length.zero?
32
- false
33
- end
34
-
35
- def tmpdir
36
- @tmpdir = Dir.mktmpdir if @tmpdir.nil?
37
- @tmpdir
38
- end
39
-
40
- def colordevice(channels, bpc)
41
- bits = bpc * channels
42
- # will be either 8bpc/16bpd color TIFF,
43
- # with any CMYK source transformed to 8bpc RBG
44
- bits = 24 unless [24, 48].include? bits
45
- "tiff#{bits}nc"
46
- end
47
-
48
- def gsdevice
49
- color, channels, bpc = pdfinfo.color
50
- device = nil
51
- # CCITT Group 4 Black and White, if applicable:
52
- if color == 'gray' && bpc == 1
53
- device = 'tiffg4'
54
- @compression = 'g4'
55
- end
56
- # 8 Bit Grayscale, if applicable:
57
- device = 'tiffgray' if color == 'gray' && bpc > 1
58
- # otherwise color:
59
- device = colordevice(channels, bpc) if device.nil?
60
- device
61
- end
62
-
63
- # TODO: this method came from newspaper gem but appears to be unused. Is it needed anywhere?
64
- # def gstext
65
- # cmd = "gs -q -dNOPAUSE -dBATCH -sDEVICE=txtwrite " \
66
- # "-sOutputFile=- -f #{@pdfpath}"
67
- # Open3.popen3(cmd) do |_stdin, stdout, _stderr, _wait_thr|
68
- # @pdftext = stdout.read
69
- # end
70
- # @pdftext
71
- # end
72
-
73
- def pagecount
74
- cmd = "pdfinfo #{@pdfpath}"
75
- Open3.popen3(cmd) do |_stdin, stdout, _stderr, _wait_thr|
76
- output = stdout.read.split("\n")
77
- # rubocop:disable Performance/Detect
78
- pages_e = output.select { |e| e.start_with?('Pages:') }[0]
79
- # rubocop:enable Performance/Detect
80
- @pagecount = pages_e.split[-1].to_i
81
- end
82
- @pagecount
83
- end
84
-
85
- def looks_scanned
86
- max_image_px = pdfinfo.width * pdfinfo.height
87
- single_image_per_page = pdfinfo.entries.length == pagecount
88
- # single 10mp+ image per page?
89
- single_image_per_page && max_image_px > 1024 * 1024 * 10
90
- end
91
-
92
- def ppi
93
- unless looks_scanned
94
- # 400 dpi for something that does not look like scanned media:
95
- return 400
96
- end
97
- # For scanned media, defer to detected image PPI:
98
- pdfinfo.ppi
99
- end
100
-
101
- # ghostscript convert all pages to TIFF
102
- def gsconvert
103
- output_base = File.join(tmpdir, "#{@baseid}-page%d.tiff")
104
- cmd = "gs -dNOPAUSE -dBATCH -sDEVICE=#{gsdevice} " \
105
- "-dTextAlphaBits=4 -sCompression=#{@compression} " \
106
- "-sOutputFile=#{output_base} -r#{ppi} -f #{@pdfpath}"
107
- Open3.popen3(cmd) do |_stdin, stdout, _stderr, _wait_thr|
108
- output = stdout.read.split("\n")
109
- # rubocop:disable Performance/Count
110
- @size = output.select { |e| e.start_with?('Page ') }.length
111
- # rubocop:enable Performance/Count
112
- end
113
- # Return an array of expected filenames
114
- (1..@size).map { |n| File.join(tmpdir, "#{@baseid}-page#{n}.tiff") }
115
- end
116
-
117
- # entries for each page
118
- def entries
119
- @entries = gsconvert if @entries.nil?
120
- @entries
121
- end
122
-
123
- def each
124
- entries.each do |e|
125
- yield(e)
126
- end
127
- end
128
- end
129
- end
130
- end
@@ -1,6 +0,0 @@
1
- require 'spec_helper'
2
- require 'misc_shared'
3
-
4
- RSpec.describe IiifPrint::SplitPdfs::PagesIntoImagesService do
5
- # TODO: add specs
6
- end