Module: Pdfrb::Filter
- Defined in:
- lib/pdfrb/filter.rb,
lib/pdfrb/filter/base.rb,
lib/pdfrb/filter/crypt.rb,
lib/pdfrb/filter/dct_decode.rb,
lib/pdfrb/filter/jpx_decode.rb,
lib/pdfrb/filter/lzw_decode.rb,
lib/pdfrb/filter/flate_decode.rb,
lib/pdfrb/filter/jbig2_decode.rb,
lib/pdfrb/filter/brotli_decode.rb,
lib/pdfrb/filter/png_predictor.rb,
lib/pdfrb/filter/ascii_85_decode.rb,
lib/pdfrb/filter/ascii_hex_decode.rb,
lib/pdfrb/filter/ccitt_fax_decode.rb,
lib/pdfrb/filter/run_length_decode.rb,
lib/pdfrb/filter/passthrough_filters.rb
Overview
Stream filter pipeline (s7.4). Each filter is a stateless class
with decoder(bytes, parms, document) and encoder(bytes, parms, document) class methods, registered via register_as.
Defined Under Namespace
Modules: Base, BrotliDecode, CCITTFaxDecode, DCTDecode, JBIG2Decode, JPXDecode, PNGPredictor
Classes: ASCII85Decode, ASCIIHexDecode, Crypt, FlateDecode, LZWDecode, RunLengthDecode
Class Method Summary
collapse
Class Method Details
.[](name) ⇒ Object
28
29
30
|
# File 'lib/pdfrb/filter.rb', line 28
def [](name)
registry[name.to_s]
end
|
.apply(bytes, filters:, parms:, direction:, document: nil) ⇒ Object
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/pdfrb/filter.rb', line 45
def apply(bytes, filters:, parms:, direction:, document: nil)
eager_load!
return bytes if filters.empty?
case direction
when :decode then decode_chain(bytes, filters, parms, document)
when :encode then encode_chain(bytes, filters, parms, document)
else raise ArgumentError, "unknown direction #{direction.inspect}"
end
end
|
.eager_load! ⇒ Object
Force-load all filter implementations so register_as calls
fire and populate the registry. Idempotent.
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/pdfrb/filter.rb', line 34
def eager_load!
return if @eager_loaded
constants.each do |c|
const_get(c)
rescue NameError
end
@eager_loaded = true
end
|
.register(name, klass) ⇒ Object
24
25
26
|
# File 'lib/pdfrb/filter.rb', line 24
def register(name, klass)
registry[name.to_s] = klass
end
|
.registry ⇒ Object
22
|
# File 'lib/pdfrb/filter.rb', line 22
def registry; @registry ||= {}; end
|