You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ta...@apache.org on 2021/03/30 13:46:30 UTC

svn commit: r1888216 [22/22] - in /tika/site: publish/ publish/1.10/ publish/1.11/ publish/1.12/ publish/1.13/ publish/1.14/ publish/1.15/ publish/1.16/ publish/1.17/ publish/1.18/ publish/1.19.1/ publish/1.19/ publish/1.20/ publish/1.21/ publish/1.22/...

Modified: tika/site/publish/1.9/examples.html
URL: http://svn.apache.org/viewvc/tika/site/publish/1.9/examples.html?rev=1888216&r1=1888215&r2=1888216&view=diff
==============================================================================
--- tika/site/publish/1.9/examples.html (original)
+++ tika/site/publish/1.9/examples.html Tue Mar 30 13:46:30 2021
@@ -116,23 +116,23 @@
 <p>The <a href="./api/org/apache/tika/Tika.html">Tika facade</a>, provides a number of very quick and easy ways to have your content parsed by Tika, and return the resulting plain text</p><style type="text/css">
    @import url('attached-includes/css/shCoreDefault.css');
 </style>
-<div id="highlighter_202011" class="syntaxhighlighter nogutter  java"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number54 index0 alt1"><code class="java keyword">public</code> <code class="java plain">String parseToStringExample() </code><code class="java keyword">throws</code> <code class="java plain">IOException, SAXException, TikaException {</code></div><div class="line number55 index1 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">Tika tika = </code><code class="java keyword">new</code> <code class="java plain">Tika();</code></div><div class="line number56 index2 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">try</code> <code class="java plain">(InputStream stream = ParsingExample.</code><code class="java keyword">class</code><code class="java plain">.getResourceAsStream(</code><code class="java string">"test.doc"</code><c
 ode class="java plain">)) {</code></div><div class="line number57 index3 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">tika.parseToString(stream);</code></div><div class="line number58 index4 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number59 index5 alt2"><code class="java plain">}</code></div></div></td></tr></tbody></table></div></div>
+<div id="highlighter_608921" class="syntaxhighlighter nogutter  java"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number54 index0 alt1"><code class="java keyword">public</code> <code class="java plain">String parseToStringExample() </code><code class="java keyword">throws</code> <code class="java plain">IOException, SAXException, TikaException {</code></div><div class="line number55 index1 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">Tika tika = </code><code class="java keyword">new</code> <code class="java plain">Tika();</code></div><div class="line number56 index2 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">try</code> <code class="java plain">(InputStream stream = ParsingExample.</code><code class="java keyword">class</code><code class="java plain">.getResourceAsStream(</code><code class="java string">"test.doc"</code><c
 ode class="java plain">)) {</code></div><div class="line number57 index3 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">tika.parseToString(stream);</code></div><div class="line number58 index4 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number59 index5 alt2"><code class="java plain">}</code></div></div></td></tr></tbody></table></div></div>
 <div class="section">
 <h4><a name="Parsing_using_the_Auto-Detect_Parser">Parsing using the Auto-Detect Parser</a></h4>
-<p>For more control, you can call the <a href="./api/org/apache/tika/parser/Parser.html">Tika Parsers</a> directly. Most likely, you'll want to start out using the <a href="./api/org/apache/tika/parser/AutoDetectParser.html">Auto-Detect Parser</a>, which automatically figures out what kind of content you have, then calls the appropriate parser for you.</p><div id="highlighter_561068" class="syntaxhighlighter nogutter  java"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number85 index0 alt2"><code class="java keyword">public</code> <code class="java plain">String parseExample() </code><code class="java keyword">throws</code> <code class="java plain">IOException, SAXException, TikaException {</code></div><div class="line number86 index1 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">AutoDetectParser parser = </code><code class="java keyword">new</code> <code class="java pla
 in">AutoDetectParser();</code></div><div class="line number87 index2 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">BodyContentHandler handler = </code><code class="java keyword">new</code> <code class="java plain">BodyContentHandler();</code></div><div class="line number88 index3 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">Metadata metadata = </code><code class="java keyword">new</code> <code class="java plain">Metadata();</code></div><div class="line number89 index4 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">try</code> <code class="java plain">(InputStream stream = ParsingExample.</code><code class="java keyword">class</code><code class="java plain">.getResourceAsStream(</code><code class="java string">"test.doc"</code><code class="java plain">)) {</code></div><div class="line number90 index5 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nb
 sp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">parser.parse(stream, handler, metadata);</code></div><div class="line number91 index6 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">handler.toString();</code></div><div class="line number92 index7 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number93 index8 alt2"><code class="java plain">}</code></div></div></td></tr></tbody></table></div></div></div>
+<p>For more control, you can call the <a href="./api/org/apache/tika/parser/Parser.html">Tika Parsers</a> directly. Most likely, you'll want to start out using the <a href="./api/org/apache/tika/parser/AutoDetectParser.html">Auto-Detect Parser</a>, which automatically figures out what kind of content you have, then calls the appropriate parser for you.</p><div id="highlighter_543678" class="syntaxhighlighter nogutter  java"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number85 index0 alt2"><code class="java keyword">public</code> <code class="java plain">String parseExample() </code><code class="java keyword">throws</code> <code class="java plain">IOException, SAXException, TikaException {</code></div><div class="line number86 index1 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">AutoDetectParser parser = </code><code class="java keyword">new</code> <code class="java pla
 in">AutoDetectParser();</code></div><div class="line number87 index2 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">BodyContentHandler handler = </code><code class="java keyword">new</code> <code class="java plain">BodyContentHandler();</code></div><div class="line number88 index3 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">Metadata metadata = </code><code class="java keyword">new</code> <code class="java plain">Metadata();</code></div><div class="line number89 index4 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">try</code> <code class="java plain">(InputStream stream = ParsingExample.</code><code class="java keyword">class</code><code class="java plain">.getResourceAsStream(</code><code class="java string">"test.doc"</code><code class="java plain">)) {</code></div><div class="line number90 index5 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nb
 sp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">parser.parse(stream, handler, metadata);</code></div><div class="line number91 index6 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">handler.toString();</code></div><div class="line number92 index7 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number93 index8 alt2"><code class="java plain">}</code></div></div></td></tr></tbody></table></div></div></div>
 <div class="section">
 <h3><a name="Picking_different_output_formats">Picking different output formats</a></h3>
 <p>With Tika, you can get the textual content of your files returned in a number of different formats. These can be plain text, html, xhtml, xhtml of one part of the file etc. This is controlled based on the <a class="externalLink" href="http://docs.oracle.com/javase/7/docs/api/org/xml/sax/ContentHandler.html">ContentHandler</a> you supply to the Parser.</p>
 <div class="section">
 <h4><a name="Parsing_to_Plain_Text">Parsing to Plain Text</a></h4>
-<p>By using the <a href="./api/org/apache/tika/sax/BodyContentHandler.html">BodyContentHandler</a>, you can request that Tika return only the content of the document's body as a plain-text string.</p><div id="highlighter_892626" class="syntaxhighlighter nogutter  java"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number47 index0 alt2"><code class="java keyword">public</code> <code class="java plain">String parseToPlainText() </code><code class="java keyword">throws</code> <code class="java plain">IOException, SAXException, TikaException {</code></div><div class="line number48 index1 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">BodyContentHandler handler = </code><code class="java keyword">new</code> <code class="java plain">BodyContentHandler();</code></div><div class="line number49 index2 alt2">&nbsp;</div><div class="line number50 index3 alt1"><code class="java space
 s">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">AutoDetectParser parser = </code><code class="java keyword">new</code> <code class="java plain">AutoDetectParser();</code></div><div class="line number51 index4 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">Metadata metadata = </code><code class="java keyword">new</code> <code class="java plain">Metadata();</code></div><div class="line number52 index5 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">try</code> <code class="java plain">(InputStream stream = ContentHandlerExample.</code><code class="java keyword">class</code><code class="java plain">.getResourceAsStream(</code><code class="java string">"test.doc"</code><code class="java plain">)) {</code></div><div class="line number53 index6 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">parser.parse(stream, handler, metadata);</c
 ode></div><div class="line number54 index7 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">handler.toString();</code></div><div class="line number55 index8 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number56 index9 alt1"><code class="java plain">}</code></div></div></td></tr></tbody></table></div></div>
+<p>By using the <a href="./api/org/apache/tika/sax/BodyContentHandler.html">BodyContentHandler</a>, you can request that Tika return only the content of the document's body as a plain-text string.</p><div id="highlighter_753049" class="syntaxhighlighter nogutter  java"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number47 index0 alt2"><code class="java keyword">public</code> <code class="java plain">String parseToPlainText() </code><code class="java keyword">throws</code> <code class="java plain">IOException, SAXException, TikaException {</code></div><div class="line number48 index1 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">BodyContentHandler handler = </code><code class="java keyword">new</code> <code class="java plain">BodyContentHandler();</code></div><div class="line number49 index2 alt2">&nbsp;</div><div class="line number50 index3 alt1"><code class="java space
 s">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">AutoDetectParser parser = </code><code class="java keyword">new</code> <code class="java plain">AutoDetectParser();</code></div><div class="line number51 index4 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">Metadata metadata = </code><code class="java keyword">new</code> <code class="java plain">Metadata();</code></div><div class="line number52 index5 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">try</code> <code class="java plain">(InputStream stream = ContentHandlerExample.</code><code class="java keyword">class</code><code class="java plain">.getResourceAsStream(</code><code class="java string">"test.doc"</code><code class="java plain">)) {</code></div><div class="line number53 index6 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">parser.parse(stream, handler, metadata);</c
 ode></div><div class="line number54 index7 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">handler.toString();</code></div><div class="line number55 index8 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number56 index9 alt1"><code class="java plain">}</code></div></div></td></tr></tbody></table></div></div>
 <div class="section">
 <h4><a name="Parsing_to_XHTML">Parsing to XHTML</a></h4>
-<p>By using the <a href="./api/org/apache/tika/sax/ToXMLContentHandler.html">ToXMLContentHandler</a>, you can get the XHTML content of the whole document as a string.</p><div id="highlighter_877649" class="syntaxhighlighter nogutter  java"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number61 index0 alt2"><code class="java keyword">public</code> <code class="java plain">String parseToHTML() </code><code class="java keyword">throws</code> <code class="java plain">IOException, SAXException, TikaException {</code></div><div class="line number62 index1 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">ContentHandler handler = </code><code class="java keyword">new</code> <code class="java plain">ToXMLContentHandler();</code></div><div class="line number63 index2 alt2">&nbsp;</div><div class="line number64 index3 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><cod
 e class="java plain">AutoDetectParser parser = </code><code class="java keyword">new</code> <code class="java plain">AutoDetectParser();</code></div><div class="line number65 index4 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">Metadata metadata = </code><code class="java keyword">new</code> <code class="java plain">Metadata();</code></div><div class="line number66 index5 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">try</code> <code class="java plain">(InputStream stream = ContentHandlerExample.</code><code class="java keyword">class</code><code class="java plain">.getResourceAsStream(</code><code class="java string">"test.doc"</code><code class="java plain">)) {</code></div><div class="line number67 index6 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">parser.parse(stream, handler, metadata);</code></div><div class="line number68 in
 dex7 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">handler.toString();</code></div><div class="line number69 index8 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number70 index9 alt1"><code class="java plain">}</code></div></div></td></tr></tbody></table></div>
-<p>If you just want the body of the xhtml document, without the header, you can chain together a <a href="./api/org/apache/tika/sax/BodyContentHandler.html">BodyContentHandler</a> and a <a href="./api/org/apache/tika/sax/ToXMLContentHandler.html">ToXMLContentHandler</a> as shown:</p><div id="highlighter_661017" class="syntaxhighlighter nogutter  java"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number76 index0 alt1"><code class="java keyword">public</code> <code class="java plain">String parseBodyToHTML() </code><code class="java keyword">throws</code> <code class="java plain">IOException, SAXException, TikaException {</code></div><div class="line number77 index1 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">ContentHandler handler = </code><code class="java keyword">new</code> <code class="java plain">BodyContentHandler(</code></div><div class="line number78 index2 alt
 1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">new</code> <code class="java plain">ToXMLContentHandler());</code></div><div class="line number79 index3 alt2">&nbsp;</div><div class="line number80 index4 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">AutoDetectParser parser = </code><code class="java keyword">new</code> <code class="java plain">AutoDetectParser();</code></div><div class="line number81 index5 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">Metadata metadata = </code><code class="java keyword">new</code> <code class="java plain">Metadata();</code></div><div class="line number82 index6 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">try</code> <code class="java plain">(InputStream stream = ContentHandlerExample.</code><code class="java keyword">class</code><code 
 class="java plain">.getResourceAsStream(</code><code class="java string">"test.doc"</code><code class="java plain">)) {</code></div><div class="line number83 index7 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">parser.parse(stream, handler, metadata);</code></div><div class="line number84 index8 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">handler.toString();</code></div><div class="line number85 index9 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number86 index10 alt1"><code class="java plain">}</code></div></div></td></tr></tbody></table></div></div>
+<p>By using the <a href="./api/org/apache/tika/sax/ToXMLContentHandler.html">ToXMLContentHandler</a>, you can get the XHTML content of the whole document as a string.</p><div id="highlighter_716297" class="syntaxhighlighter nogutter  java"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number61 index0 alt2"><code class="java keyword">public</code> <code class="java plain">String parseToHTML() </code><code class="java keyword">throws</code> <code class="java plain">IOException, SAXException, TikaException {</code></div><div class="line number62 index1 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">ContentHandler handler = </code><code class="java keyword">new</code> <code class="java plain">ToXMLContentHandler();</code></div><div class="line number63 index2 alt2">&nbsp;</div><div class="line number64 index3 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><cod
 e class="java plain">AutoDetectParser parser = </code><code class="java keyword">new</code> <code class="java plain">AutoDetectParser();</code></div><div class="line number65 index4 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">Metadata metadata = </code><code class="java keyword">new</code> <code class="java plain">Metadata();</code></div><div class="line number66 index5 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">try</code> <code class="java plain">(InputStream stream = ContentHandlerExample.</code><code class="java keyword">class</code><code class="java plain">.getResourceAsStream(</code><code class="java string">"test.doc"</code><code class="java plain">)) {</code></div><div class="line number67 index6 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">parser.parse(stream, handler, metadata);</code></div><div class="line number68 in
 dex7 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">handler.toString();</code></div><div class="line number69 index8 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number70 index9 alt1"><code class="java plain">}</code></div></div></td></tr></tbody></table></div>
+<p>If you just want the body of the xhtml document, without the header, you can chain together a <a href="./api/org/apache/tika/sax/BodyContentHandler.html">BodyContentHandler</a> and a <a href="./api/org/apache/tika/sax/ToXMLContentHandler.html">ToXMLContentHandler</a> as shown:</p><div id="highlighter_263482" class="syntaxhighlighter nogutter  java"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number76 index0 alt1"><code class="java keyword">public</code> <code class="java plain">String parseBodyToHTML() </code><code class="java keyword">throws</code> <code class="java plain">IOException, SAXException, TikaException {</code></div><div class="line number77 index1 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">ContentHandler handler = </code><code class="java keyword">new</code> <code class="java plain">BodyContentHandler(</code></div><div class="line number78 index2 alt
 1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">new</code> <code class="java plain">ToXMLContentHandler());</code></div><div class="line number79 index3 alt2">&nbsp;</div><div class="line number80 index4 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">AutoDetectParser parser = </code><code class="java keyword">new</code> <code class="java plain">AutoDetectParser();</code></div><div class="line number81 index5 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">Metadata metadata = </code><code class="java keyword">new</code> <code class="java plain">Metadata();</code></div><div class="line number82 index6 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">try</code> <code class="java plain">(InputStream stream = ContentHandlerExample.</code><code class="java keyword">class</code><code 
 class="java plain">.getResourceAsStream(</code><code class="java string">"test.doc"</code><code class="java plain">)) {</code></div><div class="line number83 index7 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">parser.parse(stream, handler, metadata);</code></div><div class="line number84 index8 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">handler.toString();</code></div><div class="line number85 index9 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number86 index10 alt1"><code class="java plain">}</code></div></div></td></tr></tbody></table></div></div>
 <div class="section">
 <h4><a name="Fetching_just_certain_bits_of_the_XHTML">Fetching just certain bits of the XHTML</a></h4>
-<p>It possible to execute XPath queries on the parse results, to fetch only certain bits of the XHTML. </p><div id="highlighter_476825" class="syntaxhighlighter nogutter  java"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number92 index0 alt1"><code class="java keyword">public</code> <code class="java plain">String parseOnePartToHTML() </code><code class="java keyword">throws</code> <code class="java plain">IOException, SAXException, TikaException {</code></div><div class="line number93 index1 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java comments">// Only get things under html -> body -> div (class=header)</code></div><div class="line number94 index2 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">XPathParser xhtmlParser = </code><code class="java keyword">new</code> <code class="java plain">XPathParser(</code><code class="java string">
 "xhtml"</code><code class="java plain">, XHTMLContentHandler.XHTML);</code></div><div class="line number95 index3 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">Matcher divContentMatcher = xhtmlParser.parse(</code><code class="java string">"/xhtml:html/xhtml:body/xhtml:div/descendant::node()"</code><code class="java plain">);</code></div><div class="line number96 index4 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">ContentHandler handler = </code><code class="java keyword">new</code> <code class="java plain">MatchingContentHandler(</code></div><div class="line number97 index5 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">new</code> <code class="java plain">ToXMLContentHandler(), divContentMatcher);</code></div><div class="line number98 index6 alt1">&nbsp;</div><div class="line number99 index7 alt2"><code class=
 "java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">AutoDetectParser parser = </code><code class="java keyword">new</code> <code class="java plain">AutoDetectParser();</code></div><div class="line number100 index8 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">Metadata metadata = </code><code class="java keyword">new</code> <code class="java plain">Metadata();</code></div><div class="line number101 index9 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">try</code> <code class="java plain">(InputStream stream = ContentHandlerExample.</code><code class="java keyword">class</code><code class="java plain">.getResourceAsStream(</code><code class="java string">"test2.doc"</code><code class="java plain">)) {</code></div><div class="line number102 index10 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">parser.parse(stream, handle
 r, metadata);</code></div><div class="line number103 index11 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">handler.toString();</code></div><div class="line number104 index12 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number105 index13 alt2"><code class="java plain">}</code></div></div></td></tr></tbody></table></div></div></div>
+<p>It possible to execute XPath queries on the parse results, to fetch only certain bits of the XHTML. </p><div id="highlighter_122475" class="syntaxhighlighter nogutter  java"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number92 index0 alt1"><code class="java keyword">public</code> <code class="java plain">String parseOnePartToHTML() </code><code class="java keyword">throws</code> <code class="java plain">IOException, SAXException, TikaException {</code></div><div class="line number93 index1 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java comments">// Only get things under html -> body -> div (class=header)</code></div><div class="line number94 index2 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">XPathParser xhtmlParser = </code><code class="java keyword">new</code> <code class="java plain">XPathParser(</code><code class="java string">
 "xhtml"</code><code class="java plain">, XHTMLContentHandler.XHTML);</code></div><div class="line number95 index3 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">Matcher divContentMatcher = xhtmlParser.parse(</code><code class="java string">"/xhtml:html/xhtml:body/xhtml:div/descendant::node()"</code><code class="java plain">);</code></div><div class="line number96 index4 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">ContentHandler handler = </code><code class="java keyword">new</code> <code class="java plain">MatchingContentHandler(</code></div><div class="line number97 index5 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">new</code> <code class="java plain">ToXMLContentHandler(), divContentMatcher);</code></div><div class="line number98 index6 alt1">&nbsp;</div><div class="line number99 index7 alt2"><code class=
 "java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">AutoDetectParser parser = </code><code class="java keyword">new</code> <code class="java plain">AutoDetectParser();</code></div><div class="line number100 index8 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">Metadata metadata = </code><code class="java keyword">new</code> <code class="java plain">Metadata();</code></div><div class="line number101 index9 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">try</code> <code class="java plain">(InputStream stream = ContentHandlerExample.</code><code class="java keyword">class</code><code class="java plain">.getResourceAsStream(</code><code class="java string">"test2.doc"</code><code class="java plain">)) {</code></div><div class="line number102 index10 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">parser.parse(stream, handle
 r, metadata);</code></div><div class="line number103 index11 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">handler.toString();</code></div><div class="line number104 index12 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number105 index13 alt2"><code class="java plain">}</code></div></div></td></tr></tbody></table></div></div></div>
 <div class="section">
 <h3><a name="Custom_Content_Handlers">Custom Content Handlers</a></h3>
 <p>The textual output of parsing a file with Tika is returned via the SAX <a class="externalLink" href="http://docs.oracle.com/javase/7/docs/api/org/xml/sax/ContentHandler.html">ContentHandler</a> you pass to the parse method. It is possible to customise your parsing by supplying your own ContentHandler which does special things.</p>
@@ -141,16 +141,16 @@
 <p>By using the <a href="./api/org/apache/tika/sax/PhoneExtractingContentHandler.html">PhoneExtractingContentHandler</a>, you can have any phone numbers found in the textual content of the document extracted and placed into the Metadata object for you.</p></div>
 <div class="section">
 <h4><a name="Streaming_the_plain_text_in_chunks">Streaming the plain text in chunks</a></h4>
-<p>Sometimes, you want to chunk the resulting text up, perhaps to output as you go minimising memory use, perhaps to output to HDFS files, or any other reason! With a small custom content handler, you can do that.</p><div id="highlighter_855524" class="syntaxhighlighter nogutter  java"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number113 index0 alt2"><code class="java keyword">public</code> <code class="java plain">List&lt;String> parseToPlainTextChunks() </code><code class="java keyword">throws</code> <code class="java plain">IOException, SAXException, TikaException {</code></div><div class="line number114 index1 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">final</code> <code class="java plain">List&lt;String> chunks = </code><code class="java keyword">new</code> <code class="java plain">ArrayList&lt;>();</code></div><div class="line number115 index2 alt2"><code c
 lass="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">chunks.add(</code><code class="java string">""</code><code class="java plain">);</code></div><div class="line number116 index3 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">ContentHandlerDecorator handler = </code><code class="java keyword">new</code> <code class="java plain">ContentHandlerDecorator() {</code></div><div class="line number117 index4 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java color1">@Override</code></div><div class="line number118 index5 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">public</code> <code class="java keyword">void</code> <code class="java plain">characters(</code><code class="java keyword">char</code><code class="java plain">[] ch, </code><code class="java keyword">int</code> <code class="java plain">start, </c
 ode><code class="java keyword">int</code> <code class="java plain">length) {</code></div><div class="line number119 index6 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">String lastChunk = chunks.get(chunks.size() - </code><code class="java value">1</code><code class="java plain">);</code></div><div class="line number120 index7 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">String thisStr = </code><code class="java keyword">new</code> <code class="java plain">String(ch, start, length);</code></div><div class="line number121 index8 alt2">&nbsp;</div><div class="line number122 index9 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">if</code> <code class="java plain">(lastChunk.length() + length > MAXIMUM_TEXT_CHUNK_SIZE) {
 </code></div><div class="line number123 index10 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">chunks.add(thisStr);</code></div><div class="line number124 index11 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">} </code><code class="java keyword">else</code> <code class="java plain">{</code></div><div class="line number125 index12 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">chunks.set(chunks.size() - </code><code class="java value">1</code><code class="java plain">, lastChunk + thisStr);</code></div><div class="line number126 index13 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</c
 ode></div><div class="line number127 index14 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number128 index15 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">};</code></div><div class="line number129 index16 alt2">&nbsp;</div><div class="line number130 index17 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">AutoDetectParser parser = </code><code class="java keyword">new</code> <code class="java plain">AutoDetectParser();</code></div><div class="line number131 index18 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">Metadata metadata = </code><code class="java keyword">new</code> <code class="java plain">Metadata();</code></div><div class="line number132 index19 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">try</code> <code class
 ="java plain">(InputStream stream = ContentHandlerExample.</code><code class="java keyword">class</code><code class="java plain">.getResourceAsStream(</code><code class="java string">"test2.doc"</code><code class="java plain">)) {</code></div><div class="line number133 index20 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">parser.parse(stream, handler, metadata);</code></div><div class="line number134 index21 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">chunks;</code></div><div class="line number135 index22 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number136 index23 alt1"><code class="java plain">}</code></div></div></td></tr></tbody></table></div></div></div>
+<p>Sometimes, you want to chunk the resulting text up, perhaps to output as you go minimising memory use, perhaps to output to HDFS files, or any other reason! With a small custom content handler, you can do that.</p><div id="highlighter_508864" class="syntaxhighlighter nogutter  java"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number113 index0 alt2"><code class="java keyword">public</code> <code class="java plain">List&lt;String> parseToPlainTextChunks() </code><code class="java keyword">throws</code> <code class="java plain">IOException, SAXException, TikaException {</code></div><div class="line number114 index1 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">final</code> <code class="java plain">List&lt;String> chunks = </code><code class="java keyword">new</code> <code class="java plain">ArrayList&lt;>();</code></div><div class="line number115 index2 alt2"><code c
 lass="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">chunks.add(</code><code class="java string">""</code><code class="java plain">);</code></div><div class="line number116 index3 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">ContentHandlerDecorator handler = </code><code class="java keyword">new</code> <code class="java plain">ContentHandlerDecorator() {</code></div><div class="line number117 index4 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java color1">@Override</code></div><div class="line number118 index5 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">public</code> <code class="java keyword">void</code> <code class="java plain">characters(</code><code class="java keyword">char</code><code class="java plain">[] ch, </code><code class="java keyword">int</code> <code class="java plain">start, </c
 ode><code class="java keyword">int</code> <code class="java plain">length) {</code></div><div class="line number119 index6 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">String lastChunk = chunks.get(chunks.size() - </code><code class="java value">1</code><code class="java plain">);</code></div><div class="line number120 index7 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">String thisStr = </code><code class="java keyword">new</code> <code class="java plain">String(ch, start, length);</code></div><div class="line number121 index8 alt2">&nbsp;</div><div class="line number122 index9 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">if</code> <code class="java plain">(lastChunk.length() + length > MAXIMUM_TEXT_CHUNK_SIZE) {
 </code></div><div class="line number123 index10 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">chunks.add(thisStr);</code></div><div class="line number124 index11 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">} </code><code class="java keyword">else</code> <code class="java plain">{</code></div><div class="line number125 index12 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">chunks.set(chunks.size() - </code><code class="java value">1</code><code class="java plain">, lastChunk + thisStr);</code></div><div class="line number126 index13 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</c
 ode></div><div class="line number127 index14 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number128 index15 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">};</code></div><div class="line number129 index16 alt2">&nbsp;</div><div class="line number130 index17 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">AutoDetectParser parser = </code><code class="java keyword">new</code> <code class="java plain">AutoDetectParser();</code></div><div class="line number131 index18 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">Metadata metadata = </code><code class="java keyword">new</code> <code class="java plain">Metadata();</code></div><div class="line number132 index19 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">try</code> <code class
 ="java plain">(InputStream stream = ContentHandlerExample.</code><code class="java keyword">class</code><code class="java plain">.getResourceAsStream(</code><code class="java string">"test2.doc"</code><code class="java plain">)) {</code></div><div class="line number133 index20 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">parser.parse(stream, handler, metadata);</code></div><div class="line number134 index21 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">chunks;</code></div><div class="line number135 index22 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number136 index23 alt1"><code class="java plain">}</code></div></div></td></tr></tbody></table></div></div></div>
 <div class="section">
 <h3><a name="Translation">Translation</a></h3>
 <p>Tika provides a pluggable Translation system, which allow you to send the results of parsing off to an external system or program to have the text translated into another language.</p>
 <div class="section">
 <h4><a name="Translation_using_the_Microsoft_Translation_API">Translation using the Microsoft Translation API</a></h4>
-<p>In order to use the Microsoft Translation API, you need to sign up for a Microsoft account, get an API key, then pass the key to Tika before translating.</p><div id="highlighter_843581" class="syntaxhighlighter nogutter  java"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number23 index0 alt2"><code class="java keyword">public</code> <code class="java plain">String microsoftTranslateToFrench(String text) {</code></div><div class="line number24 index1 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">MicrosoftTranslator translator = </code><code class="java keyword">new</code> <code class="java plain">MicrosoftTranslator();</code></div><div class="line number25 index2 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java comments">// Change the id and secret! See <a href="http://msdn.microsoft.com/en-us/library/hh454950.aspx.">http://msdn.microso
 ft.com/en-us/library/hh454950.aspx.</a></code></div><div class="line number26 index3 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">translator.setId(</code><code class="java string">"dummy-id"</code><code class="java plain">);</code></div><div class="line number27 index4 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">translator.setSecret(</code><code class="java string">"dummy-secret"</code><code class="java plain">);</code></div><div class="line number28 index5 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">try</code> <code class="java plain">{</code></div><div class="line number29 index6 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">translator.translate(text, </code><code class="java string">"fr"</code><code class="java plain">);</code></div><div class=
 "line number30 index7 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">} </code><code class="java keyword">catch</code> <code class="java plain">(Exception e) {</code></div><div class="line number31 index8 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java string">"Error while translating."</code><code class="java plain">;</code></div><div class="line number32 index9 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number33 index10 alt2"><code class="java plain">}</code></div></div></td></tr></tbody></table></div></div></div>
+<p>In order to use the Microsoft Translation API, you need to sign up for a Microsoft account, get an API key, then pass the key to Tika before translating.</p><div id="highlighter_240088" class="syntaxhighlighter nogutter  java"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number23 index0 alt2"><code class="java keyword">public</code> <code class="java plain">String microsoftTranslateToFrench(String text) {</code></div><div class="line number24 index1 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">MicrosoftTranslator translator = </code><code class="java keyword">new</code> <code class="java plain">MicrosoftTranslator();</code></div><div class="line number25 index2 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java comments">// Change the id and secret! See <a href="http://msdn.microsoft.com/en-us/library/hh454950.aspx.">http://msdn.microso
 ft.com/en-us/library/hh454950.aspx.</a></code></div><div class="line number26 index3 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">translator.setId(</code><code class="java string">"dummy-id"</code><code class="java plain">);</code></div><div class="line number27 index4 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">translator.setSecret(</code><code class="java string">"dummy-secret"</code><code class="java plain">);</code></div><div class="line number28 index5 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">try</code> <code class="java plain">{</code></div><div class="line number29 index6 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">translator.translate(text, </code><code class="java string">"fr"</code><code class="java plain">);</code></div><div class=
 "line number30 index7 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">} </code><code class="java keyword">catch</code> <code class="java plain">(Exception e) {</code></div><div class="line number31 index8 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java string">"Error while translating."</code><code class="java plain">;</code></div><div class="line number32 index9 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">}</code></div><div class="line number33 index10 alt2"><code class="java plain">}</code></div></div></td></tr></tbody></table></div></div></div>
 <div class="section">
 <h3><a name="Language_Identification">Language Identification</a></h3>
-<p>Tika provides support for identifying the language of text, through the <a href="./api/org/apache/tika/language/LanguageIdentifier.html">LanguageIdentifier</a> class.</p><div id="highlighter_437760" class="syntaxhighlighter nogutter  java"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number23 index0 alt2"><code class="java keyword">public</code> <code class="java plain">String identifyLanguage(String text) {</code></div><div class="line number24 index1 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">LanguageIdentifier identifier = </code><code class="java keyword">new</code> <code class="java plain">LanguageIdentifier(text);</code></div><div class="line number25 index2 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">identifier.getLanguage();</code></div><div class="line number26 index3 alt
 1"><code class="java plain">}</code></div></div></td></tr></tbody></table></div></div>
+<p>Tika provides support for identifying the language of text, through the <a href="./api/org/apache/tika/language/LanguageIdentifier.html">LanguageIdentifier</a> class.</p><div id="highlighter_392998" class="syntaxhighlighter nogutter  java"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number23 index0 alt2"><code class="java keyword">public</code> <code class="java plain">String identifyLanguage(String text) {</code></div><div class="line number24 index1 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">LanguageIdentifier identifier = </code><code class="java keyword">new</code> <code class="java plain">LanguageIdentifier(text);</code></div><div class="line number25 index2 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java keyword">return</code> <code class="java plain">identifier.getLanguage();</code></div><div class="line number26 index3 alt
 1"><code class="java plain">}</code></div></div></td></tr></tbody></table></div></div>
 <div class="section">
 <h3><a name="Additional_Examples">Additional Examples</a></h3>
 <p>A number of other examples are also available, including all of the examples from the <a class="externalLink" href="http://manning.com/mattmann/">Tika In Action book</a>. These can all be found in the <a class="externalLink" href="https://svn.apache.org/repos/asf/tika/trunk/tika-example">Tika Example module</a> in SVN.</p></div></div>

Modified: tika/site/publish/download.html
URL: http://svn.apache.org/viewvc/tika/site/publish/download.html?rev=1888216&r1=1888215&r2=1888216&view=diff
==============================================================================
--- tika/site/publish/download.html (original)
+++ tika/site/publish/download.html Tue Mar 30 13:46:30 2021
@@ -89,11 +89,11 @@
 <p>Apache Tika 1.26 is now available. See the <a class="externalLink" href="https://www.apache.org/dist/tika/CHANGES-1.26.txt">CHANGES.txt</a> file for more information on the list of updates.</p>
 <p>For the latest stable release:</p>
 <ul>
-<li><a class="externalLink" href=" https://www.apache.org/dyn/closer.cgi/tika/tika-1.26-src.zip">Mirrors for tika-1.26-src.zip</a> (source archive, <a class="externalLink" href="https://www.apache.org/dist/tika/tika-1.26-src.zip.asc">PGP signature</a>, <a class="externalLink" href="https://www.apache.org/dist/tika/tika-1.26-src.zip.sha512">SHA512</a>)</li>
-<li><a class="externalLink" href=" https://www.apache.org/dyn/closer.cgi/tika/tika-app-1.26.jar">Mirrors for tika-app-1.26.jar</a> (runnable jar, <a class="externalLink" href="https://www.apache.org/dist/tika/tika-app-1.26.jar.asc">PGP signature</a>, <a class="externalLink" href="https://www.apache.org/dist/tika/tika-app-1.26.jar.sha512">SHA512</a>)</li>
-<li><a class="externalLink" href=" https://www.apache.org/dyn/closer.cgi/tika/tika-server-1.26.jar">Mirrors for tika-server-1.26.jar</a> (runnable jar, <a class="externalLink" href="https://www.apache.org/dist/tika/tika-server-1.26.jar.asc">PGP signature</a>, <a class="externalLink" href="https://www.apache.org/dist/tika/tika-server-1.26.jar.sha512">SHA512</a>)</li>
-<li><a class="externalLink" href=" https://www.apache.org/dyn/closer.cgi/tika/tika-server-1.26-bin.zip">Mirrors for tika-server-1.26.bin.zip</a> (tika-server as a service), <a class="externalLink" href="https://www.apache.org/dist/tika/tika-server-1.26-bin.zip.asc">PGP signature</a>, <a class="externalLink" href="https://www.apache.org/dist/tika/tika-server-1.26-bin.zip.sha512">SHA512</a>)</li>
-<li><a class="externalLink" href=" https://www.apache.org/dyn/closer.cgi/tika/tika-eval-1.26.jar">Mirrors for tika-eval-1.26.jar</a> (runnable jar, <a class="externalLink" href="https://www.apache.org/dist/tika/tika-eval-1.26.jar.asc">PGP signature</a>, <a class="externalLink" href="https://www.apache.org/dist/tika/tika-eval-1.26.jar.sha512">SHA512</a>)</li></ul><!-- revert this after the full 2.0.0 release -->
+<li><a class="externalLink" href="https://www.apache.org/dyn/closer.cgi/tika/tika-1.26-src.zip">Mirrors for tika-1.26-src.zip</a> (source archive, <a class="externalLink" href="https://www.apache.org/dist/tika/tika-1.26-src.zip.asc">PGP signature</a>, <a class="externalLink" href="https://www.apache.org/dist/tika/tika-1.26-src.zip.sha512">SHA512</a>)</li>
+<li><a class="externalLink" href="https://www.apache.org/dyn/closer.cgi/tika/tika-app-1.26.jar">Mirrors for tika-app-1.26.jar</a> (runnable jar, <a class="externalLink" href="https://www.apache.org/dist/tika/tika-app-1.26.jar.asc">PGP signature</a>, <a class="externalLink" href="https://www.apache.org/dist/tika/tika-app-1.26.jar.sha512">SHA512</a>)</li>
+<li><a class="externalLink" href="https://www.apache.org/dyn/closer.cgi/tika/tika-server-1.26.jar">Mirrors for tika-server-1.26.jar</a> (runnable jar, <a class="externalLink" href="https://www.apache.org/dist/tika/tika-server-1.26.jar.asc">PGP signature</a>, <a class="externalLink" href="https://www.apache.org/dist/tika/tika-server-1.26.jar.sha512">SHA512</a>)</li>
+<li><a class="externalLink" href="https://www.apache.org/dyn/closer.cgi/tika/tika-server-1.26-bin.zip">Mirrors for tika-server-1.26.bin.zip</a> (tika-server as a service), <a class="externalLink" href="https://www.apache.org/dist/tika/tika-server-1.26-bin.zip.asc">PGP signature</a>, <a class="externalLink" href="https://www.apache.org/dist/tika/tika-server-1.26-bin.zip.sha512">SHA512</a>)</li>
+<li><a class="externalLink" href="https://www.apache.org/dyn/closer.cgi/tika/tika-eval-1.26.jar">Mirrors for tika-eval-1.26.jar</a> (runnable jar, <a class="externalLink" href="https://www.apache.org/dist/tika/tika-eval-1.26.jar.asc">PGP signature</a>, <a class="externalLink" href="https://www.apache.org/dist/tika/tika-eval-1.26.jar.sha512">SHA512</a>)</li></ul><!-- revert this after the full 2.0.0 release -->
 <p>For the 2.0.0-ALPHA release:</p>
 <ul>
 <li><a class="externalLink" href="https://archive.apache.org/dist/tika/tika-2.0.0-ALPHA-src.zip">Apache archive for tika-2.0.0-ALPHA-src.zip</a> (source archive, <a class="externalLink" href="https://archive.apache.org/dist/tika/tika-2.0.0-ALPHA-src.zip.asc">PGP signature</a>, <a class="externalLink" href="https://archive.apache.org/dist/tika/tika-2.0.0-ALPHA-src.zip.sha512">SHA512</a>)</li>

Modified: tika/site/publish/security.html
URL: http://svn.apache.org/viewvc/tika/site/publish/security.html?rev=1888216&r1=1888215&r2=1888216&view=diff
==============================================================================
--- tika/site/publish/security.html (original)
+++ tika/site/publish/security.html Tue Mar 30 13:46:30 2021
@@ -94,226 +94,241 @@
 <td align="center">Reporter</td>
 <td align="center">Affected Versions</td></tr>
 <tr class="b">
+<td align="center"><a class="externalLink" href="https://lists.apache.org/thread.html/r915add4aa52c60d1b5cf085039cfa73a98d7fae9673374dfd7744b5a%40%3Cdev.tika.apache.org%3E"> CVE-2021-28657</a></td>
+<td align="center">Infinite loop in the MP3Parser.</td>
+<td align="center">Khaled Nassar</td>
+<td align="center">?-1.25</td></tr>
+<tr class="a">
+<td align="center"><a class="externalLink" href="https://lists.apache.org/thread.html/rf35026148ccc0e1af133501c0d003d052883fcc65107b3ff5d3b61cd%40%3Cusers.pdfbox.apache.org%3E">CVE-2021-27906</a></td>
+<td align="center">Out of memory error while loading a file in PDFBox before 2.0.23.</td>
+<td align="center">Fabian Meumertzheim</td>
+<td align="center">?-1.25</td></tr>
+<tr class="b">
+<td align="center"><a class="externalLink" href="https://lists.apache.org/thread.html/r4717f902f8bc36d47b3fa978552a25e4ed3ddc2fffb52b94fbc4ab36%40%3Cusers.pdfbox.apache.org%3E"> CVE-2021-27807</a></td>
+<td align="center">Infinite loop while loading a file in PDFBox before 2.0.23.</td>
+<td align="center">Fabian Meumertzheim</td>
+<td align="center">?-1.25</td></tr>
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://lists.apache.org/thread.html/r4d943777e36ca3aa6305a45da5acccc54ad894f2d5a07186cfa2442c%40%3Cdev.tika.apache.org%3E"> CVE-2020-9489</a></td>
 <td align="center">System.exit vulnerability in Tika's OneNote Parser; out of memory errors and/or infinite loops in Tika's ICNSParser, MP3Parser, MP4Parser, SAS7BDATParser, OneNoteParser and ImageParser.</td>
 <td align="center">Tim Allison</td>
 <td align="center">1.0-1.24</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://lists.apache.org/thread.html/r463b1a67817ae55fe022536edd6db34e8f9636971188430cbcf8a8dd%40%3Cdev.tika.apache.org%3E"> CVE-2020-1950</a></td>
 <td align="center">Excessive memory usage (DoS) vulnerability in Apache Tika's PSDParser</td>
 <td align="center">Pierre Ernst</td>
 <td align="center">1.0-1.23</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://lists.apache.org/thread.html/rd8c1b42bd0e31870d804890b3f00b13d837c528f7ebaf77031323172%40%3Cdev.tika.apache.org%3E"> CVE-2020-1951</a></td>
 <td align="center">Infinite Loop (DoS) vulnerability in Apache Tika's PSDParser</td>
 <td align="center">Tim Allison</td>
 <td align="center">1.0-1.23</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://lists.apache.org/thread.html/fe876a649d9d36525dd097fe87ff4dcb3b82bb0fbb3a3d71fb72ef61@%3Cdev.tika.apache.org%3E"> CVE-2019-10094</a></td>
 <td align="center">StackOverflow from Crafted Package/Compressed Files in Apache Tika's RecursiveParserWrapper</td>
 <td align="center">Tim Allison; files contributed by Matthew Barber and Erling Ellingsen</td>
 <td align="center">1.7-1.21</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://lists.apache.org/thread.html/a5a44eff1b9eda3bc69d22943a1030c43d376380c75d3ab04d0c1a21@%3Cdev.tika.apache.org%3E"> CVE-2019-10093</a></td>
 <td align="center">Denial of Service in Apache Tika's 2003ml and 2006ml Parsers</td>
 <td align="center">Tim Allison</td>
 <td align="center">1.19-1.21</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://lists.apache.org/thread.html/1c63555609b737c20d1bbfa4a3e73ec488e3408a84e2f5e47e1b7e08@%3Cdev.tika.apache.org%3E"> CVE-2019-10088</a></td>
 <td align="center">OOM from a crafted Zip File in Apache Tika's RecursiveParserWrapper</td>
 <td align="center">RunningSnail</td>
 <td align="center">1.7-1.21</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://issues.apache.org/jira/browse/PDFBOX-4550"> PDFBOX-4550</a></td>
 <td align="center">OOM from corrupt ToUnicode stream in PDFs</td>
 <td align="center">Tilman Hausherr</td>
 <td align="center">?-1.21</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://nvd.nist.gov/vuln/detail/CVE-2019-0228"> CVE-2019-0228</a></td>
 <td align="center">XML External Entity (XXE) in xfdf loading in PDFBox (regular Tika parsing would likely not be vulnerable)</td>
 <td align="center">Kurt Boberg</td>
 <td align="center">?-1.20</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://nvd.nist.gov/vuln/detail/CVE-2018-20346"> CVE-2018-20346</a></td>
 <td align="center">(Provided) SQLite before 3.52.3 allows remote attackers to execute arbitrary code</td>
 <td align="center">Pat Cashman (notified Tika team)</td>
 <td align="center">?-1.20</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://lists.apache.org/thread.html/7c021a4ea2037e52e74628e17e8e0e2acab1f447160edc8be0eae6d3@%3Cdev.tika.apache.org%3E">CVE-2018-17197</a></td>
 <td align="center">Infinite Loop in Tika's SQLite3Parser</td>
 <td align="center">Tim Allison</td>
 <td align="center">1.8-1.19.1</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://lists.apache.org/thread.html/88de8350cda9b184888ec294c813c5bd8a2081de8fd3666f8904bc05@%3Cdev.tika.apache.org%3E">CVE-2018-11796</a></td>
 <td align="center">XML Entity Expansion in Tika's SAXParsers after reset()</td>
 <td align="center">Slava Gorelik</td>
 <td align="center">?-1.19</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://lists.apache.org/thread.html/b7eb142436d2620646d1da087ca004159241d3930a9463b476700a4d@%3Cdev.pdfbox.apache.org%3E">CVE-2018-11797</a></td>
 <td align="center">Very long loop parsing page tree in PDFBox</td>
 <td align="center">Shawn Rasheed and Jens Dietrich</td>
 <td align="center">?-1.19</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="http://mail-archives.us.apache.org/mod_mbox/www-announce/201808.mbox/%3C87in4apjvv.fsf@v45346.1blu.de%3E">CVE-2018-11771</a></td>
 <td align="center">Infinite Loop in Commons-Compress ZipArchiveInputStream</td>
 <td align="center">Tobias Ospelt</td>
 <td align="center">?-1.18</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://lists.apache.org/thread.html/72df7a3f0dda49a912143a1404b489837a11f374dfd1961061873a91@%3Cdev.tika.apache.org%3E">CVE-2018-8017</a></td>
 <td align="center">Infinite Loop in IptcAnpaParser</td>
 <td align="center">Rohan Padhye and Tobias Ospelt</td>
 <td align="center">1.2-1.18</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://lists.apache.org/thread.html/9f62f742fd4fcd81654a9533b8a71349b064250840592bcd502dcfb6@%3Cusers.pdfbox.apache.org%3E">CVE-2018-8036</a></td>
 <td align="center">Infinite Loop leading to OOM in PDFBox's AFMParser</td>
 <td align="center">Tobias Ospelt</td>
 <td align="center">?-1.18</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-12418">CVE-2018-12418</a></td>
 <td align="center">Infinite Loop in junrar</td>
 <td align="center">Tobias Ospelt</td>
 <td align="center">?-1.18</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://lists.apache.org/thread.html/5553e10bba5604117967466618f219c0cae710075819c70cfb3fb421@%3Cdev.tika.apache.org%3E">CVE-2018-11761</a></td>
 <td align="center">XML Entity Expansion Vulnerability</td>
 <td align="center">Renfei (Brian) Wang</td>
 <td align="center">0.1-1.18</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://lists.apache.org/thread.html/ab2e1af38975f5fc462ba89b517971ef892ec3d06bee12ea2258895b@%3Cdev.tika.apache.org%3E">CVE-2018-11762</a></td>
 <td align="center">Rare Zip Slip Vulnerability in tika-app</td>
 <td align="center">Tim Allison</td>
 <td align="center">0.9-1.18</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="http://mail.openjdk.java.net/pipermail/sound-dev/2015-September/000349.html">RIFFReader</a></td>
 <td align="center">Infinite Loop in AudioParser in Java 8 and 9</td>
 <td align="center">Sergey Bylokhov and Tobias Ospelt</td>
 <td align="center">?-1.18</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://issues.apache.org/jira/browse/TIKA-2446">TIKA-2446</a></td>
 <td align="center">OOM detecting OPCPackage files with corrupt ZIP</td>
 <td align="center">Thorsten Sch&#xe4;fer</td>
 <td align="center">?-1.18</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://issues.apache.org/jira/browse/PDFBOX-4014">PDFBOX-4014</a></td>
 <td align="center">Infinite loop in JBig2 (versions less than 3.0.0)</td>
 <td align="center">Hanno B&#xf6;ck</td>
 <td align="center">(if user supplied) ?-1.17</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://www.cvedetails.com/cve/CVE-2018-1339">CVE-2018-1339</a></td>
 <td align="center">Infinite loop in ChmParser</td>
 <td align="center">Tobias Ospelt</td>
 <td align="center">?-1.17</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://www.cvedetails.com/cve/CVE-2018-1338">CVE-2018-1338</a></td>
 <td align="center">Infinite loop in BPGParser</td>
 <td align="center">Tobias Ospelt</td>
 <td align="center">?-1.17</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="http://mail-archives.apache.org/mod_mbox/www-announce/201804.mbox/%3CCAC1dCwVhrPRyFJMS5BbY02%2B495CUODrAzndqZkvKacJnXUSm%2Bw%40mail.gmail.com%3E">CVE-2018-1335</a></td>
 <td align="center">Command Execution in tika-server</td>
 <td align="center">Tim Allison</td>
 <td align="center">?-1.17</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://www.cvedetails.com/cve/CVE-2017-12626">CVE-2017-12626</a></td>
 <td align="center">Apache POI - Infinite loops in WMF, EMF, MSG and macros; OOMs in DOC, PPT and XLS</td>
 <td align="center">Tim Allison, Lu&#xed;s Filipe Nassif and Jerome Lacoste</td>
 <td align="center">?-1.17</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://nvd.nist.gov/vuln/detail/CVE-2018-1324">CVE-2018-1324</a> and <a class="externalLink" href="https://issues.apache.org/jira/browse/COMPRESS-432">COMPRESS-432</a></td>
 <td align="center">Commons Compress - Infinite loop in ZipFile</td>
 <td align="center">Lu&#xed;s Filipe Nassif and Anton Abashkin</td>
 <td align="center">?-1.17</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://www.cvedetails.com/cve/CVE-2018-7489/">CVE-2018-7489</a> and <a class="externalLink" href="https://issues.apache.org/jira/browse/TIKA-2634">TIKA-2634</a></td>
 <td align="center">Jackson - Deserialization vulnerability</td>
 <td align="center">Richard Cyganiak (notified Tika team)</td>
 <td align="center">?-1.17</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://issues.apache.org/jira/browse/PDFBOX-3919">PDFBOX-3919</a></td>
 <td align="center">Apache PDFBox - Infinite loop</td>
 <td align="center">Hanno B&#xf6;ck and Andreas Bogk</td>
 <td align="center">?-1.16</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://issues.apache.org/jira/browse/TIKA-2115">TIKA-2115</a></td>
 <td align="center">Apache POI - OOM parsing OLE object</td>
 <td align="center">Thomas Galla</td>
 <td align="center">?-1.15</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://issues.apache.org/jira/browse/COMPRESS-382">COMPRESS-382</a></td>
 <td align="center">Commons Compress - OOM detecting corrupt LZMA</td>
 <td align="center">Lu&#xed;s Filipe Nassif</td>
 <td align="center">?-1.15</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://issues.apache.org/jira/browse/COMPRESS-386">COMPRESS-386</a> and <a class="externalLink" href="https://issues.apache.org/jira/browse/TIKA-1631">TIKA-1631</a></td>
 <td align="center">Commons Compress - OOM detecting corrupt x-compress</td>
 <td align="center">Pavel Micka</td>
 <td align="center">?-1.15</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://issues.apache.org/jira/browse/TIKA-2045">TIKA-2045</a> and <a class="externalLink" href="https://issues.apache.org/jira/browse/PDFBOX-3442">TIKA-3442</a></td>
 <td align="center">Apache PDFBox - OOM in font caching</td>
 <td align="center">Egbert</td>
 <td align="center">?-1.13</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://issues.apache.org/jira/browse/TIKA-1866">TIKA-1866</a> and <a class="externalLink" href="https://issues.apache.org/jira/browse/TIKA-954">TIKA-954</a></td>
 <td align="center">Apache POI - OOM in DOCX and PPTX because of bug in Piccolo parser</td>
 <td align="center">Rob Tulloh and Shawn Johnson</td>
 <td align="center">?-1.13</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://issues.apache.org/jira/browse/TIKA-2040">TIKA-2040</a></td>
 <td align="center">GC-Overload and OOM in CHMParser</td>
 <td align="center">Lu&#xed;s Filipe Nassif</td>
 <td align="center">?-1.13</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://www.cvedetails.com/cve/CVE-2016-6809">CVE-2016-6809</a></td>
 <td align="center">jmatio - Deserialization Vulnerability in MATLAB parser</td>
 <td align="center">Pierre Ernst</td>
 <td align="center">1.6-1.13</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://www.cvedetails.com/cve/CVE-2016-4434">CVE-2016-4434</a></td>
 <td align="center">XXE Vulnerability in several parsers</td>
 <td align="center">Arthur Khashaev, Seulgi Kim, Mesut Timur (and Tim Allison while remediating initial issue reported by Arthur et al.)</td>
 <td align="center">0.10-1.12</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://nvd.nist.gov/vuln/detail/CVE-2016-2175">CVE-2016-2175</a></td>
 <td align="center">XML External Entity (XXE) in PDFBox</td>
 <td align="center">???</td>
 <td align="center">?-1.12</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://www.cvedetails.com/cve/CVE-2015-3271">CVE-2015-3271</a></td>
 <td align="center">Remote Access to host files via tika-server</td>
 <td align="center">Tim Allison</td>
 <td align="center">1.9?-1.10</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://issues.apache.org/jira/browse/PDFBOX-2811">PDFBOX-2811</a></td>
 <td align="center">Apache PDFBox - Infinite Loop</td>
 <td align="center">Andreas Lehmk&#xfc;hler</td>
 <td align="center">?-1.10</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://issues.apache.org/jira/browse/PDFBOX-2200">PDFBOX-2200</a></td>
 <td align="center">Apache PDFBox - Slowly building memory leak because of static caching of fonts</td>
 <td align="center">Matthew Buckett</td>
 <td align="center">?-1.6</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://issues.apache.org/jira/browse/TIKA-1471">TIKA-1471</a></td>
 <td align="center">Apache PDFBox - OOM with corrupt PDF</td>
 <td align="center">Alan Burlison</td>
 <td align="center">?-1.6</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://issues.apache.org/jira/browse/TIKA-788">TIKA-788</a></td>
 <td align="center">Infinite Loop in DWG</td>
 <td align="center">Stas Shaposhnikov</td>
 <td align="center">?-1.4?</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://issues.apache.org/jira/browse/TIKA-1132">TIKA-1132</a></td>
 <td align="center">Apache POI - Nearly Infinite Loop in XLS</td>
 <td align="center">Ryan Krueger</td>
 <td align="center">?-1.4</td></tr>
-<tr class="a">
+<tr class="b">
 <td align="center"><a class="externalLink" href="https://issues.apache.org/jira/browse/TIKA-1179">TIKA-1179</a></td>
 <td align="center">Infinite Loop in corrupt MP3</td>
 <td align="center">Marius Dumitru Florea</td>
 <td align="center">?-1.4</td></tr>
-<tr class="b">
+<tr class="a">
 <td align="center"><a class="externalLink" href="https://issues.apache.org/jira/browse/TIKA-866">TIKA-866</a></td>
 <td align="center">OOM reading Tika config file</td>
 <td align="center">Stephan M&#xfc;hlstrasser</td>

Modified: tika/site/src/site/apt/security.apt
URL: http://svn.apache.org/viewvc/tika/site/src/site/apt/security.apt?rev=1888216&r1=1888215&r2=1888216&view=diff
==============================================================================
--- tika/site/src/site/apt/security.apt (original)
+++ tika/site/src/site/apt/security.apt Tue Mar 30 13:46:30 2021
@@ -28,6 +28,15 @@ Security
 *-------------*-------------*----------------*------------------*
 |CVE or Vulnerability| Description | Reporter       | Affected Versions|
 *-------------*-------------*----------------*------------------*
+| {{{https://lists.apache.org/thread.html/r915add4aa52c60d1b5cf085039cfa73a98d7fae9673374dfd7744b5a%40%3Cdev.tika.apache.org%3E} CVE-2021-28657}}
+              | Infinite loop in the MP3Parser.| Khaled Nassar |?-1.25|
+*-------------*-------------*----------------*------------------*
+| {{{https://lists.apache.org/thread.html/rf35026148ccc0e1af133501c0d003d052883fcc65107b3ff5d3b61cd%40%3Cusers.pdfbox.apache.org%3E}CVE-2021-27906}}
+              | Out of memory error while loading a file in PDFBox before 2.0.23.| Fabian Meumertzheim |?-1.25|
+*-------------*-------------*----------------*------------------*
+| {{{https://lists.apache.org/thread.html/r4717f902f8bc36d47b3fa978552a25e4ed3ddc2fffb52b94fbc4ab36%40%3Cusers.pdfbox.apache.org%3E} CVE-2021-27807}}
+              | Infinite loop while loading a file in PDFBox before 2.0.23.| Fabian Meumertzheim |?-1.25|
+*-------------*-------------*----------------*------------------*
 | {{{https://lists.apache.org/thread.html/r4d943777e36ca3aa6305a45da5acccc54ad894f2d5a07186cfa2442c%40%3Cdev.tika.apache.org%3E} CVE-2020-9489}}
               | System.exit vulnerability in Tika's OneNote Parser; out of memory errors and/or infinite loops in Tika's ICNSParser, MP3Parser, MP4Parser, SAS7BDATParser, OneNoteParser and ImageParser.| Tim Allison |1.0-1.24|
 *-------------*-------------*----------------*------------------*