|
import com.aspose.imaging.Image;
|
|
import com.aspose.imaging.RasterImage;
|
|
import com.aspose.imaging.fileformats.tiff.TiffFrame;
|
|
import com.aspose.imaging.fileformats.tiff.TiffImage;
|
|
import com.aspose.imaging.fileformats.tiff.enums.TiffExpectedFormat;
|
|
import com.aspose.imaging.imageoptions.PdfOptions;
|
|
import com.aspose.imaging.imageoptions.PngOptions;
|
|
import com.aspose.imaging.imageoptions.TiffOptions;
|
|
|
|
import java.io.File;
|
|
import java.io.FilenameFilter;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
String TestDirectory = "<some directory>\\Many2One\\";
|
|
|
|
HashMap<String, Image> images = new HashMap<String, Image>();
|
|
try
|
|
{
|
|
String outputPath = TestDirectory + "output\\";
|
|
File dir = new File(outputPath);
|
|
assert dir.exists() || dir.mkdirs();
|
|
|
|
int maxWidth = 0;
|
|
int maxHeight = 0;
|
|
// Source file mask, could vary depending on image format (i.e. *.emf, *.wmf, *.svg, *.odg, etc)
|
|
final String fileMask = ".emf";
|
|
File[] files = new File(TestDirectory).listFiles(new FilenameFilter()
|
|
{
|
|
@Override
|
|
public boolean accept(File dir, String name)
|
|
{
|
|
return name.endsWith(fileMask);
|
|
}
|
|
});
|
|
|
|
if (files == null)
|
|
return;
|
|
|
|
for (File fileName : files)
|
|
{
|
|
try (Image image = Image.load(fileName.getAbsolutePath()))
|
|
{
|
|
String outputFileName = outputPath + fileName.getName() + ".png";
|
|
// Save PNG image
|
|
image.save(outputFileName, new PngOptions());
|
|
|
|
Image rasterImage = Image.load(outputFileName);
|
|
if (rasterImage.getWidth() > maxWidth)
|
|
{
|
|
maxWidth = rasterImage.getWidth();
|
|
}
|
|
|
|
if (rasterImage.getHeight() > maxHeight)
|
|
{
|
|
maxHeight = rasterImage.getHeight();
|
|
}
|
|
|
|
images.put(outputFileName, rasterImage);
|
|
}
|
|
}
|
|
|
|
if (images.isEmpty())
|
|
{
|
|
return;
|
|
}
|
|
|
|
String outputPath1 = outputPath + "multiframe.tiff";
|
|
|
|
String outputPath2 = outputPath + "multipage.pdf";
|
|
|
|
final Image[] imageArray = images.values().toArray(new Image[0]);
|
|
try (TiffImage tiffImage = new TiffImage(new TiffFrame((RasterImage) imageArray[0])))
|
|
{
|
|
for (int i = 1; i < imageArray.length; i++)
|
|
{
|
|
tiffImage.addPage((RasterImage)imageArray[i]);
|
|
}
|
|
|
|
// Save as muti frame tiff
|
|
tiffImage.save(outputPath1, new TiffOptions(TiffExpectedFormat.TiffJpegRgb));
|
|
|
|
// Worry about Pdf ? That's it!
|
|
tiffImage.save(outputPath2, new PdfOptions());
|
|
}
|
|
}
|
|
finally
|
|
{
|
|
for (Map.Entry<String, Image> entry : images.entrySet())
|
|
{
|
|
entry.getValue().close();
|
|
new File(entry.getKey()).delete();
|
|
}
|
|
|
|
images.clear();
|
|
}
|