|
import com.aspose.imaging.FileFormat; |
|
import com.aspose.imaging.IMultipageImage; |
|
import com.aspose.imaging.Image; |
|
import com.aspose.imaging.ImageOptionsBase; |
|
import com.aspose.imaging.imageoptions.*; |
|
import java.util.Arrays; |
|
import java.util.List; |
|
import java.util.function.Function; |
|
|
|
|
|
|
|
compressVectorFormatToSvg(); |
|
compressVectorFormatToEmf(); |
|
compressVectorFormatToWmf(); |
|
|
|
|
|
public static void compressVectorFormatToSvg() |
|
{ |
|
compressVectorFormat(skip -> { |
|
SvgOptions options = new SvgOptions(); |
|
options.setCompress(true); |
|
return options; |
|
}, ".svgz"); |
|
} |
|
|
|
public static void compressVectorFormatToEmf() |
|
{ |
|
compressVectorFormat(skip -> { |
|
EmfOptions options = new EmfOptions(); |
|
options.setCompress(true); |
|
return options; |
|
}, ".emz"); |
|
} |
|
|
|
public static void compressVectorFormatToWmf() |
|
{ |
|
compressVectorFormat(skip -> { |
|
WmfOptions options = new WmfOptions(); |
|
options.setCompress(true); |
|
return options; |
|
}, ".wmz"); |
|
} |
|
|
|
public static void compressVectorFormat(Function<Object, ImageOptionsBase> outOptionsCreator, String extension) |
|
{ |
|
String templatesFolder = "C:\\WorkDir\\"; |
|
List<String> fileFormats = Arrays.asList("cdr", "cmx", "odg", "otg", "eps"); |
|
|
|
fileFormats.forEach( |
|
formatExt -> |
|
{ |
|
String inputFile = templatesFolder + "template." + formatExt; |
|
String outputFile = templatesFolder + "compressed_" + formatExt.toUpperCase(); |
|
|
|
try (Image image = Image.load(inputFile)) |
|
{ |
|
Function<Object, VectorRasterizationOptions> rasterizationOptionsFactory = (skip) -> |
|
{ |
|
VectorRasterizationOptions options; |
|
long fileFormat = image.getFileFormat(); |
|
|
|
if (fileFormat == FileFormat.Cdr) |
|
{ |
|
options = new CdrRasterizationOptions(); |
|
} |
|
else if (fileFormat == FileFormat.Cmx) |
|
{ |
|
options = new CmxRasterizationOptions(); |
|
} |
|
else if (fileFormat == FileFormat.Odg) |
|
{ |
|
options = new OdgRasterizationOptions(); |
|
} |
|
else if (fileFormat == FileFormat.Otg) |
|
{ |
|
options = new OtgRasterizationOptions(); |
|
} |
|
else |
|
{ |
|
return null; |
|
} |
|
|
|
options.setPageWidth(image.getWidth()); |
|
options.setPageHeight(image.getHeight()); |
|
return options; |
|
}; |
|
|
|
if ((image instanceof IMultipageImage) && ((IMultipageImage) image).getPageCount() > 1) |
|
{ |
|
IMultipageImage multiPage = (IMultipageImage) image; |
|
final Image[] pages = multiPage.getPages(); |
|
for (int pageIndex = 0; pageIndex < pages.length; pageIndex++) |
|
{ |
|
ImageOptionsBase options = outOptionsCreator.apply(null); |
|
options.setVectorRasterizationOptions(rasterizationOptionsFactory.apply(null)); |
|
pages[pageIndex].save(outputFile + "_p" + (pageIndex + 1) + extension, options); |
|
} |
|
} |
|
else |
|
{ |
|
ImageOptionsBase options = outOptionsCreator.apply(null); |
|
options.setVectorRasterizationOptions(rasterizationOptionsFactory.apply(null)); |
|
|
|
image.save(outputFile + extension, options); |
|
} |
|
} |
|
}); |
|
} |