package net.flibusta.converter.impl;
import com.adobe.dp.epub.conv.ConversionClient;
import com.adobe.dp.epub.conv.ConversionService;
import net.flibusta.converter.ConversionException;
import net.flibusta.converter.Converter;
import org.apache.commons.io.FilenameUtils;
import org.apache.log4j.Logger;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
public class AdobeConverterAdapter implements Converter{
Logger logger = Logger.getLogger(AdobeConverterAdapter.class);
private ConversionService conversionService;
@Override
public File convert(File sourceFile) throws ConversionException {
return conversionService.convert(sourceFile, null, new MyConversionClient(sourceFile), new PrintWriter(new StringWriter()));
}
private class MyConversionClient implements ConversionClient {
private File fb2;
public MyConversionClient(File fb2) {
this.fb2 = fb2;
}
@Override
public void reportProgress(float progress) {
}
@Override
public void reportIssue(String errorCode) {
}
@Override
public File makeFile(String baseName) {
try {
return File.createTempFile(FilenameUtils.getBaseName(fb2.getName()), ".epub");
} catch (IOException e) {
logger.error("Can't create temp file for epub converter", e);
throw new RuntimeException(e);
}
}
}
public void setConversionService(ConversionService conversionService) {
this.conversionService = conversionService;
}
}