Написать изображение 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?

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);
Другие вопросы по тегам