Ir al contenido
Otras versiones

Cargando…

Creating your own Text extractor

Esta página aún no está disponible en tu idioma.

To create your own Text extractot you must create a new class that implements TextExtractor interface:

package com.openkm.plugin.extractor;
import net.xeoh.plugins.base.Plugin;
import java.io.IOException;
import java.io.InputStream;
public interface TextExtractor extends Plugin {
String[] getContentTypes();
String extractText(InputStream stream, String type, String encoding) throws IOException;
}

The new class must be loaded into the package com.openkm.plugin.extractor because application plugins system will try to load from there. See the sample below:

Method Type Description
getContentTypes() String[] Returns the MIME types supported by this extractor. The returned strings must be in lower case, and the returned array must not be empty.
extractText(InputStream stream, String type, String encoding) String Returns a reader for the text content of the given binary document. The content type and character encoding (if available and applicable) are given as arguments.

Example of the Text extractor implementation

Section titled “Example of the Text extractor implementation”
package com.openkm.plugin.extractor;
import net.xeoh.plugins.base.annotations.PluginImplementation;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
/**
* Text extractor for plain text.
*/
@PluginImplementation
public class PlainTextExtractor extends AbstractTextExtractor {
/**
* Logger instance.
*/
private static final Logger logger = LoggerFactory.getLogger(PlainTextExtractor.class);
/**
* Creates a new <code>PlainTextExtractor</code> instance.
*/
public PlainTextExtractor() {
super(new String[] { "text/plain" });
}
// -------------------------------------------------------< TextExtractor >
/**
* Wraps the given input stream to an {@link InputStreamReader} using
* the given encoding, or the platform default encoding if the encoding
* is not given or is unsupported. Closes the stream and returns an empty
* reader if the given encoding is not supported.
*
* @param stream binary stream
* @param type ignored
* @param encoding character encoding, optional
* @return reader for the plain text content
* @throws IOException if the binary stream can not be closed in case
* of an encoding issue
*/
public String extractText(InputStream stream, String type, String encoding) throws IOException {
try {
if (encoding != null) {
return IOUtils.toString(stream, encoding);
}
} catch (UnsupportedEncodingException e) {
logger.warn("Unsupported encoding '{}', using default ({}) instead.",
new Object[] { encoding, System.getProperty("file.encoding") });
}
return IOUtils.toString(stream);
}
}