Creating your own Document Converter

You can create your own Document Converter.

Conditions:

  • The new Document Converter class must implement the "Converter" interface.
  • The new Document Converter class must be declared under the package "com.openkm.plugin.conversion".
  • The new Document Converter class must be annotated with "@PluginImplementation".
  • The new Document Converter class must extend BasePlugin.

Document Converter interface:

package com.openkm.plugin.conversion;

import com.openkm.core.ConversionException;
import net.xeoh.plugins.base.Plugin;

import java.io.File;
import java.io.IOException;
import java.util.List;

public interface Converter extends Plugin {

    int TO_PDF = 0;
    int TO_IMAGE = 1;

    void makeConversion(File input, String mimeType, File output) throws IOException, ConversionException;

    List<String> getSourceMimeTypes();

    int getConversionType();
}

The new class must be loaded into the package com.openkm.plugin.conversion because the application plugin system will try to load it from there.

Do not miss the tag @PluginImplementation otherwise the application plugin system will not be able to retrieve the new class.

More information at: Register a new plugin.

Method descriptions

MethodTypeDescription

makeConversion(File input, String mimeType, File output)

void

The method converts the input file to a specific format and writes it to the output file.

getSourceMimeTypes()

List<String>

Returns a list of valid document MIME types allowed to be converted.

getConversionType()

int

Returns the conversion type value that will be used for the input document.

Allowed values are:

  • Converter.TO_PDF
  • Converter.TO_IMAGE

When you choose Converter.TO_IMAGE, it is expected to return an image in PNG format.

Example of a Document Converter implementation

package com.openkm.plugin.conversion;

import com.openkm.core.ConversionException;
import com.openkm.core.MimeTypeConfig;
import com.openkm.plugin.BasePlugin;
import com.openkm.util.DocConverter;
import net.xeoh.plugins.base.annotations.PluginImplementation;
import org.springframework.beans.factory.annotation.Autowired;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;


@PluginImplementation
public class SqlToPdfConversion extends BasePlugin implements Converter {

    String[] sourceMimeTypes = new String[]{MimeTypeConfig.MIME_SQL};

    @Autowired
    private DocConverter docConverter;

    @Override
    public void makeConversion(File input, String mimeType, File output) throws IOException, ConversionException {
        docConverter.src2pdf(input, output, "sql");
    }

    @Override
    public List<String> getSourceMimeTypes() {
        return Arrays.asList(sourceMimeTypes);
    }

    @Override
    public int getConversionType() {
        return Converter.TO_PDF;
    }
}