以PDF格式写入CMYK图像

时间:2012-06-11 17:32:04

标签: java pdf itext cmyk

我需要将CMYK图像(java.awt.BufferedImage)添加到带有iText的Pdf文档中。

我正试着这样做:

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

这会在生成的PDF中生成RGB图像。 (我想这是一个错误,因为它只是忽略了ColorModel)。但是我可以使用:

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

它以PDF格式生成正确的CMYK-Image。但对于第二种情况,我需要转换java.awt.BufferedImage中的ByteArray。我不能用ImageIO.write(ByteArrayOutputStream)来做。我也无法使用com.sun.image.codec.jpeg.JPEGImageEncoder,因为我必须使用OpenJDK

任何想法如何使用iText以PDF格式编写CMYK图像的正确行为?

1 个答案:

答案 0 :(得分:2)

基本上你要问的是如何将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);