Module: Pdfrb::Filter
- Defined in:
- lib/pdfrb/filter.rb,
lib/pdfrb/filter/base.rb,
lib/pdfrb/filter/crypt.rb,
lib/pdfrb/filter/lzw_decode.rb,
lib/pdfrb/filter/flate_decode.rb,
lib/pdfrb/filter/ascii_85_decode.rb,
lib/pdfrb/filter/ascii_hex_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
Classes: ASCII85Decode, ASCIIHexDecode, Crypt, FlateDecode, LZWDecode, RunLengthDecode
Constant Summary
collapse
- DCTDecode =
Class.new do
include Base
register_as "DCTDecode"
class << self
def decoder(bytes, _parms, _document); bytes; end
def encoder(bytes, _parms, _document); bytes; end
end
end.freeze
- JPXDecode =
Class.new do
include Base
register_as "JPXDecode"
class << self
def decoder(bytes, _parms, _document); bytes; end
def encoder(bytes, _parms, _document); bytes; end
end
end.freeze
- JBIG2Decode =
Class.new do
include Base
register_as "JBIG2Decode"
class << self
def decoder(bytes, _parms, _document); bytes; end
def encoder(bytes, _parms, _document); bytes; end
end
end.freeze
- CCITTFaxDecode =
Class.new do
include Base
register_as "CCITTFaxDecode"
class << self
def decoder(bytes, _parms, _document)
raise Pdfrb::FilterError.new(
"CCITTFaxDecode requires an external decoder (Group 3/4 fax)",
filter_name: "CCITTFaxDecode"
)
end
def encoder(_bytes, _parms, _document)
raise Pdfrb::FilterError.new(
"CCITTFaxDecode encoder not implemented",
filter_name: "CCITTFaxDecode"
)
end
end
end.freeze
Class Method Summary
collapse
Class Method Details
.[](name) ⇒ Object
17
18
19
|
# File 'lib/pdfrb/filter.rb', line 17
def [](name)
registry[name.to_s]
end
|
.apply(bytes, filters:, parms:, direction:, document: nil) ⇒ Object
21
22
23
24
25
26
27
28
29
|
# File 'lib/pdfrb/filter.rb', line 21
def apply(bytes, filters:, parms:, direction:, document: nil)
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
|
.register(name, klass) ⇒ Object
13
14
15
|
# File 'lib/pdfrb/filter.rb', line 13
def register(name, klass)
registry[name.to_s] = klass
end
|
.registry ⇒ Object
11
|
# File 'lib/pdfrb/filter.rb', line 11
def registry; @registry ||= {}; end
|