javax.imageio.spi.ImageWriterSpi: Provider com.spire.ms.imagecodecs.ico.spi.IcoImageWriterSpi not found
package com.fixprice.utils.xlsx;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Date;
import java.util.Iterator;
import javax.imageio.spi.IIORegistry;
import javax.imageio.spi.IIOServiceProvider;
import javax.imageio.spi.ImageReaderSpi;
import javax.imageio.spi.ImageWriterSpi;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
import com.spire.xls.PageSetup;
import com.spire.xls.ViewMode;
import com.spire.xls.collections.WorksheetsCollection;
import com.spire.ms.imagecodecs.ico.spi.IcoImageReaderSpi;
import com.spire.ms.imagecodecs.ico.spi.IcoImageWriterSpi;
public class Document {
static {
setLogger();
testIIORegistry();
registerServiceProviders();
log("\n");
testIIORegistry();
}
private static PrintStream logger;
private Workbook workbook=new Workbook();
public Document(File file) throws Exception {
workbook.loadFromStream(new FileInputStream(file));
}
private static void setLogger() {
try {
File logFile=new File("c:/opentext/cs/support/uploadedfiles/"+(new Date().getTime())+".log");
logFile.createNewFile();
logger=new PrintStream(new FileOutputStream(logFile),true);
} catch (Throwable e) {
e.printStackTrace();
}
}
private static void log(String message) {
if (!(logger==null)) {
try {
logger.println(message);
logger.flush();
} catch (Exception e) {
}
}
}
private static void log(Throwable e) {
if (!(logger==null)) {
try {
e.printStackTrace(logger);
logger.flush();
} catch (Exception e_) {
e_.printStackTrace();
}
}
}
private static void registerServiceProviders() {
try {
IIORegistry ioRegistry=IIORegistry.getDefaultInstance();
ioRegistry.registerServiceProvider(new IcoImageReaderSpi(),ImageReaderSpi.class);
ioRegistry.registerServiceProvider(new IcoImageWriterSpi(),ImageWriterSpi.class);
} catch (Throwable e) {
log(e);
e.printStackTrace();
}
}
@SuppressWarnings("unused")
private static void testIIORegistry() {
IIORegistry ioRegistry=IIORegistry.getDefaultInstance();
for (Iterator<Class<?>> categories=ioRegistry.getCategories();(categories.hasNext());) {
Class<?> category=categories.next();
log("Category: "+category);
System.out.println("Category: "+category);
for (Iterator<?> providers=ioRegistry.getServiceProviders(category,true);(providers.hasNext());) {
final IIOServiceProvider provider=(IIOServiceProvider) providers.next();
log("\t"+provider);
System.out.println("\t"+provider);
}
}
}
public Document setBarcode(File barcode) throws Throwable {
try {
BufferedImage image=ImageIO.read(barcode);
float scale=(100.0f/(float) image.getWidth());
WorksheetsCollection worksheets=workbook.getWorksheets();
for (int i=0,count=worksheets.getCount();(i<count);i++) {
Worksheet worksheet=worksheets.get(i);
PageSetup pageSetup=worksheet.getPageSetup();
pageSetup.setRightHeaderImage(image,scale);
pageSetup.setRightHeader("&G");
worksheet.setViewMode(ViewMode.Layout);
}
} catch (Throwable e) {
log(e);
throw e;
}
return this;
}
public void save(File file) throws Throwable {
try {
workbook.saveToStream(new FileOutputStream(file));
} catch (Throwable e) {
log(e);
throw e;
}
}
}