This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
# coding: utf-8
|
||||
# typed: strict
|
||||
# frozen_string_literal: true
|
||||
|
||||
module PDF
|
||||
class Reader
|
||||
|
||||
# mixin for common methods in Page and FormXobjects
|
||||
#
|
||||
class Resources
|
||||
|
||||
def initialize(objects, resources)
|
||||
@objects = objects
|
||||
@resources = resources
|
||||
end
|
||||
|
||||
# Returns a Hash of color spaces that are available to this page
|
||||
#
|
||||
# NOTE: this method de-serialise objects from the underlying PDF
|
||||
# with no caching. You will want to cache the results instead
|
||||
# of calling it over and over.
|
||||
#
|
||||
def color_spaces
|
||||
@objects.deref_hash!(@resources[:ColorSpace]) || {}
|
||||
end
|
||||
|
||||
# Returns a Hash of fonts that are available to this page
|
||||
#
|
||||
# NOTE: this method de-serialise objects from the underlying PDF
|
||||
# with no caching. You will want to cache the results instead
|
||||
# of calling it over and over.
|
||||
#
|
||||
def fonts
|
||||
@objects.deref_hash!(@resources[:Font]) || {}
|
||||
end
|
||||
|
||||
# Returns a Hash of external graphic states that are available to this
|
||||
# page
|
||||
#
|
||||
# NOTE: this method de-serialise objects from the underlying PDF
|
||||
# with no caching. You will want to cache the results instead
|
||||
# of calling it over and over.
|
||||
#
|
||||
def graphic_states
|
||||
@objects.deref_hash!(@resources[:ExtGState]) || {}
|
||||
end
|
||||
|
||||
# Returns a Hash of patterns that are available to this page
|
||||
#
|
||||
# NOTE: this method de-serialise objects from the underlying PDF
|
||||
# with no caching. You will want to cache the results instead
|
||||
# of calling it over and over.
|
||||
#
|
||||
def patterns
|
||||
@objects.deref_hash!(@resources[:Pattern]) || {}
|
||||
end
|
||||
|
||||
# Returns an Array of procedure sets that are available to this page
|
||||
#
|
||||
# NOTE: this method de-serialise objects from the underlying PDF
|
||||
# with no caching. You will want to cache the results instead
|
||||
# of calling it over and over.
|
||||
#
|
||||
def procedure_sets
|
||||
@objects.deref_array!(@resources[:ProcSet]) || []
|
||||
end
|
||||
|
||||
# Returns a Hash of properties sets that are available to this page
|
||||
#
|
||||
# NOTE: this method de-serialise objects from the underlying PDF
|
||||
# with no caching. You will want to cache the results instead
|
||||
# of calling it over and over.
|
||||
#
|
||||
def properties
|
||||
@objects.deref_hash!(@resources[:Properties]) || {}
|
||||
end
|
||||
|
||||
# Returns a Hash of shadings that are available to this page
|
||||
#
|
||||
# NOTE: this method de-serialise objects from the underlying PDF
|
||||
# with no caching. You will want to cache the results instead
|
||||
# of calling it over and over.
|
||||
#
|
||||
def shadings
|
||||
@objects.deref_hash!(@resources[:Shading]) || {}
|
||||
end
|
||||
|
||||
# Returns a Hash of XObjects that are available to this page
|
||||
#
|
||||
# NOTE: this method de-serialise objects from the underlying PDF
|
||||
# with no caching. You will want to cache the results instead
|
||||
# of calling it over and over.
|
||||
#
|
||||
def xobjects
|
||||
dict = @objects.deref_hash!(@resources[:XObject]) || {}
|
||||
TypeCheck.cast_to_pdf_dict_with_stream_values!(dict)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user