protected void writeHexChar(int b) throws IOException, TikaException {
        //if not hexchar, ignore
        //white space is common
        if (TextExtractor.isHexChar(b)) {
            if (hi == -1) {
                hi = 16 * TextExtractor.hexValue(b);
            } else {
                long sum = hi + TextExtractor.hexValue(b);
                if (sum > Integer.MAX_VALUE || sum < 0) {
                    throw new IOException("hex char to byte overflow");
                }

                os.write((int) sum);

                hi = -1;
            }
            return;
        }
        if (b == -1) {
            throw new TikaException("hit end of stream before finishing byte pair");
        }
    }
This class buffers data from embedded objects and pictures.
<p/>
<p/>
<p/>
When the parser has finished an object or picture and called
{@link #handleCompletedObject()}, this will write the object
to the {@link #handler}.
<p/>
<p/>
<p/>
This (in combination with TextExtractor) expects basically a flat parse.  It will pull out
all pict whether they are tied to objdata or are intended
to be standalone.
<p/>
<p/>
This tries to pull metadata around a pict that is encoded
with {sp {sn} {sv}} types of data.  This information
sometimes contains the name and even full file path of the original file.
tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/RTFEmbObjHandler.java