Запись изображения CMYK в PDF

Мне нужно добавить изображение CMYK (java.awt.BufferedImage) в PDF-документ с помощью iText.

Я пытаюсь сделать это с помощью:

com.lowagie.text.Image img = Image.getInstance(BufferedImage, bgColor);

Это создает изображение RGB в результирующем PDF-файле. (и я предполагаю, что это ошибка, потому что он просто игнорирует ColorModel). Однако я мог бы использовать:

com.lowagie.text.Image img = Image.getInstance(byte[] rawData);

И он создает правильное изображение CMYK в формате PDF. Но во втором случае мне нужно преобразовать java.awt.BufferedImage в ByteArray. Я не могу сделать это с ImageIO.write(ByteArrayOutputStream). Я также не могу сделать это с com.sun.image.codec.jpeg.JPEGImageEncoder, потому что я должен использовать OpenJDK.

Любые идеи, как я могу добиться правильного поведения для записи изображения CMYK в PDF с помощью iText?


person AvrDragon    schedule 11.06.2012    source источник


Ответы (1)


Итак, в основном вы спрашиваете, как преобразовать BufferedImage в byte[] для печати в PDF?

BufferedImage img; // your image to be printed
String formatName; // name of the image format (see ImageIO docs)
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write( img, formatName, baos);
byte[] rawData = baos.toByteArray();

Вы должны иметь возможность использовать это для изображения CMYK, как в исходном сообщении:

com.lowagie.text.Image img = Image.getInstance(byte[] rawData);
person Roddy of the Frozen Peas    schedule 11.06.2012
comment
Как я уже писал, я должен использовать OpenJDK, а не Sun JVM. И в OpenJDK нет кодека JPEG. Но это решение работает с TIFF, меня это устраивает. - person AvrDragon; 12.06.2012