Module: HexaPDF::DictionaryFields::StringConverter
- Defined in:
- lib/hexapdf/dictionary_fields.rb
Overview
Converter module for string fields to automatically convert a string into UTF-8 encoding.
See: PDF2.0 s7.9.2
Class Method Summary collapse
-
.additional_types ⇒ Object
:nodoc:.
-
.convert(str, _type, document) ⇒ Object
Converts the string into UTF-8 encoding, assuming it is a binary string (i.e. one not yet converted).
-
.usable_for?(type) ⇒ Boolean
This converter is usable if the
typeis the String class.
Class Method Details
.additional_types ⇒ Object
:nodoc:
250 251 |
# File 'lib/hexapdf/dictionary_fields.rb', line 250 def self.additional_types end |
.convert(str, _type, document) ⇒ Object
Converts the string into UTF-8 encoding, assuming it is a binary string (i.e. one not yet
converted). Otherwise returns nil.
255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 |
# File 'lib/hexapdf/dictionary_fields.rb', line 255 def self.convert(str, _type, document) return unless str.kind_of?(String) && str.encoding == Encoding::BINARY if str.getbyte(0) == 254 && str.getbyte(1) == 255 str = str[2..-1].force_encoding(Encoding::UTF_16BE) if str.valid_encoding? str.encode!(Encoding::UTF_8) else document.config['document.on_invalid_string'].call(str) end elsif str.getbyte(0) == 239 && str.getbyte(1) == 187 && str.getbyte(2) == 191 str = str[3..-1].force_encoding(Encoding::UTF_8) if str.valid_encoding? str else document.config['document.on_invalid_string'].call(str) end else Utils::PDFDocEncoding.convert_to_utf8(str) end end |
.usable_for?(type) ⇒ Boolean
This converter is usable if the type is the String class.
245 246 247 |
# File 'lib/hexapdf/dictionary_fields.rb', line 245 def self.usable_for?(type) type == String end |