Module: IiifPrint

Extended by:
ActiveSupport::Autoload
Defined in:
lib/iiif_print/text_extraction/page_ocr.rb,
lib/iiif_print.rb,
lib/iiif_print/data.rb,
lib/iiif_print/engine.rb,
lib/iiif_print/errors.rb,
lib/iiif_print/version.rb,
lib/iiif_print/metadata.rb,
lib/iiif_print/image_tool.rb,
lib/iiif_print/configuration.rb,
lib/iiif_print/data/work_file.rb,
lib/iiif_print/data/work_files.rb,
lib/iiif_print/lineage_service.rb,
lib/iiif_print/text_extraction.rb,
lib/iiif_print/data/path_helper.rb,
lib/iiif_print/jp2_image_metadata.rb,
lib/iiif_print/data/fileset_helper.rb,
lib/iiif_print/jobs/application_job.rb,
lib/iiif_print/data/work_derivatives.rb,
lib/iiif_print/catalog_search_builder.rb,
lib/iiif_print/jp2_derivative_service.rb,
lib/iiif_print/pdf_derivative_service.rb,
lib/iiif_print/base_derivative_service.rb,
lib/iiif_print/tiff_derivative_service.rb,
app/models/iiif_print/application_record.rb,
lib/iiif_print/works_controller_behavior.rb,
app/helpers/iiif_print/application_helper.rb,
app/mailers/iiif_print/application_mailer.rb,
app/models/iiif_print/ingest_file_relation.rb,
app/models/iiif_print/pending_relationship.rb,
lib/generators/iiif_print/assets_generator.rb,
lib/iiif_print/text_extraction/alto_reader.rb,
lib/iiif_print/text_extraction/hocr_reader.rb,
lib/iiif_print/text_extraction/render_alto.rb,
app/models/iiif_print/derivative_attachment.rb,
lib/generators/iiif_print/install_generator.rb,
lib/iiif_print/jobs/child_works_from_pdf_job.rb,
lib/iiif_print/jobs/create_relationships_job.rb,
app/models/concerns/iiif_print/set_child_flag.rb,
lib/iiif_print/text_formats_from_alto_service.rb,
app/indexers/concerns/iiif_print/child_indexer.rb,
app/indexers/concerns/iiif_print/file_set_indexer.rb,
lib/iiif_print/text_extraction_derivative_service.rb,
lib/iiif_print/text_extraction/word_coords_builder.rb,
lib/iiif_print/split_pdfs/pages_into_images_service.rb,
app/models/iiif_print/iiif_search_response_decorator.rb,
app/actors/iiif_print/actors/file_set_actor_decorator.rb,
app/search_builders/concerns/iiif_print/exclude_models.rb,
lib/generators/iiif_print/catalog_controller_generator.rb,
lib/iiif_print/split_pdfs/pdf_image_extraction_service.rb,
app/presenters/iiif_print/work_show_presenter_decorator.rb,
app/services/iiif_print/manifest_builder_service_behavior.rb,
app/presenters/iiif_print/iiif_manifest_presenter_behavior.rb,
lib/iiif_print/blacklight_iiif_search/annotation_decorator.rb,
lib/iiif_print/split_pdfs/child_work_creation_from_pdf_service.rb,
app/search_builders/concerns/iiif_print/highlight_search_params.rb,
app/presenters/iiif_print/iiif_manifest_presenter_factory_behavior.rb

Overview

Encapsulates methods used for pdf splitting into child works

Defined Under Namespace

Modules: Actors, ApplicationHelper, BlacklightIiifSearch, ChildIndexer, Data, ExcludeModels, FileSetIndexer, HighlightSearchParams, IiifManifestPresenterBehavior, IiifManifestPresenterFactoryBehavior, IiifSearchResponseDecorator, Jobs, LineageService, ManifestBuilderServiceBehavior, SetChildFlag, SplitPdfs, TextExtraction, WorkShowPresenterDecorator, WorksControllerBehaviorDecorator Classes: ApplicationMailer, ApplicationRecord, AssetsGenerator, BaseDerivativeService, CatalogControllerGenerator, CatalogSearchBuilder, Configuration, DataError, DerivativeAttachment, Engine, Field, IiifPrintError, ImageTool, IngestFileRelation, InstallGenerator, JP2DerivativeService, JP2ImageMetadata, Metadata, ModelConfig, PDFDerivativeService, PendingRelationship, PluggableDerivativeService, TIFFDerivativeService, TextExtractionDerivativeService, TextFormatsFromALTOService

Constant Summary collapse

DEFAULT_MODEL_CONFIGURATION =
{
  # Split a PDF into individual page images and create a new child work for each image.
  pdf_splitter_job: IiifPrint::Jobs::ChildWorksFromPdfJob,
  pdf_splitter_service: IiifPrint::SplitPdfs::PagesIntoImagesService,
  derivative_service_plugins: [
    IiifPrint::JP2DerivativeService,
    IiifPrint::PDFDerivativeService,
    IiifPrint::TextExtractionDerivativeService,
    IiifPrint::TIFFDerivativeService
  ]
}.freeze
GEM_PATH =

module constants:

Gem::Specification.find_by_name("iiif_print").gem_dir
VERSION =
'1.0.0'.freeze

Class Method Summary collapse

Class Method Details

.config {|IiifPrint::Configuration| ... } ⇒ IiifPrint::Configuration

Exposes the IiifPrint configuration.

Yields:

Returns:

See Also:



36
37
38
39
40
# File 'lib/iiif_print.rb', line 36

def self.config(&block)
  @config ||= IiifPrint::Configuration.new
  yield @config if block
  @config
end

.default_fields_for(_work, fields: config.metadata_fields) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

TODO:

Figure out a way to use a custom label, right now it takes it get rendered from the title.



127
128
129
130
131
132
133
134
135
# File 'lib/iiif_print.rb', line 127

def self.default_fields_for(_work, fields: config.)
  fields.map do |field|
    Field.new(
      name: field.first,
      label: Hyrax::Renderers::AttributeRenderer.new(field, nil).label,
      options: field.last
    )
  end
end

.manifest_metadata_for(work:, version: config.default_iiif_manifest_version, fields: default_fields_for(work), current_ability:, base_url:) ⇒ Array<Hash>

Map the given work’s metadata to the given IIIF version spec’s metadata structure. This is intended to be a drop-in replacement for ‘Hyrax::IiifManifestPresenter#manifest_metadata`.

Parameters:

  • work (Object)
  • version (Integer) (defaults to: config.default_iiif_manifest_version)
  • fields (Array<IiifPrint::Metadata::Field>, Array<#name, #label>) (defaults to: default_fields_for(work))

Returns:

  • (Array<Hash>)

See Also:

  • for expected output
  • Hyrax::IiifManifestPresenter#manifest_metadata


108
109
110
111
112
113
114
115
116
117
118
# File 'lib/iiif_print.rb', line 108

def self.(work:,
                               version: config.default_iiif_manifest_version,
                               fields: default_fields_for(work),
                               current_ability:,
                               base_url:)
  Metadata.(work: work,
                              version: version,
                              fields: fields,
                              current_ability: current_ability,
                              base_url: base_url)
end

.model_configuration(**kwargs) ⇒ Module

TODO:

Because not every job will split PDFs and write to a child model. May want to introduce an alternative splitting method to create new filesets on the existing work instead of new child works.

This method is responsible for assisting in the configuration of a “model”.

Examples:

class Book < ActiveFedora::Base
  include IiifPrint.model_configuration(
    pdf_split_child_model: Page,
    derivative_service_plugins: [
      IiifPrint::TIFFDerivativeService
    ]
  )
end

Parameters:

  • kwargs (Hash<Symbol,Object>)

    the configuration values that overrides the DEFAULT_MODEL_CONFIGURATION.

Returns:

  • (Module)

See Also:



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/iiif_print.rb', line 77

def self.model_configuration(**kwargs)
  Module.new do
    def iiif_print_config?
      true
    end

    # We don't know what you may want in your configuration, but from this gems implementation,
    # we're going to provide the defaults to ensure that it works.
    DEFAULT_MODEL_CONFIGURATION.each_pair do |key, default_value|
      kwargs[key] ||= default_value
    end

    define_method(:iiif_print_config) do
      @iiif_print_config ||= ModelConfig.new(**kwargs)
    end
  end
end