ByteArrayOutputStream os = new ByteArrayOutputStream();
removeAllFiltersButDCT(os);
os.close();
byte[] img = os.toByteArray();
PDColorSpace cs = getColorSpace();
try
{
if (cs instanceof PDDeviceCMYK
|| (cs instanceof PDICCBased && cs.getNumberOfComponents() == 4))
{
// JPEGs may contain CMYK, YCbCr or YCCK decoded image data
int transform = getApp14AdobeTransform(img);
// create BufferedImage based on the converted color values
if (transform == 0)
{
bi = convertCMYK2RGB(readImage(img), cs);
}
else if (transform == 1)
{
// TODO YCbCr
}
else if (transform == 2)
{
bi = convertYCCK2RGB(readImage(img));
}
}
else if (cs instanceof PDSeparation)
{
// create BufferedImage based on the converted color values
bi = processTintTransformation(readImage(img),
((PDSeparation)cs).getTintTransform(), cs.getJavaColorSpace());
}
else if (cs instanceof PDDeviceN)
{
// create BufferedImage based on the converted color values
bi = processTintTransformation(readImage(img),
((PDDeviceN)cs).getTintTransform(), cs.getJavaColorSpace());
}
else
{
ByteArrayInputStream bai = new ByteArrayInputStream(img);
bi = ImageIO.read(bai);